[B2D] Simple Tile-Map Engine

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

Chester

Betreff: [B2D] Simple Tile-Map Engine

BeitragDo, Jun 02, 2005 18:07
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Smile

Pfeiltasten + Maus sind erforderlich!
MfG
ChEsTeR
  • Zuletzt bearbeitet von Chester am Di, März 21, 2006 17:43, insgesamt 3-mal bearbeitet

Artemis

BeitragDo, Jun 02, 2005 18:13
Antworten mit Zitat
Benutzer-Profile anzeigen
cool!

maximilian

BeitragFr, Jun 03, 2005 23:15
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragFr, Jun 03, 2005 23:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Du kritisierst wohl auch jeden, gell?
Mit besten Grüßen verbleibend,

Claudius

Horst der Biber

BeitragSa, Jun 04, 2005 18:34
Antworten mit Zitat
Benutzer-Profile anzeigen
du solltest das noch n wenig erweitern mit tile palette, speicher und ladefunktion...

Devils Child

BeitragDi, Jun 14, 2005 15:43
Antworten mit Zitat
Benutzer-Profile anzeigen
LordChaos hat Folgendes geschrieben:
Das ist so absolut 0 dynmanisch...

2 Worte: Types, Banks

LordChaos
@lord chaos: lass deine streptokokken zuhause(nix für ungut Wink )
*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

BeitragDi, Jun 14, 2005 18:37
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDi, Jun 14, 2005 18:42
Antworten mit Zitat
Benutzer-Profile anzeigen
du elendiger lord-chaos-recht-geber Laughing
*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

BeitragDi, Jun 14, 2005 20:30
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMi, Jun 15, 2005 16:33
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMi, Jun 15, 2005 17:11
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMi, Jun 15, 2005 18:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Banks!
Variety is the spice of life. One day ignore people, next day annoy them.
 

furbolg

BeitragMi, Jun 15, 2005 22:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Nö keine Banks ...

Dim Bla(0)

Function Create(Blupp%)
Dim Bla(Blupp)
end function


sowas in der Richtung.

maximilian

BeitragMi, Jun 15, 2005 22:29
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMi, Jun 15, 2005 22:56
Antworten mit Zitat
Benutzer-Profile anzeigen
-aus Sicherheitsgründen gelöscht- Diese Information ist mit Ihrer Sicherheitsfreigabe leider nicht erhältlich, Bürger.

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group