Minulla on pelissä nappula, joka avaa frmTaistelu formin, jossa käyttäjä voi taistella vastustajan kanssa ja tämä vastustaja on tietokoneen randomilla antama vastusta (tai ei nyt ihan randomilla).
Käytän siinä tälläistä koodia:
Select Case Label16.Caption Case Is = 1 MsgBox "Et voi enää taistella tällä vuorolla!" Case Else Label16.Caption = 1 Label17.Caption = Label15.Caption Label15.Caption = Int(Rnd * 10) + 1 If Label15.Caption = Label17.Caption Then Label15.Caption = Int(Rnd * 10) + 1 End If frmTaistelu.Label5.Caption = Label15.Caption frmTaistelu.Show End Select
Eli tarkoitus olisi, että peli ei koskaan antaisi samaa vastustajaa kuin viimeksi oli. Minun koodini ei kuitenkaan toimi vaan se antaa joka kerta tismalleen saman vastustajan.
Miten minä saisin sen toimimaan?
Lisää rivi
Randomize
vaikka ton frmTaistelun alkuun.
minulla on tuolla command-nappulassa randomize timer, jossa se randomisoi jonkun luvun 1-10 label15 tekstiksi.
Randomizea ei yleensä kannata kutsua ohjelman aikana kuin kertaalleen.
Anna nyt hyvä mies noille labeleille paremmat nimet.
Ei kannata. Kyllähän sää vielä ne löydät helposti jos tulee vaikka kahden vuoden jälkeen katottua koodia uudelleen. Eikä sekään haittaa vaikka niitä olis paljon, kyllähän se oikea aina löytyy ekalla vilkaisulla. Ei auta edes virheiden etsimessessä yhtään. Eikä etenkään jos annat vielä koodin jollekkin muulle. Sanon että täysin turhan vaivan näet jos nimeät ne kunnolla etkä huonosti ;) Ite oon aikoinaan saman virheen tehny eikä niitä muista että mikä on mikäkin parin vuoden jälkeen. Eikä myöskään kannaata mitään tietoa noissa säilittää vaan omissa muuttujissa joista tarpeen vaatin laitat niitä muualle.
Kuinka niitä muuttujien sisältäviä tietoja saa sitten formista toiseen? Minä en ole niitä saanut oikein toimimaan...
juhaz kirjoitti:
Kuinka niitä muuttujien sisältäviä tietoja saa sitten formista toiseen? Minä en ole niitä saanut oikein toimimaan...
Muuta Dim -> Public/Global -muotoon
Dim muuttuja as string -> Public muuttuja as string
Pelkkä Public ei tee autuaaksi, kun formin muuttujia kutsutaan toisesta formista. Muuttujiin pitää viitata formin kautta, minkä alle ne on luotu. Eli...
'Form1:ssä esitellään muuttuja Public Test As String 'Asetetaan muuttujaan arvo esim. Form_Load():ssa Test = "Testing" 'Form2:ssa esitetään muuttujan arvo messageboxissa MsgBox Form1.Test
Noille voi tehdä vaikka oman moduulin jolloin kaikki on aina samassa paikassa riippumatta siitä missä käytetään
Moduulin nimi tiedot niin
Tiedot.VoikoTasitella jne.
Aihe on jo aika vanha, joten et voi enää vastata siihen.