Tiles werden nicht angezeigt

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Budikotch

Betreff: Tiles werden nicht angezeigt

BeitragMo, Dez 20, 2010 18:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey Leute.

Ich hab das Problem,dass die Tiles nicht angezeigt werden oder höchstens nur 1 Tile.
Ich rätsel hier rum woran das liegen könnte.Ich hab mir die Hilfen angeschaut aber dort find ich kein Mittel das zu beheben.
Es könnte vielleicht daran liegen,dass ich den Abstand nicht richtig gezeichnet hab mit Paint.net.

Hier mein Code.Wenn nötig lad ich noch die Files hoch.

Code: [AUSKLAPPEN]
AppTitle "Test"

Graphics 640,480,16,2

SetBuffer BackBuffer()
timer = CreateTimer(60)


Spieler = LoadImage("gfx\Spieler.png")
Tiles   = LoadAnimImage("gfx\Tilemap1.png",32,32,0,3)

Dim map(20,15)

Restore mapdata
For y = 0 To 14
   For x = 0 To 19
      Read map(x,y)
   Next
Next

Global Spieler_pos_x = 320
Global Spieler_pos_y = 240

px = 10
py =  7

Repeat
   
   
   Cls
   
   
   
   ;Map zeichnen
   For y = 0 To 14
      For x = 0 To 19
         If map(x,y) = 1 Then
            DrawImage Tiles, X*32, y*32,0
         EndIf
      Next
   Next
   
   
   
    ;Bewegungen
   
   If KeyDown(200) = 1 Then Spieler_pos_y = Spieler_pos_y - 2
   If KeyDown(208) = 1 Then Spieler_pos_y = Spieler_pos_y + 2
   If KeyDown(205) = 1 Then Spieler_pos_x = Spieler_pos_x + 2
   If KeyDown(203) = 1 Then Spieler_pos_x = Spieler_pos_x - 2
   
   
    ;Spieler zeichnen
   DrawImage Spieler, Spieler_pos_x,Spieler_pos_y
   
   
   
   WaitTimer(timer)
   Flip 0
Until KeyHit(1)
End

.mapdata
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0
Data 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0
Data 0,1,1,2,2,1,1,1,1,1,1,1,1,3,3,1,1,1,1,0
Data 0,1,1,2,2,1,1,1,1,1,1,1,1,3,3,1,1,1,1,0
Data 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0
Data 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0
Data 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0
Data 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0
Data 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0
Data 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0
Data 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0
Data 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0
Data 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

Xeres

Moderator

BeitragMo, Dez 20, 2010 18:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Du lädst ein animiertes Bild, aber zeichnest immer nur einen Frame ein, und auch das nur, wenn der Karteninhalt 1 ist.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Hubsi

BeitragMo, Dez 20, 2010 18:55
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzBasic: [AUSKLAPPEN]
   ;Map zeichnen
For y = 0 To 14
For x = 0 To 19
If map(x,y) = 1 Then
DrawImage Tiles, X*32, y*32,0 ; <--- Das muss sich ja beissen Wink
EndIf
Next
Next


Du siehst jetzt den Fehler? Mr. Green
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

Budikotch

BeitragMo, Dez 20, 2010 19:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Ehrlich gesagt seh ich da jetzt grad,dass das x in der Array beim Zeichnen groß ist.
Ich hab vorhin noch nachgeguckt und da steht in der Hilfe,dass ich bei Animationsbilder mit DrawImage die Frame ab 0 beginnt.

Ich versteh das garnicht Embarassed

Hubsi

BeitragMo, Dez 20, 2010 19:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Blitz ist das wurscht ob du groß oder klein schreibst. Der Fehler ist die 0. Du hast es ja schon schön gesagt, die Animation beginnt bei 0. Das heißt ja nicht das Du immer den ersten Frame zeichnen willst Wink
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

Budikotch

BeitragMo, Dez 20, 2010 19:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Auch wenn ich es weglasse ändert sich nichts dabei.
Kann es daran liegen,dass ich die Tiles falsch gezeichnet hab mit Paint ^^ ?

Hubsi

BeitragMo, Dez 20, 2010 19:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok, der Wink mit dem Codepfahl:

BlitzBasic: [AUSKLAPPEN]
   ;Map zeichnen
For y = 0 To 14
For x = 0 To 19
If map(x,y) = 1 Then
DrawImage Tiles, X*32, y*32,map(x,y) ; <---- Hier geändert
EndIf
Next
Next


Du darfst jetzt Deine unermessliche Dankbarkeit ausdrücken indem Du mir erklärst warum das jetz funktioniert (Sonst hast Du es nicht verstanden und macht für Dich keinen Sinn) Mr. Green
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

Budikotch

BeitragMo, Dez 20, 2010 19:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Das würde ich zugern machen,aber das zeigt leider nur 1 Tile an undzwar die bei Data mit 1 eingetragen sind.
Sad

Hubsi

BeitragMo, Dez 20, 2010 19:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Nichts anderes hast Du auch nicht erwartet? Very Happy Trag in Deiner Map die Tilenummer ein die Du da auch sehen willst.

Edit: Sorry, vergessen: Und nimm das If raus.
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

Budikotch

BeitragMo, Dez 20, 2010 19:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Oh mann ich versteh das nicht. Very Happy
Ich will ja mehr als 1 Tile anzeigen lassen.
Ich hab in der Tilemap 4 Tiles.

0 Stein
1 Gras
2 Wasser
3 Lava

Und wenn ich das If rausnehmen,erwartet das Programm noch ein Next.
Ich komm mir echt dämlich vor gerade ^^

Hubsi

BeitragMo, Dez 20, 2010 19:32
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzBasic: [AUSKLAPPEN]
   ;Map zeichnen
For y = 0 To 14
For x = 0 To 19
DrawImage Tiles, X*32, y*32,map(x,y) ; <---- Hier geändert
Next
Next


Jetz verstanden? Mr. Green
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

Lapiz

BeitragMo, Dez 20, 2010 19:32
Antworten mit Zitat
Benutzer-Profile anzeigen
ich glaub du brauchst das so:
Code: [AUSKLAPPEN]
   ;Map zeichnen
   For y = 0 To 14
      For x = 0 To 19
         ;If map(x,y) = 1 Then   --raus nehmen! Hier sagst du ja das NUR das Tile1 gezeichnet werden soll
            DrawImage Tiles, X*32, y*32,map(x,y) ; <---- Hier geändert
         ;EndIf  --das entsprechende Endif natürlich auch raus
      Next
   Next



sorry warst schneller
 

Budikotch

BeitragMo, Dez 20, 2010 19:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Oh.Ich dachte das:

If map(x,y) = 1

wäre dafür da um die Map anzuzeigen. Embarassed

Jetzt funktionierts ja.

Vielen Dank Very Happy

Hubsi

BeitragMo, Dez 20, 2010 19:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich kann Dir Robs BB-Kurs nur wärmstens empfehlen:

http://robsite.net/files/0000/...orials.zip

Gibts leider nur im Paket mit anderem Kram dem Du jetzt noch nicht gewachsen bist und ist von daher recht groß, aber allemal wert.

Edit: Da BladeRunner darauf hingewiesen hat: https://www.blitzforum.de/upload/file.php?id=3907 (was man im Laufe der zeit nicht alles vergessen kann Mr. Green)
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
  • Zuletzt bearbeitet von Hubsi am Mo, Dez 20, 2010 20:46, insgesamt 2-mal bearbeitet
 

Budikotch

BeitragMo, Dez 20, 2010 19:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab mir schon alles mögliche über Blitz Basic besorgt Very Happy
Das Problem lag daran,dass ich mal wieder nicht aufmerksam aufgepasst habe Rolling Eyes

BladeRunner

Moderator

BeitragMo, Dez 20, 2010 20:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich möchte nochmal drauf hinweisen dass alle Robsitetutorials hier in der Beginners verlinkt sind, im gepinnten thread, und noch dazu hier gelagert, die funktionieren also auch wenn die Robsite mal down ist Wink
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

Budikotch

BeitragMo, Dez 20, 2010 20:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab noch ne Frage.Passt aber nicht zum Thema und ich möchte nicht ein neuen Thread aufmachen Very Happy

Ist der Code für eine Kollision so richtig ?

Code: [AUSKLAPPEN]
   If KeyDown(200) And map(x,y) = 0 Then
      ; ...
   End If


= 0 soll für die Mauer stehen.

Hubsi

BeitragMo, Dez 20, 2010 20:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein. Ist jetzt auch nicht böse gemeint, aber ich denke Du bist noch nicht so weit eine Tilemap anzupacken. Man bekommt (zurecht?) das Gefühl Du verstehst nicht wirklich was Du da eigentlich zusammentippst. Beschäftige Dich erstmal mit den Grundlagen, sonst hast Du nicht viel Spaß an dem Hobby Wink
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

Budikotch

BeitragMo, Dez 20, 2010 20:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Doch doch.
Das mit dem Anzeigefehler hab ich falsch gelernt und das mit der Kollision will ich ja noch lernen.
Die Grundlagen habe ich soweit schon drauf.

Hubsi

BeitragMo, Dez 20, 2010 21:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Nun gut. Dann ist es nicht schwer das zu analysieren:

BlitzBasic: [AUSKLAPPEN]
   If KeyDown(200) And map(x,y) = 0 Then
; ...
End If


Der Computer macht also folgendes: Wenn Cursor nach oben gedrückt und der Wert im Array map an Position x,y (woher x und y auch immer ihre Werte haben mögen, der eigentlich entschiedende Punkt) 0 ist dann führe den Code im Konstrukt aus. Ob die Kollision nun also funktioniert hängt davon ab wie x und y an ihren Wert kommen. Das weißt bis jetzt nur Du selbst Mr. Green
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group