|
You last visited: Today at 07:09
Advertisement
Snake problem
Discussion on Snake problem within the General Coding forum part of the Coders Den category.
08/27/2011, 21:08
|
#1
|
elite*gold: 0
Join Date: Apr 2011
Posts: 11,115
Received Thanks: 2,436
|
Snake problem
hey habe vesucht ein snake game zu machen nur dieser fehler kommt immer:
Quote:
|
Der Index war außerhalb des Arraybereichs.
|
Der kommt immer wenn ich versuch was zu essen(was man halt in snake machen muss :P)
source:
Code:
Public Class Form1
Dim m As Integer = 10
Dim p(m) As Point
Dim k As Keys
Private Sub steuerung()
If k = Keys.Left Then
p(m).X -= 16
End If
If k = Keys.Right Then
p(m).X += 16
End If
If k = Keys.Up Then
p(m).Y -= 16
End If
If k = Keys.Down Then
p(m).Y += 16
End If
Panel2.Location = New Point(p(m).X, p(m).Y)
End Sub
Private Sub rand()
If p(m).X > 830 Then
p(m).X = 0
End If
If p(m).Y > 530 Then
p(m).Y = 0
End If
If p(m).X < 0 Then '
p(m).X = 830
End If
If p(m).Y < 0 Then
p(m).Y = 530
End If
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Dim b As New Bitmap(830, 530)
Dim g As Graphics = Graphics.FromImage(b)
steuerung()
rand()
For i As Integer = 0 To m - 1
p(i) = p(i + 1)
g.FillRectangle(Brushes.Black, New Rectangle(p(i), New Size(16, 16)))
Next
g.FillRectangle(Brushes.Black, New Rectangle(p(m), New Size(16, 16)))
g.Dispose()
Me.BackgroundImage = b
Me.ClientSize = b.Size
If Panel2.Bounds.IntersectsWith(Panel1.Bounds) Then
m = m + 1
End If
End Sub
Private Sub Form1_KeyDown(ByVal sender As System.Object, ByVal 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
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
End Class
hoffe ihr könnt mir helfen.
|
|
|
08/28/2011, 22:09
|
#2
|
elite*gold: 9
Join Date: Dec 2009
Posts: 1,071
Received Thanks: 819
|
du versuchst halt - wie du in der Fehlerbeschreibung sehen kannst auf einen Teil des Arrays zuzugreifen, der nicht existiert...
Wenn dein Array beispielsweise als 'Spielfeld[10]' deklariert wurde, kannst du nicht auf 'Spielfeld[11]' zugreifen. Das gleiche gilt auch für mehrdimensionale arrays.
Du musst also versuchen diesen Fehler irgendwie abzufangen. Ich hab zwar keine Ahnung von vb, aber ich würde es so in der art machen...
PHP Code:
int Spielfeld[10];
.....
if (x >=0 && x <= sizeof(Spielfeld[10])/sizeof(int))
{
.........
}
|
|
|
08/28/2011, 22:47
|
#3
|
elite*gold: 0
Join Date: Apr 2011
Posts: 11,115
Received Thanks: 2,436
|
Quote:
Originally Posted by .Infinite
du versuchst halt - wie du in der Fehlerbeschreibung sehen kannst auf einen Teil des Arrays zuzugreifen, der nicht existiert...
Wenn dein Array beispielsweise als 'Spielfeld[10]' deklariert wurde, kannst du nicht auf 'Spielfeld[11]' zugreifen. Das gleiche gilt auch für mehrdimensionale arrays.
Du musst also versuchen diesen Fehler irgendwie abzufangen. Ich hab zwar keine Ahnung von vb, aber ich würde es so in der art machen...
PHP Code:
int Spielfeld[10];
.....
if (x >=0 && x <= sizeof(Spielfeld[10])/sizeof(int))
{
.........
}
|
aber der bereich muss ja eigentlich da sein da i = m - 1 ist und m ist 10(anfangswert) nur wenn er was ißt ist m += 1 das heißt i = 11 nur dann kommt ja ein error :/
|
|
|
08/28/2011, 22:49
|
#4
|
elite*gold: 0
Join Date: Jan 2009
Posts: 355
Received Thanks: 106
|
Quote:
Originally Posted by .Infinite
du versuchst halt - wie du in der Fehlerbeschreibung sehen kannst auf einen Teil des Arrays zuzugreifen, der nicht existiert...
Wenn dein Array beispielsweise als 'Spielfeld[10]' deklariert wurde, kannst du nicht auf 'Spielfeld[11]' zugreifen. Das gleiche gilt auch für mehrdimensionale arrays.
Du musst also versuchen diesen Fehler irgendwie abzufangen. Ich hab zwar keine Ahnung von vb, aber ich würde es so in der art machen...
PHP Code:
int Spielfeld[10];
.....
if (x >=0 && x <= sizeof(Spielfeld[10])/sizeof(int))
{
.........
}
|
Ergänzend dazu noch: Arrays in .NET haben eine schöne Eigenschaft namens "Length".
|
|
|
08/28/2011, 23:00
|
#5
|
elite*gold: 0
Join Date: Apr 2011
Posts: 11,115
Received Thanks: 2,436
|
Quote:
Originally Posted by Secredo
Ergänzend dazu noch: Arrays in .NET haben eine schöne Eigenschaft namens "Length". 
|
erneut getestet natürlich wird es weiter aufgeführt da m ja immer nach dem essen +1 gesetzt wird aber trotzdem kommt der fehler...
|
|
|
08/28/2011, 23:32
|
#6
|
elite*gold: 9
Join Date: Dec 2009
Posts: 1,071
Received Thanks: 819
|
Ich denke den Fehler wirst du jetzt selbst finden müssen. Dein Code sieht leider etwas unstrukturiert aus... Dieses ganzen Objekte "Panel2", "Timer1", "Form1" und diese Variablennamen "m" und "k"... wie soll man da den Überblick behalten? Ich krieg da jedenfalls die Krise.
Und noch was: Ich weiß nicht wie das in VB ist, aber muss man Speicher den man mit "new" reserviert nicht auch hinterher wieder freigeben?
|
|
|
08/28/2011, 23:52
|
#7
|
elite*gold: 0
Join Date: Apr 2011
Posts: 11,115
Received Thanks: 2,436
|
Quote:
Originally Posted by .Infinite
Ich denke den Fehler wirst du jetzt selbst finden müssen. Dein Code sieht leider etwas unstrukturiert aus... Dieses ganzen Objekte "Panel2", "Timer1", "Form1" und diese Variablennamen "m" und "k"... wie soll man da den Überblick behalten? Ich krieg da jedenfalls die Krise.
Und noch was: Ich weiß nicht wie das in VB ist, aber muss man Speicher den man mit "new" reserviert nicht auch hinterher wieder freigeben?
|
naja so verwirrend kann es nicht sein
panel1 = kopf wegen der kollision
panel2 = das essen
m = länge der schlange
k ist nur wegen der steuerung
das mit new geht nicht.
P.s jeder hat seine eigene ordnung
|
|
|
08/28/2011, 23:52
|
#8
|
elite*gold: 0
Join Date: Jan 2009
Posts: 355
Received Thanks: 106
|
Quote:
Originally Posted by .Infinite
Und noch was: Ich weiß nicht wie das in VB ist, aber muss man Speicher den man mit "new" reserviert nicht auch hinterher wieder freigeben?
|
Nope, GarbageCollecor ftw! ^-^
|
|
|
08/29/2011, 03:01
|
#9
|
elite*gold: 1
Join Date: Jul 2005
Posts: 553
Received Thanks: 454
|
Dim m As Integer = 10
Dim p(m) As Point
"wenn er was ißt ist m += 1"
Code:
Private Sub steuerung()
If k = Keys.Left Then
p(m).X -= 16
End If
'[...]
?
|
|
|
08/29/2011, 09:09
|
#10
|
elite*gold: 0
Join Date: Apr 2011
Posts: 11,115
Received Thanks: 2,436
|
Quote:
Originally Posted by link
Dim m As Integer = 10
Dim p(m) As Point
"wenn er was ißt ist m += 1"
Code:
Private Sub steuerung()
If k = Keys.Left Then
p(m).X -= 16
End If
'[...]
?
|
Hmm mit dem eigenen Code kann schlecht der Fehler weg sein...
|
|
|
08/29/2011, 09:32
|
#11
|
elite*gold: 1
Join Date: Jul 2005
Posts: 553
Received Thanks: 454
|
Sollte bedeuten: wenn p m groß ist und m mit 10 definiert und danach inkrementiert und dann als Index für p verwendet wird, müsste doch p(11) herauskommen, obwohl p nur 10 groß ist
|
|
|
08/29/2011, 10:13
|
#12
|
elite*gold: 0
Join Date: Apr 2011
Posts: 11,115
Received Thanks: 2,436
|
Quote:
Originally Posted by link
Sollte bedeuten: wenn p m groß ist und m mit 10 definiert und danach inkrementiert und dann als Index für p verwendet wird, müsste doch p(11) herauskommen, obwohl p nur 10 groß ist
|
aber m wird doch nach dem essen +1 gesetzt o.O
|
|
|
08/29/2011, 10:37
|
#13
|
elite*gold: 1
Join Date: Jul 2005
Posts: 553
Received Thanks: 454
|
Quote:
|
Originally Posted by .ƒaℓsє.
aber m wird doch nach dem essen +1 gesetzt o.O
|
Quote:
|
Originally Posted by link
Sollte bedeuten: wenn p m groß ist und m mit 10 definiert und danach inkrementiert und dann als Index für p verwendet wird, müsste doch p(11) herauskommen, obwohl p nur 10 groß ist
|
Sagte ich doch und genau da liegt ja auch das Problem.
Schreib halt einfach mal Dim p(m*2) As Point
|
|
|
08/29/2011, 12:49
|
#14
|
elite*gold: 0
Join Date: Apr 2011
Posts: 11,115
Received Thanks: 2,436
|
Quote:
Originally Posted by link
Sagte ich doch und genau da liegt ja auch das Problem.
Schreib halt einfach mal Dim p(m*2) As Point
|
ahh,okay danke nun geht es 
hat jemand eine Idee wie ich das panel per random setzen kann aber so das sie immer 16 ist also das die immer so z.b ist :
0,0
0,16
16,16
64,16
128,0
halt das die location immer so ist.
(ich weiß ich kann doof erklären^^)
|
|
|
08/29/2011, 17:18
|
#15
|
elite*gold: 0
Join Date: Jan 2010
Posts: 250
Received Thanks: 21
|
zum anfang soviel ich weis kann man den arraybereich auch erweitern mit redim preserve array(neuerindex)
|
|
|
 |
Similar Threads
|
120 Snake Blade O.o
10/31/2010 - CO2 Weapon, Armor, Effects & Interface edits - 6 Replies
My first blade is here...I call it the Snake Blade
Tell me if you like it. Its my first one with a glow
http://oi52.tinypic.com/2rm9una.jpg
Without Glow
http://oi51.tinypic.com/e8rfd5.jpg
I will be releasing pictures of my future edits as I did this one. To get them you must play the two private servers i am currently working on.
HellMouthCo and MayaCo
HellMouth is open to the public on New Years. No clue when Maya will be ready :D
|
Selling A20 Snake
08/24/2009 - Trading - 3 Replies
Selling A20 Snake with awsome gear and much stuff and Items in Voult and bank
JUst send me your IGN and i PM you
My Account have in Silver like 4 Bil
So offerif you want
|
Twelve Sky 2 112 Snake
06/01/2009 - Trading - 5 Replies
Trading for high lv Archlord account or offer. Has all 112 Luck gear and Rare 105 Db and Sabre 40+ Percent Sabre is Cs3, 105 cape 43%. Has Adept 5 chi and skill cape, lute, and ring. Knows all lv 30 multi-hit skills, general skills, and sabre single hit. Pm with offers.
|
Met-snake
05/17/2008 - CO2 Guides & Templates - 5 Replies
I didnt see any post like this, so i share my xp: there is a snake in the canyon, who drops a met, and has more HP and defense than others, but has the same name (like metdoves)
I dont know the exact spawn point, but its NW a bit from Titan spawn (389,586)
Hope it's useful for fellow players, who're hunting for Titan and want a bonus met XD :D
|
Snake King pt.2
09/07/2007 - Conquer Online 2 - 3 Replies
This is together with this post: http://www.elitepvpers.com/forum/co2-main-discussio ns-questions/92126-snake-king.html which I was originally just going to add on to but in doing another camping day at SK something really strange happened and I wanna know how it was done.
Alright I arrived at SK 01:11 (this is the time at the top of the game) and there was no SK, whelp great time to sit and wait. Then all of a sudden a Tro appeared on the top right part of the island.
I thought he just...
|
All times are GMT +1. The time now is 07:09.
|
|