Problem bei Zufallseditor
Übersicht

LarsBetreff: Problem bei Zufallseditor |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hey Allerseits!
Ich programmiere gerade ein zufallseditor für ein jump and run spiel. allerdings habe ich ein problem bei diesem Codeausschnitt. Code: [AUSKLAPPEN] Dim wx(6)
Dim mapx%(2,220) SeedRnd MilliSecs () For g=0 To 6 wx(g) = Rnd(1,6) Next For h=0 To 6 If wx(g)=1 Then mapx%(0) = 0 If wx(g)=2 Then mapx%(44) = 1 If wx(g)=3 Then mapx%(88) = 1 If wx(g)=4 Then mapx%(132) = 1 If wx(g)=5 Then mapx%(176) = 1 If wx(g)=6 Then mapx%(220) = 1 Next WaitKey Es wird eine fehlermeldung wiedergegeben: "Array index out of bounds" Ich hoffe auf Hilfe! Danke! LG Lars |
||
primero |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Dim wx(6)
stellt dir die Variablen wx(0) bis wx(5) zu verfügung, und nicht bis wx(6) also bei dim einfach den wert höher setzen, mindestens auf 7 dann gehts Edit: die hintere zahl bei dim gibt nicht an, bis zu welcher ziffer dim zählt, sondern wie viele Felder die Variable hat. Da 0 immer mitgezählt wird endet die Variable immer bei einer Nummer früher als bei Dim angegeben. |
||
- Zuletzt bearbeitet von primero am Di, März 09, 2010 16:22, insgesamt einmal bearbeitet
![]() |
Goodjee |
![]() Antworten mit Zitat ![]() |
---|---|---|
stimmt nicht, dim(10) hat 11 elemente
das problem ist dass du auf ein zweidimensionales dim zugreifst aber nur eine dimension angibst, beim zugriff auf mapx edit: jokerman, es muss wohl eher die 2. dimension 44 sein, bei nem dim 2,220 |
||
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/ |
- Zuletzt bearbeitet von Goodjee am Di, März 09, 2010 16:22, insgesamt einmal bearbeitet
![]() |
jokerman29 |
![]() Antworten mit Zitat ![]() |
---|---|---|
wie ichs seh, liegts nicht am rnd sondern an dem 2. array: Dim mapx%(2,220)
du hast nämlich einen 2 dimensionalen dim gemacht, der fehler liegt hier: Code: [AUSKLAPPEN] If wx(g)=1 Then mapx%(0) = 0
If wx(g)=2 Then mapx%(44) = 1 If wx(g)=3 Then mapx%(88) = 1 If wx(g)=4 Then mapx%(132) = 1 If wx(g)=5 Then mapx%(176) = 1 If wx(g)=6 Then mapx%(220) = 1 das müsste so sein z.b.: Code: [AUSKLAPPEN] If wx(g)=1 Then mapx%(0,0) = 0 If wx(g)=2 Then mapx%(44,0) = 1 usw. die null muss nicht sein, kanst auch jede andere zahl nehmen, aber du hast ihn 2 dimensional gemacht also musst du ihn immer 2 dimensional angeben! mfg jokerman29 EDIT: zu larm gewesen ^^ |
||
WhY sO sErIoUs? LeT´s PuT a SmIlE oN tHaT fAcE!
Rechtschreibfehler sind special-effekts meiner Tastatur ![]() |
![]() |
mpmxyz |
![]() Antworten mit Zitat ![]() |
---|---|---|
1. Fehler:
Deklaration mit 2 Dimensionen: BlitzBasic: [AUSKLAPPEN] Dim mapx%(2,220) Nutzung mit einer Dimension: BlitzBasic: [AUSKLAPPEN] mapx%(176)
Die Anzahl an Dimensionen bleibt aber immer gleich. ->Fehler 2. Fehler: Nach der Schleife hat die Variable g den Wert "7": BlitzBasic: [AUSKLAPPEN] For g=0 To 6 Und hier nutzt du sie für das Array mit 7 Einträgen: BlitzBasic: [AUSKLAPPEN] For h=0 To 6 ->Fehler zur Laufzeit mfG mpmxyz Edit: Extrem lahm, aber einen weiteren Fehler gefunden... Mir fällt gerade auf, dass die Frage im B3D-Teil gestellt wurde. Ist das nicht schon ein allgemeineres Problem? |
||
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer |
- Zuletzt bearbeitet von mpmxyz am Di, März 09, 2010 16:44, insgesamt einmal bearbeitet
Lars |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das Problem existiert weiterhin auch wenn ich das ändere auf:
Code: [AUSKLAPPEN] If wx(g)=2 Then mapx%(44,0) = 1
Lg Lars |
||
![]() |
HolzchopfMeisterpacker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich verschieb das mal, geht ja nicht wirklich um 3D-spezifische Dinge ![]() ~VERSCHOBEN~ Dieser Thread passte nicht in das Forum, in dem er ursprünglich gepostet wurde. mfG Holzchopf |
||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du hast einen Tipp übersehen, den schon mpmxyz gegeben hat:
Deine Schleife verwendet die Variable "H", Die Elemente in der Schleife aber die Variable "G" Zitat: ...
For h=0 To 6 If wx( g)=1 Then... Da "G" in der vorherigen Schleife bis 6 durchlaufen wurde, hat es danach den Wert 7 (Typisch: Der Wert der Laufvariablen nach einer For/Next-Schleife ist immer 1 höher als die Schleife dauerte) Diese "7" führt dann in der ersten Zeile der For-H-Schleife zum "Array out of Bound". Da steht praktisch "wx(7)". |
||
LarsBetreff: Danke!! |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke für die viele und schnelle Hilfe!
Jetzt habe ich das auch verstanden ![]() LG Lars |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group