Wieder einmal Dim Probleme
Übersicht

ZiggyBetreff: Wieder einmal Dim Probleme |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich habe den Editor für 2d-Tilemaps recoded, um ihn für mein jump 'n' run zu nutzen.
Alles funktioniert gut, bis auf folgendes: Im Beispielcode wird ein Dim-Feld der Größe (10,10) angelegt. Ich möchte aber für X mehr als 10 Felder, weil Jump 'n' Run brauch halt mehr. Ich habe dann die Größe auf (10,20) geändert und bekam die Fehlermeldung "Array Index out of bound". Dann hab ich rumprobiert und festgestellt dass ich die Größe maximal auf (10,11) ändern kann bis der Fehler kommt. Ich versteh das einfach nicht. Mein Code: Code: [AUSKLAPPEN] Dim tiles(6) For x=0 To 5 tiles(x) = LoadImage("tile"+Str$(x)+".png") Next Dim level(10,12) For x=0 To 9 For y=0 To 11 level(x,y)=0 Next Next While ende = 0 Cls If KeyHit(1) Then file = WriteFile(Str$(levelname$)+".dat") For y=0 To 9 For x=0 To 11 WriteLine file,level(x,y) Next Next CloseFile file ende = 1 EndIf If KeyHit(2) Then tile = 1 If KeyHit(3) Then tile = 2 If KeyHit(4) Then tile = 3 If KeyHit(5) Then tile = 4 If KeyHit(6) Then tile = 5 If MouseDown(2) Then tile = tile + 1 If tile = 6 Then tile = 1 EndIf If MouseX()<12*30 Then mx=MouseX()/30 If MouseY()<10*30 Then my=MouseY()/30 If MouseDown(1) Then level(mx,my) = tile EndIf For y=0 To 9 For x=0 To 11 DrawImage tiles(level(x,y)),x*30,y*30 Color 189,189,189 Rect x*30,y*30,30,30,0 Next Next DrawBlock tiles(tile),mx*30,my*30 Color 255,0,0 Rect mx*30,my*30,30,30,0 DrawImage btn_new,0,gfxHeight-ImageHeight(btn_new) DrawImage btn_open,0+ImageWidth(btn_new),gfxHeight-ImageHeight(btn_open) DrawImage btn_save,0+ImageWidth(btn_new)+ImageWidth(btn_save),gfxHeight-ImageHeight(btn_new) Flip Wend End Hier tritt der Fehler auf: Code: [AUSKLAPPEN] DrawImage tiles(level(x,y)),x*30,y*30 Ich hab mir schon überlegt ob vielleicht die Bildschirmbreite von 800 px nicht ausreicht, aber meiner rechnung nach sind 12*30 = 360, muss also funktionieren, tut es aber nicht. Danke schon mal für eure Unterstützung. Gruß. Edit: Code-Tags scheinen nicht zu funktionieren?? |
||
- Zuletzt bearbeitet von Ziggy am So, Dez 09, 2007 12:52, insgesamt einmal bearbeitet
TeDy14Gast |
![]() Antworten mit Zitat |
|
---|---|---|
Hallo
So wie ich das jetzt gesehen hab sieht es so aus als ob du y vergrößern willst und nicht x... DU hast doch im Dimfeld die erste Var x angegeben und der zweiten y ... dann würde ich auch mal x größer machen und nicht y ![]() |
||
Ziggy |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das ist nicht das Problem... Egal welche Variable ich ändere, es geht nur bis max. 11, alles drüber kommt halt die Fehlermeldung.
Edit: Weitere Ungewöhnichkeit festgestellt: wenn die x-Koordinate meines Dim-Feldes um 2 größer ist als die y-Koordinate kommt die Fehlermeldung "Array Index out of bounds". Beispiel: Dim(7,8) funktioniert, Dim(7,9) nicht. |
||
"Es gibt 10 Arten von Menschen: Diejenigen die Binär verstehen, und jene die es nicht verstehen."
"Irren ist menschlich, gut dass ich ein Gott bin... xD" letzte Informatik-Note : 1 ... 96% richtig, Thema: C++ switch/case |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Deine Codetags funktionieren nicht, weil dein erster Codeabschnitt kein richtig geschlossenes Tag hat. Da fehlt die ] -Klammer am Ende.
Zu deinem Problem: - Du verwechselst x mit y, was das Problem verursacht. Dim level(10,12) und dann einmal For x=0 To 9, For y=0 To 11 und später nochmal For y=0 To 9, For x=0 To 11... - Ich würde auch die Zeile If tile = 6 Then tile = 1 eher lieber so If tile >= 6 Then tile = 1 machen. - Ausserdem hast du bereits von 0 an Bilder gespeichert, du setzt aber hier auf 1, wenn überschritten wird If tile = 6 Then tile = 1. - Ich würde auch auf solche Kombination verzichten If MouseX()<12*30 Then mx=MouseX()/30.... Dann doch lieber gleich vorsetzen und dann filtern. Ähnlich wie: Code: [AUSKLAPPEN] mx=mousex()/30
my=mousey()/30 If mx>12 Then mx=12 If my>10 Then my=10 |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
Ziggy |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich danke dir, hectic.
Mein gröbster Fehler war das vertauschen der x,y-Koordinate beim zeichnen der Bilder: Code: [AUSKLAPPEN] DrawImage tiles(level(y,x)),x*32,y*32 Das konnte natürlich nicht funktionieren, und ich habs einfach übersehen. Gruß. |
||
"Es gibt 10 Arten von Menschen: Diejenigen die Binär verstehen, und jene die es nicht verstehen."
"Irren ist menschlich, gut dass ich ein Gott bin... xD" letzte Informatik-Note : 1 ... 96% richtig, Thema: C++ switch/case |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group