Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB.NET: Paha onkelma(vb.net)

TuGi [06.03.2004 16:57:35]

#

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

Meitzi [06.03.2004 19:07:57]

#

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))

TuGi [06.03.2004 19:57:07]

#

Kiitti! Oon vähän noob näissä randomize jutuissa ja kaikkessa muussa.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta