Problem mit Tilemap

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Bassmaster

Betreff: Problem mit Tilemap

BeitragDi, Feb 05, 2008 12:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo ich hab gerade mal in meine Tilemap ein Bild mehr reingebaut und die Tilemap etwas vergrößert.

Aber wenn ich das Programm Compiliere bekomme ich die Meldung "Not enough Frames in Bitmap"

Aber meiner meinung nach habe ich genug Frames

Hier mal die Bitmap: http://img-up.net/?up=tileset_tejXMddQi.jpg

Höhe: 59

Breite: 330

Bei mir im Ordner auf dem PC ist es als png abgespeichert.

Und hier ist der Source Code dazu:
Code: [AUSKLAPPEN]



Graphics 1024,648,32,0


Global Tileset = LoadAnimImage("tileset_test.png",59,59,0,6)
Global char      = LoadImage       ("char.png")


;--------------------------------
Global ppx = 10*59 ;X-Position des Charackters
Global ppy = 7*59  ;Y-Position des Charackters

Global py = 7      ;Kollisions X-Position des Charackters
Global px = 10     ;Kollisions Y-Position des Charackters

Global scrolly     ;Die Variable fr die ScrollY-Position
Global scrollx     ;Die Variable fr die ScrollX-Position
;--------------------------------


; 0 = wiese
; 1 = sand
; 2 = hebel
; 3 = wasser
; 4 = tür
; 5 = feuer
; 6 = baum


Dim map(21,21)



Data 5,5,5,5,5,5,5,4,5,5,5,5,5,5,5,5,5,5,5,5,5
Data 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5
Data 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5
Data 5,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5
Data 5,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5
Data 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5
Data 5,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,5
Data 5,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,5
Data 5,0,0,0,0,0,0,0,0,0,0,3,3,0,0,0,0,0,0,0,5
Data 5,0,0,0,0,0,0,0,0,0,0,3,3,0,0,0,0,0,0,0,5
Data 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5
Data 5,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5
Data 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5
Data 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5
Data 5,0,0,0,3,3,0,0,0,0,0,0,0,0,3,3,0,0,0,0,5
Data 5,0,0,0,3,3,0,0,0,0,0,0,0,0,3,3,0,0,0,0,5
Data 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5
Data 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5
Data 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5
Data 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5
Data 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5



For x = 0 To 21
For y = 0 To 21
Read map(x,y)
Next
Next




Repeat
SetBuffer BackBuffer()
Cls


For x = 0 To 21
For y = 0 To 21

DrawBlock tileset,x*59-scrollx,y*59-scrolly,map(x,y)  ;map malen
Next
Next

DrawImage char,ppx-scrollx,ppy-scrolly   ;figur male


;----Bewegungsroutinen----------------------------------------------------------------------------------
Select move
 
 ;links
   Case 1
      ;Spielerposition ndern
      scrollx = scrollx - 2
      ppx = ppx - 2
      ;Variable, die zhlt wie weit der Spieler bereits bewet wurde
      counter=counter+1
      If counter = 16 Then
         px = px - 1
         counter = 0
         move = 0
      EndIf
   
;Rechts
   Case 2
      ;Spielerposition ndern
      scrollx = scrollx + 2
      ppx = ppx + 2
      ;Variable, die zhlt wie weit der Spieler bereits bewet wurde
      counter = counter+1
      If counter = 16 Then
         px = px + 1
         counter = 0
         move = 0
      EndIf



;runter
Case 3
    ;Spielerposition ndern
      scrolly = scrolly + 2
      ppy = ppy + 2
      ;Variable, die zhlt wie weit der Spieler bereits bewet wurde
      counter = counter+1
      If counter = 16 Then
         py = py + 1
         counter = 0
         move = 0
      EndIf


;rauf
Case 4
    ;Spielerposition ndern
      scrolly = scrolly - 2
      ppy = ppy - 2
      ;Variable, die zhlt wie weit der Spieler bereits bewet wurde
      counter = counter+1
      If counter = 16 Then
         py = py - 1
         counter = 0
         move = 0
      EndIf





End Select



;Cursor Rechts
If KeyDown(205) Then
   ;Kollision checken, wie ihr es schon kennt
   If map(px+1,py) < 3 Then
      ;der nchste Tastatur-eingabe-impuls wird mglich sobald die vorige Bewegung abgeschlossen ist
      ;das heit in der Zeit wo keine Tastatur-eingabe erfolgen kann wird zur Zeit gescrollt
      If move=0 Then
         ;die Scrollroutine move=2   (  Case 2 ) wird aufgerufen
         move = 2
      End If
   End If
End If

;Cursor Links
If KeyDown(203) Then
   ;Kollision checken, wie ihr es schon kennt
   If map(px-1,py) < 3 Then
      ;der nchste Tastatur-eingabe-impuls wird mglich sobald die vorige Bewegung abgeschlossen ist
      ;das heit in der Zeit wo keine Tastatur-eingabe erfolgen kann wird zur Zeit gescrollt
      If move=0 Then
         ;die Scrollroutine move=1    ( Case 1 ) wird aufgerufen
         move = 1
      End If
   End If
End If


;runter key
   If KeyDown(208) Then
      If map(px,py+1) < 3 Then
         If move = 0 Then
         move = 3          
         End If
      End If
   End If




;rauf key
   If KeyDown(200) Then
      If map(px,py-1) < 3 Then
         If move = 0 Then
         move = 4          
         End If
      End If
   End If




;---Trigger Point -------------------------------
   If KeyHit(57) Then
   ;und die spielerposition auf den hebel-tile befindet
   If map(px,py) = 2 Then
   ;dann wird die gesamte karte eingelesen und alle tür-tiles in graß-tiles
   ;umgewandelt
      For y = 0 To 21
         For x = 0 To 21
            If map(x,y) = 4 Then
            map(x,y) = 0
   End If
      Next
         Next
      End If
         End If

Flip
Forever


 

AMD

BeitragDi, Feb 05, 2008 13:00
Antworten mit Zitat
Benutzer-Profile anzeigen
die breite der einzelnen Bilder stimmt bei dir ned. wenn ein bild 59 sein soll und es 7 bilder sind dann kommt man auf 413 Pixel und ned auf 330. Also stimmt die Breite eines Bildes in Pixel ned...
Das Leben ist ein scheiß Spiel hat aber eine saugute Grafik!
PC:
AMD 5200 X2(2x2,6Ghz), 250GB Festplatte, 2048MB Arbeitsspeicher, Nvidia 9800 GTX mit 512MB.....
Bildschrim mit 22 Zoll und 5msk Übertragungszeit......
Mein BaumMap Tutorial:
http://www.blitzforum.de/forum...hp?t=26341
 

Bassmaster

BeitragDi, Feb 05, 2008 13:14
Antworten mit Zitat
Benutzer-Profile anzeigen
So zeigt es mir paint an

http://img-up.net/?up=tilemapKhfdQ6z1.JPG
 

AMD

BeitragDi, Feb 05, 2008 13:36
Antworten mit Zitat
Benutzer-Profile anzeigen
ich meine die einzelne Bild länge. Du hast ja da 7 verschiedene einzelne Bilder und davon musst du die Höhe und die Breite angeben von "einem" solchen Bild und die is bei dir falsch die ist nicht 59!!!

kapiert?
Das Leben ist ein scheiß Spiel hat aber eine saugute Grafik!
PC:
AMD 5200 X2(2x2,6Ghz), 250GB Festplatte, 2048MB Arbeitsspeicher, Nvidia 9800 GTX mit 512MB.....
Bildschrim mit 22 Zoll und 5msk Übertragungszeit......
Mein BaumMap Tutorial:
http://www.blitzforum.de/forum...hp?t=26341
 

Bassmaster

BeitragDi, Feb 05, 2008 15:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich versuche gerade eine map zu erzeugen mit einem array von 25,25

Aber da kommt die tolle Fehlermeldung Out of Data. Aber das Array ist richtig.

-.-


Code: [AUSKLAPPEN]

Graphics 640,480,32,0


Global Tileset = LoadAnimImage("tileset.bmp",32,32,0,6)
Global char      = LoadImage  ("char.png")


;--------------------------------
Global ppx = 10*32 ;X-Position des Charackters
Global ppy = 7*32  ;Y-Position des Charackters

Global py = 7      ;Kollisions X-Position des Charackters
Global px = 10     ;Kollisions Y-Position des Charackters

Global scrolly     ;Die Variable fr die ScrollY-Position
Global scrollx     ;Die Variable fr die ScrollX-Position
;--------------------------------


; 0 = wiese
; 1 = sand
; 2 = hebel
; 3 = wasser
; 4 = tür
; 5 = feuer
; 6 = baum


Dim map(25,25)

Data 5,5,5,5,5,5,5,4,5,5,5,5,5,5,5,5,5,5,5,5,5
Data 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5
Data 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5
Data 5,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5
Data 5,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5
 
Data 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5
Data 5,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,5
Data 5,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,5
Data 5,0,0,0,0,0,0,0,0,0,0,3,3,0,0,0,0,0,0,0,5
Data 5,0,0,0,0,0,0,0,0,0,0,3,3,0,0,0,0,0,0,0,5

Data 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5
Data 5,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5
Data 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5
Data 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5
Data 5,0,0,0,3,3,0,0,0,0,0,0,0,0,3,3,0,0,0,0,5

Data 5,0,0,0,3,3,0,0,0,0,0,0,0,0,3,3,0,0,0,0,5
Data 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5
Data 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5
Data 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5
Data 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5

Data 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5
Data 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5
Data 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5
Data 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5
Data 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5

Data 5,5,5,5,5,5,5,4,5,5,5,5,5,5,5,5,5,5,5,5,5



For x = 0 To 25
For y = 0 To 25
Read map(x,y)
Next
Next




Repeat
SetBuffer BackBuffer()
Cls


For x = 0 To 25
For y = 0 To 25

DrawBlock tileset,x*32-scrollx,y*32-scrolly,map(x,y)  ;map malen
Next
Next

DrawImage char,ppx-scrollx,ppy-scrolly   ;figur male


;----Bewegungsroutinen----------------------------------------------------------------------------------
Select move
 
 ;links
   Case 1
      ;Spielerposition ndern
      scrollx = scrollx - 2
      ppx = ppx - 2
      ;Variable, die zhlt wie weit der Spieler bereits bewet wurde
      counter=counter+1
      If counter = 16 Then
         px = px - 1
         counter = 0
         move = 0
      EndIf
   
;Rechts
   Case 2
      ;Spielerposition ndern
      scrollx = scrollx + 2
      ppx = ppx + 2
      ;Variable, die zhlt wie weit der Spieler bereits bewet wurde
      counter = counter+1
      If counter = 16 Then
         px = px + 1
         counter = 0
         move = 0
      EndIf



;runter
Case 3
    ;Spielerposition ndern
      scrolly = scrolly + 2
      ppy = ppy + 2
      ;Variable, die zhlt wie weit der Spieler bereits bewet wurde
      counter = counter+1
      If counter = 16 Then
         py = py + 1
         counter = 0
         move = 0
      EndIf


;rauf
Case 4
    ;Spielerposition ndern
      scrolly = scrolly - 2
      ppy = ppy - 2
      ;Variable, die zhlt wie weit der Spieler bereits bewet wurde
      counter = counter+1
      If counter = 16 Then
         py = py - 1
         counter = 0
         move = 0
      EndIf





End Select



;Cursor Rechts
If KeyDown(205) Then
   ;Kollision checken, wie ihr es schon kennt
   If map(px+1,py) < 3 Then
      ;der nchste Tastatur-eingabe-impuls wird mglich sobald die vorige Bewegung abgeschlossen ist
      ;das heit in der Zeit wo keine Tastatur-eingabe erfolgen kann wird zur Zeit gescrollt
      If move=0 Then
         ;die Scrollroutine move=2   (  Case 2 ) wird aufgerufen
         move = 2
      End If
   End If
End If

;Cursor Links
If KeyDown(203) Then
   ;Kollision checken, wie ihr es schon kennt
   If map(px-1,py) < 3 Then
      ;der nchste Tastatur-eingabe-impuls wird mglich sobald die vorige Bewegung abgeschlossen ist
      ;das heit in der Zeit wo keine Tastatur-eingabe erfolgen kann wird zur Zeit gescrollt
      If move=0 Then
         ;die Scrollroutine move=1    ( Case 1 ) wird aufgerufen
         move = 1
      End If
   End If
End If


;runter key
   If KeyDown(208) Then
      If map(px,py+1) < 3 Then
         If move = 0 Then
         move = 3           
         End If
      End If
   End If




;rauf key
   If KeyDown(200) Then
      If map(px,py-1) < 3 Then
         If move = 0 Then
         move = 4           
         End If
      End If
   End If




;---Trigger Point -------------------------------
   If KeyHit(57) Then
   ;und die spielerposition auf den hebel-tile befindet
   If map(px,py) = 2 Then
   ;dann wird die gesamte karte eingelesen und alle tür-tiles in graß-tiles
   ;umgewandelt
      For y = 0 To 25
         For x = 0 To 25
            If map(x,y) = 4 Then
            map(x,y) = 0
   End If
      Next
         Next
      End If
         End If

Flip
Forever

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDi, Feb 05, 2008 15:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Dein Array ist auch richtig, aber deine Fehlermeldung ist ''Out of Data'', und mal durchgezählt. Ja, du hast zu wenige Datawerte. Zwar stimmen die 26 Zeilen überein, aber nicht die Anzahl Spalten. Du hast 21 Spalten, liest aber 26 aus...
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D
 

Bassmaster

BeitragDi, Feb 05, 2008 16:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Fehlermeldung mit dem out of data ist jezt weg :>

Aber wie das ja so ist kommt dann wieder eine neue -.-

Array Index out of bounds

Dieses Programm macht mich noch WAHNSINNING Twisted Evil Shocked


Code: [AUSKLAPPEN]

Graphics 640,480,32,0


Global Tileset = LoadAnimImage("tileset.png",32,32,0,6)
Global char      = LoadImage  ("char.png")


;-----------------------------------
Global ppx = 10*32 ;X-Position des Charackters
Global ppy = 7*32  ;Y-Position des Charackters

Global py = 7      ;Kollisions X-Position des Charackters
Global px = 10     ;Kollisions Y-Position des Charackters

Global scrolly     ;Die Variable fr die ScrollY-Position
Global scrollx     ;Die Variable fr die ScrollX-Position
;--------------------------------


; 0 = wiese
; 1 = sand
; 2 = hebel
; 3 = wasser
; 4 = tür
; 5 = feuer
; 6 = baum


Dim map(25,25)

Data 5,5,5,5,5,5,5,4,5,5,5,5,5,5,5,5,5,5,5,5,5
Data 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5
Data 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5
Data 5,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5
Data 5,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5
 
Data 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5
Data 5,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,5
Data 5,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,5
Data 5,0,0,0,0,0,0,0,0,0,0,3,3,0,0,0,0,0,0,0,5
Data 5,0,0,0,0,0,0,0,0,0,0,3,3,0,0,0,0,0,0,0,5

Data 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5
Data 5,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5
Data 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5
Data 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5
Data 5,0,0,0,3,3,0,0,0,0,0,0,0,0,3,3,0,0,0,0,5

Data 5,0,0,0,3,3,0,0,0,0,0,0,0,0,3,3,0,0,0,0,5
Data 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5
Data 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5
Data 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5
Data 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5

Data 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5
Data 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5
Data 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5
Data 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5
Data 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5

Data 5,5,5,5,5,5,5,4,5,5,5,5,5,5,5,5,5,5,5,5,5



For x = 0 To 26
For y = 0 To 26
Read map(x,y)
Next
Next




Repeat
SetBuffer BackBuffer()
Cls


For x = 0 To 26
For y = 0 To 26

DrawBlock tileset,x*32-scrollx,y*32-scrolly,map(x,y)  ;map malen
Next
Next

DrawImage char,ppx-scrollx,ppy-scrolly   ;figur male


;----Bewegungsroutinen----------------------------------------------------------------------------------
Select move
 
 ;links
   Case 1
      ;Spielerposition ndern
      scrollx = scrollx - 2
      ppx = ppx - 2
      ;Variable, die zhlt wie weit der Spieler bereits bewet wurde
      counter=counter+1
      If counter = 16 Then
         px = px - 1
         counter = 0
         move = 0
      EndIf
   
;Rechts
   Case 2
      ;Spielerposition ndern
      scrollx = scrollx + 2
      ppx = ppx + 2
      ;Variable, die zhlt wie weit der Spieler bereits bewet wurde
      counter = counter+1
      If counter = 16 Then
         px = px + 1
         counter = 0
         move = 0
      EndIf



;runter
Case 3
    ;Spielerposition ndern
      scrolly = scrolly + 2
      ppy = ppy + 2
      ;Variable, die zhlt wie weit der Spieler bereits bewet wurde
      counter = counter+1
      If counter = 16 Then
         py = py + 1
         counter = 0
         move = 0
      EndIf


;rauf
Case 4
    ;Spielerposition ndern
      scrolly = scrolly - 2
      ppy = ppy - 2
      ;Variable, die zhlt wie weit der Spieler bereits bewet wurde
      counter = counter+1
      If counter = 16 Then
         py = py - 1
         counter = 0
         move = 0
      EndIf





End Select



;Cursor Rechts
If KeyDown(205) Then
   ;Kollision checken, wie ihr es schon kennt
   If map(px+1,py) < 3 Then
      ;der nchste Tastatur-eingabe-impuls wird mglich sobald die vorige Bewegung abgeschlossen ist
      ;das heit in der Zeit wo keine Tastatur-eingabe erfolgen kann wird zur Zeit gescrollt
      If move=0 Then
         ;die Scrollroutine move=2   (  Case 2 ) wird aufgerufen
         move = 2
      End If
   End If
End If

;Cursor Links
If KeyDown(203) Then
   ;Kollision checken, wie ihr es schon kennt
   If map(px-1,py) < 3 Then
      ;der nchste Tastatur-eingabe-impuls wird mglich sobald die vorige Bewegung abgeschlossen ist
      ;das heit in der Zeit wo keine Tastatur-eingabe erfolgen kann wird zur Zeit gescrollt
      If move=0 Then
         ;die Scrollroutine move=1    ( Case 1 ) wird aufgerufen
         move = 1
      End If
   End If
End If


;runter key
   If KeyDown(208) Then
      If map(px,py+1) < 3 Then
         If move = 0 Then
         move = 3           
         End If
      End If
   End If




;rauf key
   If KeyDown(200) Then
      If map(px,py-1) < 3 Then
         If move = 0 Then
         move = 4           
         End If
      End If
   End If




;---Trigger Point -------------------------------
   If KeyHit(57) Then
   ;und die spielerposition auf den hebel-tile befindet
   If map(px,py) = 2 Then
   ;dann wird die gesamte karte eingelesen und alle tür-tiles in graß-tiles
   ;umgewandelt
      For y = 0 To 26
         For x = 0 To 26
            If map(x,y) = 4 Then
            map(x,y) = 0
   End If
      Next
         Next
      End If
         End If

Flip
Forever

The_Nici

BeitragDi, Feb 05, 2008 16:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Du hast keine 27 Felder im Array. 0 zu 26 = 27. Das Array hat 26 Felder.

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDi, Feb 05, 2008 16:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich glaube, du machst uns mehr wahnsinnig als das Programm dich. Meine Frage nun: Hast du überhaupt verstanden, was ich vorher geschrieben habe? --> NEIN, hast du nicht.

Du hast zu wenig Spalten in deinen Data-Zeilen! Das heisst: Du musst mehr Spalten da rein machen! Also mehr Zahlen hinter dem Kommata. Die erste Data-Zeile müsste also in etwa so lauten:

Code: [AUSKLAPPEN]
Data 5,5,5,5,5, 5,5,4,5,5, 5,5,5,5,5, 5,5,5,5,5, 5,5,5,5,5, 5


Damit es besser lesbar ist, habe ich jede fünfte Zahl ein Leerzeichen rein gemacht. Und zwar wie du sehen kannst, hast du nun 26 Spalten, da du dein Array von 0 bis 25 (=26 Werte) ansprichst.

Alternativ kannst du auch einfach nur weniger aufzählen. Also von 0 bis 20, was auch gehen würde.

Und deine Änderungen...

Code: [AUSKLAPPEN]
For x = 0 To 26
   For y = 0 To 26
...


...solltest du schnell wieder rückgängig machen.

Wenn du das alles gemacht hast und trotzdem noch Fehler auftretten, dann sag uns die Fehlermeldung und die Zeile, wo der Fehler auftritt. Denn so wird sich kaum einer hier finden, der extra dein Code kopiert, sich Dummygrafiken zusammensucht und dann auf Fehleranalyse geht.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D
 

Bassmaster

BeitragDi, Feb 05, 2008 16:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Jetzt gehts endlich THX THX THX

wieso bin ich da net selber drauf gekommen Crying or Very sad


So ich hab ein neues Tilemap Problem -.-


Also meine Tilemap ist 50 Breit 50 Hoch und ich habe 7 Tiles

und immer wenn ich den Source Code compiliere meint der Compiler Not eough Frames in Bitmap
aber da sind genug Frames drin.

Hier ist ein das Bild: http://img-up.net/?up=testtileX0OZN.PNG


Und hier ist der Source Code

Code: [AUSKLAPPEN]

Graphics 640,480,32,0


Global Tileset = LoadAnimImage("tileset.png" ,50,50,0,7)
Global char      = LoadImage  ("char.png")


;-----------------------------------
Global ppx = 10*50 ;X-Position des Charackters
Global ppy = 7*50  ;Y-Position des Charackters

Global py = 7      ;Kollisions X-Position des Charackters
Global px = 10     ;Kollisions Y-Position des Charackters

Global scrolly     ;Die Variable fr die ScrollY-Position
Global scrollx     ;Die Variable fr die ScrollX-Position
;--------------------------------


; 0 = wiese
; 1 = sand
; 2 = hebel
; 3 = wasser
; 4 = tür
; 5 = feuer
; 6 = baum


Dim map(25,25)

;26 nach rechts   ;26 nach unten
Data 5,5,5,5,5, 5,5,5,5,5, 5,5,5,5,5, 5,5,5,5,5, 5,5,5,5,5, 5

Data 5,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 5
Data 5,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 5
Data 5,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 5
Data 5,0,0,0,0, 0,0,0,0,0, 1,1,1,1,1, 0,0,0,0,0, 0,0,0,0,0, 5
Data 5,0,0,0,0, 0,0,0,0,0, 1,1,1,1,1, 0,0,0,0,0, 0,0,0,0,0, 5

Data 5,5,5,5,5, 5,5,5,5,5, 5,5,4,5,5, 5,5,5,5,5, 5,5,5,5,5, 5
Data 5,0,0,0,0, 0,0,2,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 5
Data 5,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 5
Data 5,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 5
Data 5,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 5

Data 5,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 5
Data 5,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 5
Data 5,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 5
Data 5,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 5
Data 5,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 5

Data 5,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 5
Data 5,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 5
Data 5,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 5
Data 5,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 5
Data 5,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 5

Data 5,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 5
Data 5,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 5
Data 5,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 5
Data 5,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 5

Data 5,5,5,5,5, 5,5,5,5,5, 5,5,5,5,5, 5,5,5,5,5, 5,5,5,5,5, 5




For x = 0 To 25
For y = 0 To 25
Read map(x,y)
Next
Next




Repeat
SetBuffer BackBuffer()
Cls


For x = 0 To 25
For y = 0 To 25

DrawBlock tileset,x*50-scrollx,y*50-scrolly,map(x,y)  ;map malen
Next
Next

DrawImage char,ppx-scrollx,ppy-scrolly   ;figur male


;----Bewegungsroutinen----------------------------------------------------------------------------------
Select move
 
 ;links
   Case 1
      ;Spielerposition ndern
      scrollx = scrollx - 2
      ppx = ppx - 2
      ;Variable, die zhlt wie weit der Spieler bereits bewet wurde
      counter=counter+1
      If counter = 16 Then
         px = px - 1
         counter = 0
         move = 0
      EndIf
   
;Rechts
   Case 2
      ;Spielerposition ndern
      scrollx = scrollx + 2
      ppx = ppx + 2
      ;Variable, die zhlt wie weit der Spieler bereits bewet wurde
      counter = counter+1
      If counter = 16 Then
         px = px + 1
         counter = 0
         move = 0
      EndIf



;runter
Case 3
    ;Spielerposition ndern
      scrolly = scrolly + 2
      ppy = ppy + 2
      ;Variable, die zhlt wie weit der Spieler bereits bewet wurde
      counter = counter+1
      If counter = 16 Then
         py = py + 1
         counter = 0
         move = 0
      EndIf


;rauf
Case 4
    ;Spielerposition ndern
      scrolly = scrolly - 2
      ppy = ppy - 2
      ;Variable, die zhlt wie weit der Spieler bereits bewet wurde
      counter = counter+1
      If counter = 16 Then
         py = py - 1
         counter = 0
         move = 0
      EndIf





End Select



;Cursor Rechts
If KeyDown(205) Then
   ;Kollision checken, wie ihr es schon kennt
   If map(px+1,py) < 3 Then
      ;der nchste Tastatur-eingabe-impuls wird mglich sobald die vorige Bewegung abgeschlossen ist
      ;das heit in der Zeit wo keine Tastatur-eingabe erfolgen kann wird zur Zeit gescrollt
      If move=0 Then
         ;die Scrollroutine move=2   (  Case 2 ) wird aufgerufen
         move = 2
      End If
   End If
End If

;Cursor Links
If KeyDown(203) Then
   ;Kollision checken, wie ihr es schon kennt
   If map(px-1,py) < 3 Then
      ;der nchste Tastatur-eingabe-impuls wird mglich sobald die vorige Bewegung abgeschlossen ist
      ;das heit in der Zeit wo keine Tastatur-eingabe erfolgen kann wird zur Zeit gescrollt
      If move=0 Then
         ;die Scrollroutine move=1    ( Case 1 ) wird aufgerufen
         move = 1
      End If
   End If
End If


;runter key
   If KeyDown(208) Then
      If map(px,py+1) < 3 Then
         If move = 0 Then
         move = 3           
         End If
      End If
   End If




;rauf key
   If KeyDown(200) Then
      If map(px,py-1) < 3 Then
         If move = 0 Then
         move = 4           
         End If
      End If
   End If




;---Trigger Point -------------------------------
   If KeyHit(57) Then
   ;und die spielerposition auf den hebel-tile befindet
   If map(px,py) = 2 Then
   ;dann wird die gesamte karte eingelesen und alle tür-tiles in graß-tiles
   ;umgewandelt
      For y = 0 To 25
         For x = 0 To 25
            If map(x,y) = 4 Then
            map(x,y) = 0
   End If
      Next
         Next
      End If
         End If

Flip
Forever
 

Mistery_

BeitragMi, Feb 06, 2008 10:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Bist du dir ganz Sicher das auch alle Bilder gleich groß sind ?
 

Bassmaster

BeitragMi, Feb 06, 2008 11:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja bin ich mir -.-

Weiss den keiner wie das geht ? Sad

Wtf wieso steht das hier jetzt zweimal.

sry das firmen internet laggt gerade voll rum hab da wohl aussversehen 2 mal geklickt Embarassed

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group