Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: VB: Matopeli -ongelma

TsaTsaTsaa [23.11.2006 20:48:29]

#

Moro.

Matopeliä rupesin väsäilemään ja tuli vastaan semmoinen ongelma, että ohjelma lakkaa luomasta uusia "ruokapalloja" kun on vasta kaksi kerännyt. Ja niistäkään ei jälkimmäisestä saa pisteitä. En ymmärrä missä on vika.

Sitten vähän koodia:

Nämä ovat formissa:

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    If Kaynnissa Then
        Select Case KeyCode
            Case vbKeyLeft
                Suunta = 2
            Case vbKeyRight
                Suunta = 0
            Case vbKeyUp
                Suunta = 1
            Case vbKeyDown
                Suunta = 3
        End Select
    End If
End Sub


Private Sub Timer1_Timer()
    Select Case Suunta
        Case 0
            liikuta MatoX + 1, MatoY
        Case 1
            liikuta MatoX, MatoY - 1
        Case 2
            liikuta MatoX - 1, MatoY
        Case 3
            liikuta MatoX, MatoY + 1
        End Select
End Sub

Nämä taas moduulissa:

'Satunnaislukufunktio (randomize on sub mainissa)
Public Function Rand(ByVal Low As Long, _
                     ByVal High As Long) As Long
  Rand = Int((High - Low + 1) * Rnd) + Low
End Function


Sub liikuta(X As Integer, Y As Integer)
    Dim RuokaX As Integer, RuokaY As Integer
        If (Taso(X, Y) = MATO Or _
        Taso(X, Y) = SEINA) Then
            GameOver
            Exit Sub
        Else
            If Taso(X, Y) = RUOKA Then
                Score = Score + 9
                matopeli.lblscore = Str(Score)
                'Arvotaan uusi sijainti RUOKALLE
                Do
                RuokaX = Rand(0, 31)
                RuokaY = Rand(0, 23)
                Loop Until (Taso(RuokaX, RuokaY) = MUSTA)
                PiirraKuva RUOKA, RuokaX, RuokaY
            End If
        Taso(X, Y) = MATO
        '...ja vanhan paikka muuttuu mustaksi
        Taso(MatoX, MatoY) = MUSTA
        'vastaavasti piirretään mato uuteen paikkaan...
        PiirraKuva MATO, X, Y
        '...ja vanhaan paikkaan mustaa
        PiirraKuva MUSTA, MatoX, MatoY
        'laitetaan madon uudet koordinaatit talteen
        MatoX = X
        MatoY = Y
        End If
End Sub

Pöytälamppu [23.11.2006 21:15:04]

#

Ongelma saattaa olla siinä, ettet varastoi uuden ruoan sijaintia taso-taulukkoon, vaan ainoastaan piirrät sen kohdassa:

'Arvotaan uusi sijainti RUOKALLE
Do
   RuokaX = Rand(0, 31)
   RuokaY = Rand(0, 23)
Loop Until (Taso(RuokaX, RuokaY) = MUSTA)
PiirraKuva RUOKA, RuokaX, RuokaY

TsaTsaTsaa [24.11.2006 10:20:26]

#

Pöytälamppu kirjoitti:

Ongelma saattaa olla siinä, ettet varastoi uuden ruoan sijaintia taso-taulukkoon, vaan ainoastaan piirrät sen kohdassa:

No katos perkele, olenpa tyhmä. Kiitos.

Vastaus

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

Tietoa sivustosta