|
You last visited: Today at 01:20
Advertisement
Snake in VB.. brauche dringend hilfe!
Discussion on Snake in VB.. brauche dringend hilfe! within the .NET Languages forum part of the Coders Den category.
12/14/2011, 17:38
|
#1
|
elite*gold: 0
Join Date: Oct 2011
Posts: 33
Received Thanks: 3
|
[VB]Brauche Hilfe
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
|
|
|
12/14/2011, 20:55
|
#2
|
elite*gold: 42
Join Date: Jun 2008
Posts: 5,426
Received Thanks: 1,888
|
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.
|
|
|
12/14/2011, 22:26
|
#3
|
elite*gold: 14
Join Date: May 2011
Posts: 2,671
Received Thanks: 818
|
Deklarier m mal als Public.
|
|
|
12/14/2011, 22:32
|
#4
|
elite*gold: 42
Join Date: Jun 2008
Posts: 5,426
Received Thanks: 1,888
|
Quote:
Originally Posted by Headpuster
Deklarier m mal als Public.
|
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.
|
|
|
12/14/2011, 22:34
|
#5
|
elite*gold: 14
Join Date: May 2011
Posts: 2,671
Received Thanks: 818
|
Wirklich?
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?
|
|
|
12/14/2011, 22:42
|
#6
|
elite*gold: 42
Join Date: Jun 2008
Posts: 5,426
Received Thanks: 1,888
|
Quote:
Originally Posted by Headpuster
Wirklich?
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.
|
|
|
12/14/2011, 22:53
|
#7
|
elite*gold: 14
Join Date: May 2011
Posts: 2,671
Received Thanks: 818
|
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.
|
|
|
12/14/2011, 23:08
|
#8
|
elite*gold: 42
Join Date: Jun 2008
Posts: 5,426
Received Thanks: 1,888
|
Zugriffsmodifizierer*
Und public macht immernoch keinen sinn, das ding gehört auf private.
|
|
|
12/14/2011, 23:30
|
#9
|
elite*gold: 14
Join Date: May 2011
Posts: 2,671
Received Thanks: 818
|
Kommt drauf an, ob die Klasse auch noch außerhalb genutzt wird
Außer natürlich, er möchte nur die erhöhem() Sub verwenden.
|
|
|
12/15/2011, 12:56
|
#10
|
elite*gold: 5
Join Date: Mar 2008
Posts: 460
Received Thanks: 436
|
Quote:
Originally Posted by Headpuster
Kommt drauf an, ob die Klasse auch noch außerhalb genutzt wird
|
Dafür gibt es Get/Set und ich stimme MoepMoep zu die gehört sich auf privat!
|
|
|
12/15/2011, 14:01
|
#11
|
elite*gold: 1250
Join Date: Nov 2011
Posts: 1,510
Received Thanks: 238
|
Quote:
Originally Posted by SwarN
Dafür gibt es Get/Set und ich stimme MoepMoep zu die gehört sich auf privat!
|
Nein, soweit ich weiß, ist das volkommen egal.
|
|
|
12/15/2011, 14:26
|
#12
|
elite*gold: 42
Join Date: Jun 2008
Posts: 5,426
Received Thanks: 1,888
|
Quote:
Originally Posted by iRofl
Nein, soweit ich weiß, ist das volkommen egal.
|
Bei schlechtem stil schon, jo ;o
|
|
|
12/15/2011, 14:30
|
#13
|
elite*gold: 1250
Join Date: Nov 2011
Posts: 1,510
Received Thanks: 238
|
Quote:
Originally Posted by MoepMeep
Bei schlechtem stil schon, jo ;o
|
Wieso? Ich finde das Praktisch ;D
|
|
|
12/15/2011, 14:48
|
#14
|
elite*gold: 42
Join Date: Jun 2008
Posts: 5,426
Received Thanks: 1,888
|
Quote:
Originally Posted by iRofl
Wieso? Ich finde das Praktisch ;D
|
Jo, weil du keine Ahnung hast was du da eigentlich machst.
|
|
|
12/15/2011, 15:07
|
#15
|
elite*gold: 14
Join Date: May 2011
Posts: 2,671
Received Thanks: 818
|
Quote:
Originally Posted by iRofl
Wieso? Ich finde das Praktisch ;D
|
Inwiefern ist das zuteilen falscher Zugriffsoperatoren praktisch?
|
|
|
|
Similar Threads
|
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.
|
All times are GMT +2. The time now is 01:20.
|
|