GLBasic forum

Other languages => GLBasic - de => Topic started by: Shogun on 2008-Jun-29

Title: Tiles einer Map
Post by: Shogun on 2008-Jun-29
Hallo alle zusammen,

habe eine Frage zu Tiles. Welche Tile-Größe bevorzugt ihr? Muss ich wirklich jedes einzelne Tile passent zeichnen? Kann man das mit einem Editor realisieren? Wenn ja hat da jemand eine Empfehlung? Muss dann ja auch in GLBasic umgesetzt werden.

Würde mich über jede Hilfe freuen.

Gruß Markus
Title: Re: Tiles einer Map
Post by: Schranz0r on 2008-Jun-29
kommt auf dein Spiel drauf an was du machen willst.
Normal nimmt man 32 x 32.
Editor kannst du dir selber schreiben, weil so kannst du alles mit einbauen was du für dein Spiel brauchst ( Enemys, Coins, Startpunkt, Ziel usw).
Title: Re: Tiles einer Map
Post by: Shogun on 2008-Jun-29
das wäre glaube ich noch ne Nummer zu groß. Ich bräuchte es nur um die Map zu zeichnen, alles andere würde ich ohne machen.
Wäre schön wenn es dafür was gibt.
Title: Re: Tiles einer Map
Post by: Schranz0r on 2008-Jun-29
Nix für GLB, solltest du schon selber machen.
Title: Re: Tiles einer Map
Post by: D2O on 2008-Jun-30
Hi,
schau Dir das mal an.
http://www.glbasic.com/forum/index.php?topic=1507.0 (http://www.glbasic.com/forum/index.php?topic=1507.0)
Es nutzt zwar nicht alle Features von Tiled aber für eine einfache Map reicht das.

Was noch sehr einfach ist ist das hier :)

Einfacher Tile Editor,
einfacher Loader.
Genutzt wird hier nur die *.smp Datei,
die *.bmd Datei wird noch nicht beachtet.

Denn Editor gibts hier:
http://devlinslab.blogspot.com/ (http://devlinslab.blogspot.com/)

Code und beispiel Gfx gibts hier:
http://www.deuteriumoxid.com/glbasic/Smp_loader.zip (http://www.deuteriumoxid.com/glbasic/Smp_loader.zip)

Code (glbasic) Select

// --------------------------------- //
// Project: Smp_loader
// Start: Monday, June 30, 2008
// IDE Version: 5.308




GLOBAL level AS Tsmp
level = smp_loader("test.smp")

LOADANIM "gfx.png",0,32,32


WHILE TRUE



FOR j = 0 TO level.hight-1
FOR i = 0 TO level.width-1

IF level.map[i][j] = 1 THEN DRAWANIM 0, 1,i*level.tilex,j*level.tiley
IF level.map[i][j] = 2 THEN DRAWANIM 0, 2,i*level.tilex,j*level.tiley
IF level.map[i][j] = 3 THEN DRAWANIM 0, 3,i*level.tilex,j*level.tiley
IF level.map[i][j] = 4 THEN DRAWANIM 0, 4,i*level.tilex,j*level.tiley

NEXT
NEXT





SHOWSCREEN
WEND








FUNCTION smp_loader AS Tsmp : l_map$

LOCAL l_temp AS Tsmp
LOCAL l_ctrl
LOCAL l_get
LOCAL l_width, l_hight
LOCAL l_x,l_y

l_temp.name$ = l_map$  // Name übergeben


l_ctrl = OPENFILE(0,l_map$,TRUE) // Überprüfung ob die map vorhanden ist

IF l_ctrl = TRUE

// FOR i = 0 TO 6   /// ersten 7 bytes sind für den Editornamen
// READBYTE 0,l_temp.chr[i] //l_get
// NEXT

READSTR 0,l_temp.version$,7 /// ersten 7 bytes sind für den Editornamen

READBYTE 0,l_temp.sys //l_get

IF CHR$(l_temp.sys) = "B"   //B ist für byte, W für word

READBYTE 0,l_temp.width //l_width
READBYTE 0,l_temp.hight //l_hight

REDIM l_temp.map[l_temp.width][l_temp.hight] //map[l_width][l_hight]
// mapsize[0] = l_width-1
// mapsize[1] = l_hight-1

ELSE
READWORD 0,l_temp.width //l_width
READWORD 0,l_temp.hight //l_hight

REDIM l_temp.map[l_temp.width][l_temp.hight]

// mapsize[0] = l_width-1
// mapsize[1] = l_hight-1
ENDIF

READBYTE 0,l_temp.tilex //tile[0]
READBYTE 0,l_temp.tiley //tile[1]


FOR l_y = 0 TO l_temp.hight -1 //l_hight-1
FOR l_x = 0 TO l_temp.width -1 // l_width-1


READBYTE 0,l_temp.map[l_x][l_y] //map[l_x][l_y]

NEXT
NEXT



ELSE
PRINT "Error: No find file "+l_map$,10,10
PRINT "Push any key",10,30
SHOWSCREEN
KEYWAIT

ENDIF
CLOSEFILE 0



RETURN l_temp
ENDFUNCTION

TYPE Tsmp
name$ //Name der map
version$ // Aufname der ersten 7 bytes für den Editornamen
tilex // Tilegrösse
tiley
width // Map grösse (Tile einheiten)
hight
sys // Byte oder Word grössen
// chr[7] // Aufname der ersten 7 bytes für den Editornamen
map[0][0] // Mapdaten
ENDTYPE