tilemap frage

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

snörkl

Betreff: tilemap frage

BeitragDo, Nov 23, 2006 18:59
Antworten mit Zitat
Benutzer-Profile anzeigen
also, ich hab das mit der tilemap jetzt soweit hingekriegt xD
erstmal der code,gleich mein problem:

include-code
Code: [AUSKLAPPEN]
; ---------- Generated by Tile Studio ----------

Const LAYER_Tiles1_Level1 = (0 Shl 8) + 0

; get map width (tiles)
Function MapWidth (map)
  Select map
    Case LAYER_Tiles1_Level1
      Return 20
  End Select
End Function

; get map height (tiles)
Function MapHeight (map)
  Select map
    Case LAYER_Tiles1_Level1
      Return 15
  End Select
End Function

; get tile width (pixels)
Function TileWidth (map)
  Select map
    Case LAYER_Tiles1_Level1
      Return 32
  End Select
End Function

; get tile height (pixels)
Function TileHeight (map)
  Select map
    Case LAYER_Tiles1_Level1
      Return 32
  End Select
End Function


Global Tiles1Bitmap = LoadAnimImage ("graphics\Tiles1.bmp", 32, 32, 0, 8)
MaskImage Tiles1Bitmap, 255, 0, 255

Dim Tiles1Level1Map (15, 20)
Restore Tiles1Level1MapData
For y = 0 To 15 - 1
  For x = 0 To 20 - 1
    Read Tiles1Level1Map (y, x)
  Next
Next

.Tiles1Level1MapData
Data   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
Data   0,  0
Data   0,  1,  2,  2,  2,  3,  2,  2,  2,  3,  2,  4,  0,  0,  0,  0,  0,  0
Data   0,  0
Data   0,  0,  0,  0,  0,  5,  0,  0,  0,  5,  0,  0,  0,  0,  0,  0,  0,  0
Data   0,  0
Data   0,  0,  0,  0,  0,  6,  7,  0,  1,  8,  0,  0,  0,  0,  0,  1,  2,  2
Data   2,  4
Data   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
Data   0,  0
Data   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
Data   0,  0
Data   0,  0,  1,  2,  2,  2,  2,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
Data   0,  0
Data   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
Data   0,  0
Data   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  2,  2,  2,  2,  4,  0,  0
Data   0,  0
Data   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
Data   0,  0
Data   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
Data   0,  0
Data   0,  0,  1,  2,  2,  2,  2,  2,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0
Data   0,  0
Data   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
Data   0,  0
Data   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  2,  2,  2,  4
Data   0,  0
Data   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
Data   0,  0

Dim Tiles1Level1BoundMap (15, 20)
Restore Tiles1Level1BoundMapData
For y = 0 To 15 - 1
  For x = 0 To 20 - 1
    Read Tiles1Level1BoundMap (y, x)
  Next
Next

; tile size: w = 32, h = 32
.Tiles1Level1BoundMapData
Data  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
Data  0, 7, 5, 5, 5, 0, 5, 5, 5, 0, 5, 13, 0, 0, 0, 0, 0, 0, 0, 0
Data  0, 0, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
Data  0, 0, 0, 0, 0, 6, 13, 0, 7, 12, 0, 0, 0, 0, 0, 7, 5, 5, 5, 13
Data  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
Data  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
Data  0, 0, 7, 5, 5, 5, 5, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
Data  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
Data  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 5, 5, 5, 5, 13, 0, 0, 0, 0
Data  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
Data  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
Data  0, 0, 7, 5, 5, 5, 5, 5, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
Data  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
Data  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 5, 5, 5, 13, 0, 0
Data  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0




Dim Tiles1Sequences$ (0 + 1)

; Tiles1Level1Layer
; movement (x, y) = (x = x, y = y)



; get tile number at position (x,y)
Function GetTile (map, x, y)
  Select map
    Case LAYER_Tiles1_Level1
      Return Tiles1Level1Map (y, x) - 1
  End Select
End Function

; get bounds/map code at position (x,y)
Function GetBounds (map, x, y)
  Select map
    Case LAYER_Tiles1_Level1
      Return Tiles1Level1BoundMap (y, x)
  End Select
End Function

Function DrawTile (map, x, y, tile)
  Select map
    Case LAYER_Tiles1_Level1
      DrawImage Tiles1Bitmap, x, y, tile
  End Select
End Function

; ---------- end of generated file ----------


und dann noch der code mit dem ichs anzeigen will:
Code: [AUSKLAPPEN]
Graphics 640,480
Include "Strichmannlevel1_include.bb"
m_width= MapWidth(LAYER_Tiles1_Level1)
m_height= MapHeight(LAYER_Tiles1_Level1)
T_width= TileWidth(LAYER_Tiles1_Level1)
T_Height= TileHeight(Layer_Tiles1_Level1)

Repeat
drawmap()

Until KeyHit(1)
End

Function drawmap()
For y = 0 To m_height
      For x = 0 To m_width
drawtile(LAYER_Tiles1_Level1,(x*T_width),(y*T_height),Tiles1Level1Map (y, x))

Next
    Next
End Function


Nun mein problem. Wenn ich das Programm ausführe, wird mein tile nur an den koordinaten 0,0 und nur ein einziges angezeigt. Ich möchte aber natürlich mehrere anzeigen xD. Vielleicht kann mir jemand helfen, indem er mein problem aufklärt

mfg
Snörkl

BladeRunner

Moderator

BeitragDo, Nov 23, 2006 19:17
Antworten mit Zitat
Benutzer-Profile anzeigen
mach deine Vars Global oder übergib sie an die Funktion
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
 

snörkl

BeitragDo, Nov 23, 2006 19:44
Antworten mit Zitat
Benutzer-Profile anzeigen
an die funktion übergeben?

BladeRunner

Moderator

BeitragDo, Nov 23, 2006 19:47
Antworten mit Zitat
Benutzer-Profile anzeigen
nennt sich 'Parameter'.

function TuDies(das)
print das
end function

das ist der Parameter von TuDies() und wird an sie übergeben:

TuDies(7)
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
 

snörkl

BeitragDo, Nov 23, 2006 19:53
Antworten mit Zitat
Benutzer-Profile anzeigen
jetzt zeigt er leider an, image frame out of range Sad(((

kannst Du oder jemand anderes mir da noch weiterhelfen?

mfg
Snörkl
 

Dreamora

BeitragDo, Nov 23, 2006 19:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Das liegt daran, dass du ein Bild mit 8 Frames lädst, diese gehen von 0-7
Deine Mapdaten haben jedoch ein 8, was dann natürlich dazu führt, dass er auf ein nicht existierendes Frame des Bildes zugreift.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

snörkl

BeitragDo, Nov 23, 2006 21:18
Antworten mit Zitat
Benutzer-Profile anzeigen
sorry wegen doppelpost, kann man posts irgendwie löschen, würd ich nämlich dann machen
  • Zuletzt bearbeitet von snörkl am Sa, Nov 25, 2006 21:35, insgesamt einmal bearbeitet
 

snörkl

BeitragFr, Nov 24, 2006 15:16
Antworten mit Zitat
Benutzer-Profile anzeigen
ok- wenn ich nun Tile1 als hintergrund haben möchte, also in tilestudio auf die freien flächen als hintergrund zeichne, so wird später im programm tile2 als hintergrund gezeichnet. Das ist immer so, egal was ich mache Sad((( Was soll ich nur tun?
 

snörkl

BeitragSa, Nov 25, 2006 21:34
Antworten mit Zitat
Benutzer-Profile anzeigen
wollte jetzt noch mal darauf hinweisen, dass ich ne neue frage habe^^

DerHase

BeitragSa, Nov 25, 2006 22:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Snörkel warum entschuldigst Du Dich für den Doppelpost, wenn ein Trippelpost folgt. Man kann die Posts editieren. Und ThreadPushing ist sehr ungern gesehn, wenn Dir jemand helfen kann/mag wird er das auch tun.
Ich kann Dir eigentlich nur raten, nur solchen Code zu verwenden den Du verstehst. Ich glaube Du bist einfach noch nicht reif für Dein Vorhaben.
Play Satyr!
 

snörkl

BeitragSa, Nov 25, 2006 23:01
Antworten mit Zitat
Benutzer-Profile anzeigen
das liegt aber nicht an mir, sondern daran, dass tilestudio den code so generiert, dass er den ersten frame als hintergrund nimmt . und ich habe doch grade gefragt, wie ich threads löschen kann

d-bug

BeitragSa, Nov 25, 2006 23:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Du kannst Threads nicht löschen! Aber du kannst dir mal diesen, fiesen Button merken : (user posted image). Du findest ihn oben rechts, in der Titelzeile deines Posts. Damit kannst du deine eigenen Posts bearbeiten.

Beim nächsten Doppel- oder Tripplepost werde ich deinen Thread schließen.

cheers
 

snörkl

BeitragSo, Nov 26, 2006 10:45
Antworten mit Zitat
Benutzer-Profile anzeigen
ok, danke^^ -- jetzt mal zurück zu meinem problem... liegt das denn an tilestudio oder an mir?
 

snörkl

BeitragDi, Nov 28, 2006 21:14
Antworten mit Zitat
Benutzer-Profile anzeigen
JAAA; GEWONNEN!!! TILEMAP VS ICH 0:1 XD

bin so glüücklich
endlich hab ichs geschafft Very Happy

und zwar musst ich meinen tiles nur eine transparenz (255,255,255 rgb) geben, dann gehts^^. Hab zwar keine ahnung warum, aber es klappt!

edit^^: falsches thema xD

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group