Snake - Projekt.. Sich Selber Fressen

Balkan_Devil

Mitglied
Hallo Forum !!

Bin mit meinem Snake sozusagen fast ganz fertig...

Was nocht fehlt ist das "Selber Fressen"..

Ich hätts mal so probiert.

if shp_snake(0).left = shp_snake(i).left and shp_snake(0).top = shp_snake(i).top then
 
Hab das alte projekt mal unter de lupe genommen...

Als erstes muss man bedenken das wenn Snake nach links fährt sie nicht zurück nach rechts mehr kann.
Hier die änderung die das macht
Visual Basic:
Private Sub Form_KeyPress(KeyAscii As Integer)
    Dim tmpRichtung As Long
    '### Old ####
'    If KeyAscii = CRSR_Rechts Then Richtung = 0
'    If KeyAscii = CRSR_Links Then Richtung = 1
'    If KeyAscii = CRSR_Auf Then Richtung = 2
'    If KeyAscii = CRSR_Ab Then Richtung = 3
    '### End Old ###
    'Neue Richtung in Temponärer Variable ablegen
    If KeyAscii = CRSR_Rechts Then tmpRichtung = 0
    If KeyAscii = CRSR_Links Then tmpRichtung = 1
    If KeyAscii = CRSR_Auf Then tmpRichtung = 2
    If KeyAscii = CRSR_Ab Then tmpRichtung = 3
    'Wenn Snake nach links geht kann mann nicht rechts drücken usw...
    If Richtung = 0 And tmpRichtung <> 1 Then
        Richtung = tmpRichtung
    ElseIf Richtung = 1 And tmpRichtung <> 0 Then
        Richtung = tmpRichtung
    ElseIf Richtung = 2 And tmpRichtung <> 3 Then
        Richtung = tmpRichtung
    ElseIf Richtung = 3 And tmpRichtung <> 2 Then
        Richtung = tmpRichtung
    End If
End Sub

Zweitens musst du folgenden Code im Teil des Projekts unterbringen wo du auf die Kollision mit Rand oder Fresschen abprüfst.
Am besten nach der Rand- und vor der Fresschen-Prüfung.
Visual Basic:
    For i = 1 To Snakelaenge - 1
        If shp_snake(0).Left = shp_snake(i).Left And _
            shp_snake(0).Top = shp_snake(i).Top Then
            Timer1.Enabled = False
            MsgBox ("Game Over")
            cmd_start_Click
            Exit Sub
        End If
    Next i

So das wars...
Gutes gelingen...

lg Tody
 
Vielen dank...

Mein fehler war, dass ich den TImer nicht auf false gestellt habe...

Eine Frage noch..

Warum mach ich das mit den temporären variablen
Wie funktioniert das genau

lg
 
Hi...

Vorher was es so, wenn du eine Richtung gedrückt hast ist Snake in diese gefahren.

Warum mit temporärer Variable?
Wenn du mit Snake nach links fährst und du dann rechts drückst würde Snake über sich selbst fahren...
Da du jetzt prüfst ob Snake an sich selbst anstößt wäre das Spiel somit vorbei.
Somit muss eine Routine her die zwischen Taste-Drücken und Richtung wechseln prüft ob die Richtung möglich ist.
Darum Richtungswechsel in einer Variable zwischenspeichern und auswerten ob die neue Richtung möglich ist.
Visual Basic:
If Richtung = 0 And tmpRichtung <> 1 Then 'Ist Richtung "Rechts" und neue richtung nicht "Links" dann...
    Richtung = tmpRichtung '...Richtung wechseln
ElseIf Richtung = 1 And tmpRichtung <> 0 Then 'Oder ist Richtung "Links" und neue richtung nicht "Rechts" dann...
    Richtung = tmpRichtung '...Richtung wechseln
ElseIf Richtung = 2 And tmpRichtung <> 3 Then 'Oder ist Richtung "Auf" und neue richtung nicht "Ab" dann...
    Richtung = tmpRichtung '...Richtung wechseln
ElseIf Richtung = 3 And tmpRichtung <> 2 Then 'Oder ist Richtung "Ab" und neue richtung nicht "Auf" dann...
    Richtung = tmpRichtung '...Richtung wechseln
End If

Ich hoffe, das ich es verdeutlichen konnte...
lg Tody
 

Neue Beiträge

Zurück