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
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
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.
Aihe on jo aika vanha, joten et voi enää vastata siihen.