Hallo erstmal ... :)
also ich hab in VB ein Snake Spiel programmiert.
Diese Fehlermeldung kommt wenn ich m aufaddieren möchte wenn man ein rotes kästchen gegessen hat... wenn ich allerding unter Class Dim m as Integer = 10 setze dann laufn mir direkt 10 felder hinterher...
also ich hab in VB ein Snake Spiel programmiert.
Diese Fehlermeldung kommt wenn ich m aufaddieren möchte wenn man ein rotes kästchen gegessen hat... wenn ich allerding unter Class Dim m as Integer = 10 setze dann laufn mir direkt 10 felder hinterher...
Ausserdem brauche ich Hilfe bei einem CollisionsCode (mit der Schlange selbst). Wer mir helfen will und das testen möchte bitte dran denken bei Spiel.vb die DoubleBufferd Eigenschaft auf True setzen sonst funkts nicht...Quote:
FEHLER:
Eine nicht behandelte Ausnahme des Typs "System.IndexOutOfRangeException" ist in Snake.exe aufgetreten.
Zusätzliche Infos: der Index war ausßerhalb des Arraybereichs
Code:
Public Class Spiel
Dim r As New System.Random
Dim m As Integer = 1
Dim p(m) As Point
Dim eat As Integer = 1
Dim punkt(eat) As Point
Dim k As Keys
Dim pause As Boolean = False
Dim xachse As Integer
Dim yachse As Integer
Dim xa As Integer
Dim ya As Integer
Dim Punkte As Integer
Dim musikan As Boolean = False
Public Sub merweitern()
m = m + 1
Me.Refresh()
End Sub
Public Sub Randoumfunktion()
xachse = r.Next(0, 255)
yachse = r.Next(0, 255)
If xachse Mod 15 = 1 And yachse Mod 15 = 1 Then
xa = xachse - 1
ya = yachse - 1
punkt(eat).X = xa
punkt(eat).Y = ya
Else
Randoumfunktion()
End If
End Sub
Public Sub wandcheck()
If p(m).X >= 256 Then
p(m).X = 0
ElseIf p(m).X <= -1 Then
p(m).X = 255
End If
If p(m).Y >= 256 Then
p(m).Y = 0
ElseIf p(m).Y < -1 Then
p(m).Y = 255
End If
End Sub
Public Sub keycheck()
If k = Keys.Left Then
p(m).X -= 15
End If
If k = Keys.Right Then
p(m).X += 15
End If
If k = Keys.Up Then
p(m).Y -= 15
End If
If k = Keys.Down Then
p(m).Y += 15
End If
If k = Keys.Escape Then
Startscreen.Show()
Me.Close()
End If
If k = Keys.P Then
GameOver.Show()
Me.Close()
End If
End Sub
Public Sub fressencheck()
If p(m).X & p(m).Y = punkt(eat).X & punkt(eat).Y Then
Randoumfunktion()
Punkte = Punkte + 5
Me.Text = "Punkte: " & Punkte
End If
End Sub
Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick
Dim b As New Bitmap(270, 270)
Dim g As Graphics = Graphics.FromImage(b)
fressencheck()
keycheck()
wandcheck()
For i As Integer = 0 To m - 1
p(i) = p(i + 1)
g.FillRectangle(Brushes.Green, New Rectangle(p(i), New Size(15, 15)))
Next
g.FillRectangle(Brushes.Red, New Rectangle(punkt(eat), New Size(15, 15)))
g.FillRectangle(Brushes.Green, New Rectangle(p(m), New Size(15, 15)))
g.Dispose()
Me.FormBorderStyle = Windows.Forms.FormBorderStyle.FixedSingle
Me.BackgroundImage = b
Me.ClientSize = b.Size
Me.Refresh()
End Sub
Private Sub Spiel_KeyDown(sender As System.Object, e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
If e.KeyCode = Keys.Left Then
k = Keys.Left
End If
If e.KeyCode = Keys.Right Then
k = Keys.Right
End If
If e.KeyCode = Keys.Up Then
k = Keys.Up
End If
If e.KeyCode = Keys.Down Then
k = Keys.Down
End If
If e.KeyCode = Keys.Escape Then
k = Keys.Escape
End If
If e.KeyCode = Keys.P Then
k = Keys.P
End If
End Sub
Private Sub Spiel_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
p(m).X = 0
p(m).Y = 0
Randoumfunktion()
End Sub
End Class