Tilemap erstellen - wie?

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

CO2

ehemals "SirMO"

Betreff: Tilemap erstellen - wie?

BeitragFr, Mai 14, 2010 14:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
ich weiß das dieses Thema schon zigtausend mal behandelt worden is, aber ich verstehe partout nicht, wie man den Zahlen in einem Data-Befehl den verschiedenen Tiles zuordnet...

würde mich über hilfe freuen
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

D2006

Administrator

BeitragFr, Mai 14, 2010 14:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Und ich hab noch nie verstanden, warum man Anfängern den Data-Befehl für sowas beibringt. Den benutzt man nie und schon gar nicht für Tilemaps.

Welche Zahl bei einer Tilemap für welches Tile steht, bestimmst im Grunde genommen du. Du kannst zum Beispiel festlegen, dass 1 Wiese, 2 Wasser und 3 Felsen ist. Beim Zeichnen der Tilemap gehst du dann alle Felder durch und entscheidest anhand der Zahl, welches Bild gezeichnet werden soll.
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard
Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium
Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2
 

CO2

ehemals "SirMO"

BeitragFr, Mai 14, 2010 14:45
Antworten mit Zitat
Benutzer-Profile anzeigen
und das ist das problem... ich habe jtz 27 unterschiedliche tiles, wie bestimme ich, das die zahl 1 z.B.: das 1. Tile zeichnet. Oder die Zahl 25 das 25. tile...?
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti
 

Chaos Melone

BeitragFr, Mai 14, 2010 14:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Du kannst das ganz einfach mit if abfragen^^

BlitzBasic: [AUSKLAPPEN]

If tile(x,y)=1 Then DrawImage gras,x*tilegroesse,y*teilgroesse
;Also hier mal angenommen du hättest ein Dim-Feld und dein Teil 1 heisst gras^^



Das ist nur wie ich es machen würde, hoffe du verstehst es
 

CO2

ehemals "SirMO"

BeitragFr, Mai 14, 2010 14:55
Antworten mit Zitat
Benutzer-Profile anzeigen
also muss ich dann 27 if-Schleifen machen?
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti
 

Chaos Melone

BeitragFr, Mai 14, 2010 15:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja du könntest eine For-Next Schleife machen, die jedes Teil abfragt und in dieser Schleife dann 27x If...
Du könntest statt mit If auch mit

Select/Case arbeiten.
 

Matthias

BeitragFr, Mai 14, 2010 15:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Hay. Du kannst auch deine Tile als Animationsstrip speichern. Alle Tiles nebeneinander. Sie müssen dann aber alle gleich groß sein.
Mit LoadAnimImage kanst du sie dann laden.

Dann kannst du sie zB so Anzeigen.

DrawImage Tile,x*tilegroesse,y*teilgroesse,Tile(X,Y)

Gruß Matz.
 

CO2

ehemals "SirMO"

BeitragFr, Mai 14, 2010 15:20
Antworten mit Zitat
Benutzer-Profile anzeigen
ok, danke für die antworten, ich glaube ich habs jtz kapiert

1 frage noch:

Muss man die Tilemap vor oder in der Repeat-Schleife erstellen?
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

Hubsi

BeitragFr, Mai 14, 2010 16:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Erstellen natürlich vor der Hauptschleife. Die Bilder werden in ein Array geladen oder alternativ als AnimImage, was aber unter Umständen Probelem bereiten kann. Select und If's die Hülle und die Fülle ist alles sehr "abenteuerlich" wenn mans mal sachte ausdrücken will Very Happy
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

M0rgenstern

BeitragFr, Mai 14, 2010 17:21
Antworten mit Zitat
Benutzer-Profile anzeigen
@Chaos Melone:
Bitte erzähl nicht sowas.
If Abfragen für eine Tilemap... Das ist ja in etwa so schlimm wie die Sache mit Data.

@Marius94:
Das mit dem LoadanimImage stimmt schon. Am Besten die Tiles in einem Animationsbild speichern und mit loadanimimage laden.
Und dann brauchst du auch keine If-Abfragen mehr.
Du nimmst, wenn du die Tilemap malst, bei Drawimage als Bild einfach dein Tilestrip und als Frame den Wert den deine Map an dieser Stelle hat.

Als Beispiel.
Beispielsweise du hast ein Wassertile im Animationsbild an Stelle 5. Und sagen wir dein Tilemaparray hat an (20/15) den Wert 5 dann wird an dieser Stelle das Wassertile gemalt.

Im Code sieht das dann so aus:
BlitzBasic: [AUSKLAPPEN]
For ix = 0 To (mapwidth-1)
For iy = 0 To (mapheight-1)

DrawImage(Tiles, ix*tilesize,iy*tilesize,(maparray(ix,iy))

Next
Next


So funktioniert das in 5 Zeilen. Ohne Select/Case und ohne If.
Natürlich musst du die Variablennamen entsprechend anpassen.

Lg, M0rgenstern
 

CO2

ehemals "SirMO"

BeitragFr, Mai 14, 2010 20:35
Antworten mit Zitat
Benutzer-Profile anzeigen
ok thx nochmal... ich versuche mein glück Very Happy
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group