[B2D] Simple Tile-Map Engine
Übersicht

![]() |
ChesterBetreff: [B2D] Simple Tile-Map Engine |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi@all
Für alle Anfänger die eine Dynamische Tile-Map Engine benötigen hier mal ein Grundgerüst: Code: [AUSKLAPPEN] Const Graphics_width% = 800 ;Auflösung Const Graphics_height%= 600 Const tile_x% = 128 ; Tile Größe Const tile_y% = 128 Global map_x% = 50 ; Map Breite Global map_y% = 50 ; Map Länge Global viewx%,viewy% ; scroll Variablen Dim map(map_x%,map_y%) ; Map Graphics Graphics_width%,graphics_height%,32,2 SetBuffer BackBuffer() Global maus2 = CreateImage(2,2) ; maus SetBuffer ImageBuffer(maus2) ; maus malen Plot 1,1 SetBuffer BackBuffer() Repeat Cls ;################### Raster Color 255,255,255 For y = 0 To tile_y%*map_y% Step tile_y% Line 0+viewx%,y+viewy%,tile_x%*map_x%+viewx%,y+viewy% ;Y-Linien malen Next For x = 0 To tile_x%*map_x% Step tile_x% Line x+viewx%,0+viewy%,x+viewx%,tile_y%*map_y%+viewy% ;X-Linien malen Next ;################### Maus Markierung For x = 0 To map_x% For y = 0 To map_y% kolli = ImageRectCollide(maus2,MouseX(),MouseY(),0,x*tile_x%+viewx%,y*tile_y%+viewy%,tile_x%+1,tile_y%+1) ; auf Kollision prüfen Color 200,0,0 If kolli = 1 Then Rect x*tile_x%+viewx%,y*tile_y%+viewy%,tile_x%+1,tile_y%+1,0 ; Rotes Viereck malen Color 0,0,0 EndIf Next Next ;####################### If KeyDown(200) Then viewy%=viewy%+5 ;Scrollen If KeyDown(208) Then viewy%=viewy%-5 If KeyDown(203) Then viewx%=viewx%+5 If KeyDown(205) Then viewx%=viewx%-5 Flip FlushKeys() Until KeyHit(1) EndGraphics : End Spielt damit herum, nimmt die einzelnen Schleifen auseinander und lernt zu verstehen ![]() Pfeiltasten + Maus sind erforderlich! MfG ChEsTeR |
||
- Zuletzt bearbeitet von Chester am Di, März 21, 2006 17:43, insgesamt 3-mal bearbeitet
![]() |
Artemis |
![]() Antworten mit Zitat ![]() |
---|---|---|
cool! | ||
![]() |
maximilian |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das ist so absolut 0 dynmanisch...
2 Worte: Types, Banks LordChaos |
||
Variety is the spice of life. One day ignore people, next day annoy them. |
Claud |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Du kritisierst wohl auch jeden, gell? | ||
Mit besten Grüßen verbleibend,
Claudius |
![]() |
Horst der Biber |
![]() Antworten mit Zitat ![]() |
---|---|---|
du solltest das noch n wenig erweitern mit tile palette, speicher und ladefunktion... | ||
![]() |
Devils Child |
![]() Antworten mit Zitat ![]() |
---|---|---|
LordChaos hat Folgendes geschrieben: Das ist so absolut 0 dynmanisch...
@lord chaos: lass deine streptokokken zuhause(nix für ungut 2 Worte: Types, Banks LordChaos ![]() |
||
*X-Ware Member*
Mission to Hell[Ego-Shooter] Hier Vollversion runterladen: http://patrick-sch.de/spiele/m...ersion.zip ich antworte auf jede PN |
![]() |
Artemis |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich muss LordChaos Recht geben!!
ChEsTeR sagte, dass es eine dynamische Tile-Map Engine sei, was sie Dim-bedingt nur so ist, dass man sie am Programm-Start festlegen kann wie groß sie ist! Während des Programms wäre nur mit Datenverlust möglich! Trotzdem wie oben schon geschrieben bestimmt ein gutes "TUT"!! |
||
![]() |
Devils Child |
![]() Antworten mit Zitat ![]() |
---|---|---|
du elendiger lord-chaos-recht-geber ![]() |
||
*X-Ware Member*
Mission to Hell[Ego-Shooter] Hier Vollversion runterladen: http://patrick-sch.de/spiele/m...ersion.zip ich antworte auf jede PN |
![]() |
Spikespine |
![]() Antworten mit Zitat ![]() |
---|---|---|
Kleiner Fehler:
BlitzBasic: [AUSKLAPPEN] kolli = ImageRectCollide(maus2,MouseX(),MouseY(),0,x*tile_x%+viewx%,y*tile_y%+viewy%,tile_x%+1,tile_y%+1) Das bild maus2 ist 2x2 Pixel groß. So können zwei Felder aktiv sein! ich empfehle BlitzBasic: [AUSKLAPPEN] RectsOverlap(MouseX(),MouseY(),1,1,...) |
||
Athlon 64 3700+ | 1024 MB RAM | GeForce 7900 GT | Blitz2D, Blitz3D, BlitzPlus, BlitzMax |
![]() |
maximilian |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich arbeite gerade an einer Iso-Engine. Hier mal ein Beispiel, wie eine dynamische Tileengine aussehen würde (so ähnlich handelt sich auch mein Dingsi):
Zitat: Include "tileengine.bb" Graphics 640, 480, 16, 2 SetBuffer BackBuffer() ;Engine starten, Tilegröße angeben TE_Init(16, 16) ;15 Tiles TE_LoadTileset("tielset.bmp", 15) ;Maps laden/erstellen map1 = TE_LoadMap("bla1.map") map2 = TE_LoadMap("bla2.map") tmp1 = TE_CreateMap(100, 100, 10) ;Breite/Höhe/Layer While Not KeyHit(1) TE_DrawMap(map1) TE_DrawMap(map2) If KeyHit(bla) Then tile = 0 ... TE_SetTile(tmp1, TE_MapX(MouseX()), TE_MapY(MouseY()), tile) Flip Wend TE_Exit() End Sowas in der Art wäre wirklich dynamisch. Nur so zur Demonstration. ^^ LordChaos |
||
Variety is the spice of life. One day ignore people, next day annoy them. |
![]() |
Chester |
![]() Antworten mit Zitat ![]() |
---|---|---|
so wollt ichs ja nochma neu hier posten, allerdings kriege ich nicht gebacken, das Dim Feld über eine Function zu erzeugen(da das gar nicht möglich ist). Deshalb würds mich mal intressieren wie du das gemachst.
Mfg ChEsTeR |
||
![]() |
maximilian |
![]() Antworten mit Zitat ![]() |
---|---|---|
Banks! | ||
Variety is the spice of life. One day ignore people, next day annoy them. |
furbolg |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Nö keine Banks ...
Dim Bla(0) Function Create(Blupp%) Dim Bla(Blupp) end function sowas in der Richtung. |
||
![]() |
maximilian |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das ist NICHT dynamisch, weil du nur eine einzige Map handeln kannst. Sowas wie ich oben geschreiben habe, wird so nicht möglich sein.
Ich habe einen Map-Type indem sich Name, Größe und die Bank selber befinden. LordChaos |
||
Variety is the spice of life. One day ignore people, next day annoy them. |
lettorTrepuS |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
-aus Sicherheitsgründen gelöscht- Diese Information ist mit Ihrer Sicherheitsfreigabe leider nicht erhältlich, Bürger. | ||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group