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...
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
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...
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
Wenn du Hilfe zu Quellcode willst, dann gewöhn dir an Variablen gescheit zu benennen, das gleiche gilt für Funktionen. Die Richtlinien gibt es nicht grundlos.
Du rufst die Funktion merweitern nie auf, wie soll es dann dort crashen? Visual Studio hat einen debugger, benutz ihn.
Schau dir mal bitte den Unterschied zwischen public,private und protected an. Übrigens ist das ganze eine IndexOutOfRangeException und hat nichts mit den Zugriffsrechten zu tun.
Wenn er schon OOP programmiert, kann er doch wenigstens die Variablen dementsprechend deklarieren.
Warum sollte ich mir den mir bereits bekannte Unterschied zwischen Public, Private, Protocted, Shadowed und Shared nochmal ansehen?
Wenn er schon OOP programmiert, kann er doch wenigstens die Variablen dementsprechend deklarieren.
Warum sollte ich mir den mir bereits bekannte Unterschied zwischen Public, Private, Protocted, Shadowed und Shared nochmal ansehen?
Weil es absolut keinen Sinn macht, m auf public zu setzen.
Dim stammt von VB 6 und somit veraltet, die Variablentypen wie Public, Private etc. wurden in .Net eingeführt und stehen für objektorientierte Programmierung.
Somit macht es durchaus Sinn, aktuellen Code, und keinen aus 1996 zu verwenden.
Brauche dringend und zwar wirklich dringend eure Hilfe 09/18/2011 - Metin2 Private Server - 0 Replies Bei mir auf dem Rootserver verlieren alle Teamler nach
wenigen Minuten die GM Rechte, das war gestern noch
nicht so...
Woran könnte das liegen und wie beheben?
Hoffe auf schnelle antwort
Wäre mir sogar 10 e*Gold wert für eine Hilfestellung die
funktioniert.
Brauche dringend hilfe!!! 07/22/2010 - WoW Private Server - 2 Replies hallo leute!!!
ich suche unbedingt einen mob, der nicht angreift, wenn man auf ihn einkloppt.
sobald man einen mob angreift un weg geht, verfolgt er einen. und ich suche einen der genau das nicht tut, also das er einfach auf der stelle stehen bleibt.
suche die ID für ArcEmu!!!
falls ihr so einen mob und die id kennt, dann nur her damit ;)
MfG gogga
edit:
er soll so änlich wie ein Heroic trainings dummy sein, bloß das er einen nicht verfolgt, sondern an einer stelle bleibt
Brauche Dringend Hilfe! Bin Metin spieler aber Brauche Hilfe 12/30/2009 - Metin2 Private Server - 0 Replies Es gehört hier zwar nicht rein , aber ich weiß keine andere Lösung
Ich habe seit einigen Tagen ein Problem...
Microsoft Windows Search Protocol Host funktioniert nicht mehr
Die Anwendung wird Aufgrund eines Problems nicht mehr richtig Ausgeführt.
Ich weiß nicht was das ist und wie ich es loswerde.