Olen tässä pari päivää näpertänyt pientä matopeliä, mutta olen törmännyt uuteen ongelmaan. Kun mato on ruuan päällä se arpoo ruualle uuden paikan ja jos ruuan paikka on kielletyllä(kuva formin ulkopuollel tai lähellä sitä) alueella, ohjelman PITÄISI arpoa uuden paikan ruualle, mutta sitä se ei tee. Missä mättää? Tässä on ohjelmasta koodin pätkä:
If PictureBox1.Top = PictureBox2.Top And PictureBox1.Left = PictureBox2.Left Then PictureBox2.Location = New Point(PictureBox2.Location.X = CStr(Int(Rnd() * 300)), PictureBox2.Location.Y = CStr(Int(Rnd() * 300))) laskin = laskin + 1 Me.Text = "pisteet: " & laskin If PictureBox2.Left <= 80 And PictureBox2.Top <= 280 Then PictureBox2.Location = New Point(CStr(Int(Rnd() * 300))) 'arpoo ruualle uuden paikan End If If PictureBox2.Top <= 5 And PictureBox2.Left <= 300 Then PictureBox2.Location = New Point(CStr(Int(Rnd() * 300))) End If If PictureBox2.Top <= 5 Or PictureBox2.Top >= 280 Then PictureBox2.Location = New Point(CStr(Int(Rnd() * 300))) End If End If
Tuota köh köh.
Miksi käytät location arvoa?
Ja tuossa koodissa on senverran virheitä että kokeileppa kirjottaa ihan kokonaan uusiksi. Tuossa alhaallakin käytät point komentoa vain yhdellä parametrilla. (pitää olla x,y) Ja toiseksikin noissa alemissa IF lauseissa pitäisi olla varmaan OR kaikissa.
Ja parempi varmaan arpoa se ruoka suoraan sopivaan kohtaan ettei tarvitse tarkistaa onko se liian reunassa.
Miten olisi vaikka:
'Helpistä CInt(Int((upperbound - lowerbound + 1) * Rnd() + lowerbound)) PictureBox1.Left = CInt(Int((280 - 80 + 1) * Rnd() + 80)) PictureBox1.Top = CInt(Int((300 - 5 + 1) * Rnd() + 5))
Kiitti! Oon vähän noob näissä randomize jutuissa ja kaikkessa muussa.
Aihe on jo aika vanha, joten et voi enää vastata siihen.