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 SubNä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 SubOngelma 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.