Probleme beim auslesen des Dim feldes?

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

bruce85

Betreff: Probleme beim auslesen des Dim feldes?

BeitragMi, Mai 30, 2007 21:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
Ich hab mal ein kleines problem bei Dim felder und zwar, habe ich mir erstmal ein kleines beispiel geschrieben um es an meinem Projekt umzusetzen.
Bei dem beispiel habe ich Input benutzt, also nurmal zum testen, bei meinem anderen Projekt habe ich eine Inputroutine.
Jetzt zu meinem problem, wenn ich das beispiel Kompiliere und alles eingegeben habe und wenn die Schleife dann ausgeführt wird, wo also die Map gezeichnet wird, bekomme ich die fehlermeldung "Array index out of bounds".

Hier ist mal mein versuch:
Code: [AUSKLAPPEN]
Graphics 1024,768,16,2
SetBuffer BackBuffer()

Dim spielfeld(feld_x_anzahl,feld_y_anzahl)

bild$ = Input("Bildname angeben: ")
bild_temp = LoadImage(bild$+".jpg") ;Bild laden

bild_breite = ImageWidth(bild_temp) ;berechnen wie breit das bild ist
bild_hoehe = ImageHeight(bild_temp) ;berechnen wie hoch das bild ist

tile_breite_temp = Input("Tile breite angeben: ") ;Tile breite eingeben
tile_hoehe_temp = Input("Tile hoehe angeben: ") ;Tile hoehe eingeben
tile_x_anzahl = bild_breite / tile_breite_temp ;bild_breite / tile_breite_temp um die X anzehl der tiles zu erechnen
tile_y_anzahl = bild_hoehe / tile_hoehe_temp ;bild_hoehe / tile_hoehe_temp um die Y anzehl der tiles zu erechnen
tile_anzahl = tile_x_anzahl * tile_y_anzahl ;tile_x_anzahl * tile_y_anzahl um die gesamt anzahl der tiles zu erechnen

bild_temp = LoadAnimImage(bildname$+".jpg",tile_breite_temp,tile_hoehe_temp,0,tile_anzahl) ;Das bild dann als AnimImage laden

feld_x_anzahl = Input("Anzahl der felder X: ") ;Anzahl der felder X angeben
feld_y_anzahl = Input("Anzahl der felder Y: ") ;Anzahl der felder Y angeben

standart_frames = Input("Standart Frames angeben: ") ;angeben welcher Frame als Start frames angezeigt werden soll

For y=1 To feld_y_anzahl
  For x=1 To feld_x_anzahl
    Read spielfeld(x,y)
    spielfeld(x,y) = standart_frames
  Next
Next

Repeat
  Cls

  ;Map Zeichnen
  For y=1 To feld_y_anzahl
    For x=1 To feld_x_anzahl
      DrawImage bild,x*tile_breite_temp,y*tile_hoehe_temp,spielfeld(x,y)
    Next
  Next

  Text 20,20,"Tile X anzahl: "+tile_x_anzahl
  Text 20,40,"Tile Y anzahl: "+tile_y_anzahl
  Text 20,60,"Tile breite: "+tile_breite_temp
  Text 20,80,"Tile breite: "+tile_hoehe_temp
  Text 20,100,"Tile anzahl: "+tile_anzahl

  Flip
Until KeyHit(1)

End


Wisst ihr vieleicht was ich da falsch gemacht habe?
Es kann sein, das ich ein bisschen außer übung mit den Feldern bin oder im Moment den fehler nicht finden kann.

Ich wäre euch sehr dankbar, wenn Ihr mein problem lösen könnt.

MfG
AMD Athlon(tm) II X2 250, 8 GB DDR, MSI MSI 770-C45, GeForce GTS 250
 

Dreamora

BeitragMi, Mai 30, 2007 21:34
Antworten mit Zitat
Benutzer-Profile anzeigen
erm

du dimst bevor du die variablen befüllt hast -> 0,0 grosses dim feld
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

bruce85

BeitragMi, Mai 30, 2007 21:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke Dir.
Ich habe auch versucht das weiter unten zu definieren, geht leider auch nicht.
Der fehler müsste nocht irgendwo im Code sein, kann das sein, das ich Read also das auslesen der Map weg lassen muss?
Normal müsste ich die map ja mit Read auslesen, bevor es gezeichnet wird.
Also ich habe schon alles versucht, der fehler erscheint trotzdem.
Ich kuck mir den Code einfach nochmal richtig an, der fehler kann ja nicht so schwer zu finden sein.

Edit: Jetzt geht das, ich habe weiter unten gedimt Wink
und Read weg gelassen, dass brauche ich ja nur, wenn ich Data benutze.

Vielen Dank.

MfG
AMD Athlon(tm) II X2 250, 8 GB DDR, MSI MSI 770-C45, GeForce GTS 250

ToeB

BeitragMi, Mai 30, 2007 21:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Hier der Fehler :

bruce85 hat Folgendes geschrieben:
DrawImage BILD,x,y,...


Das ist der Fehler ! hast ja gar kein Bild als Bild Variable definiert !
Da muss hin :

Zitat:
DrawImage Bild_temp,x,y,...


DAnn ghets !

Code: [AUSKLAPPEN]
Graphics 1024,768,16,2
SetBuffer BackBuffer()


bild$ = Input("Bildname angeben: ")
bild_temp = LoadImage(bild$+".bmp") ;Bild laden

bild_breite = ImageWidth(bild_temp) ;berechnen wie breit das bild ist
bild_hoehe = ImageHeight(bild_temp) ;berechnen wie hoch das bild ist

tile_breite_temp = Input("Tile breite angeben: ") ;Tile breite eingeben
tile_hoehe_temp = Input("Tile hoehe angeben: ") ;Tile hoehe eingeben
tile_x_anzahl = bild_breite / tile_breite_temp ;bild_breite / tile_breite_temp um die X anzehl der tiles zu erechnen
tile_y_anzahl = bild_hoehe / tile_hoehe_temp ;bild_hoehe / tile_hoehe_temp um die Y anzehl der tiles zu erechnen
tile_anzahl = tile_x_anzahl * tile_y_anzahl ;tile_x_anzahl * tile_y_anzahl um die gesamt anzahl der tiles zu erechnen

;bild_temp = LoadAnimImage(bildname$+".jpg",tile_breite_temp,tile_hoehe_temp,0,tile_anzahl) ;Das bild dann als AnimImage laden

feld_x_anzahl = Input("Anzahl der felder X: ") ;Anzahl der felder X angeben
feld_y_anzahl = Input("Anzahl der felder Y: ") ;Anzahl der felder Y angeben

standart_frames = Input("Standart Frames angeben: ") ;angeben welcher Frame als Start frames angezeigt werden soll
Dim spielfeld(feld_x_anzahl,feld_y_anzahl)

For y=1 To feld_y_anzahl
  For x=1 To feld_x_anzahl
    spielfeld(x,y) = standart_frames
  Next
Next

Repeat
  Cls

  ;Map Zeichnen
  For y=1 To feld_y_anzahl
    For x=1 To feld_x_anzahl
      DrawImage bild_temp,x*tile_breite_temp,y*tile_hoehe_temp,spielfeld(x,y)
    Next
  Next

  Text 20,20,"Tile X anzahl: "+tile_x_anzahl
  Text 20,40,"Tile Y anzahl: "+tile_y_anzahl
  Text 20,60,"Tile breite: "+tile_breite_temp
  Text 20,80,"Tile breite: "+tile_hoehe_temp
  Text 20,100,"Tile anzahl: "+tile_anzahl

  Flip
Until KeyHit(1)

End



mfg
Wink
Crack93
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!
 

bruce85

BeitragMi, Mai 30, 2007 21:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi Crack, auch mal wieder da Wink
Ich weiss, ich hab das ja geändert gehabt, da ich erst 2 Variablen hatte und das eine entfernt habe, danach ist mir eingefallen, dass das andere bild eine leere inhalt hatte. Wink

MfG
AMD Athlon(tm) II X2 250, 8 GB DDR, MSI MSI 770-C45, GeForce GTS 250

ToeB

BeitragMi, Mai 30, 2007 21:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Also futzt es jetzt ??


mfg
Smile
Crack93
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!
 

bruce85

BeitragMi, Mai 30, 2007 22:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Hast du mein Beitrag oben nicht gesehn? ich habe es Editiert das es jetzt geht, der fehler kam nicht durch laden des bildes sondern durch Read obwohl ich keine Data felderr benutzt habe und weiter unten habe ich das Dim feld gesetzt, jetzt geht das Wink

MfG
AMD Athlon(tm) II X2 250, 8 GB DDR, MSI MSI 770-C45, GeForce GTS 250

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group