Iso Tiles

Übersicht BlitzMax, BlitzMax NG Codearchiv & Module

Neue Antwort erstellen

Abrexxes

Betreff: Iso Tiles

BeitragFr, Aug 03, 2007 0:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Kleines Sample von Farbfinsternis (bmax) zum Thema Iso-Tiles. Blitzbasic übersetzung von mir.

http://www.abrexxes.huntingsof...tz/iso.zip

Have Fun.

cu

Farbfinsternis

BeitragFr, Aug 03, 2007 8:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Du hast da was falsch kommentiert:

"m.bmp" dient als Dummy-Mauszeiger um ein zweites Bild für "ImagesCollide()" zu haben. Halbtransparent ist Frame 1 aus "it.bmp" und das auch nur um etwas besser zu sehen wo man gerade ein Tile hinsetzt. In der BMax Version mache ich noch ein "SetColor(255,0,0)" um das "Edit-Tile" auch über bestehenden Tiles zu sehen.
Farbfinsternis.tv

Abrexxes

BeitragFr, Aug 03, 2007 11:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Naja guck auf die Uhr, das war eine 180 Sekunden Arbeit. Inzwischen ist das Teil schon in den unendlichen Tiefen meiner Ordner ersoffen. Da ja deine Korrektur hier steht erspare ich mir jetzt den Rest. Es geht ja eh mehr um den Aufbau als darum eine Vorlage für einen Editor zu liefern.

cu

Farbfinsternis

BeitragFr, Aug 03, 2007 17:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich weiß ganz allgemein nicht ob mein Source hier richtig aufgehoben ist. Es fehlt jegliche Grundlage um die Map zu scrollen oder zumindest Fullscreen darzustellen. Bei diesen Punkten bin ich selbst noch am forschen, die Artikel auf gamedev.net taugen leider nichts.
Farbfinsternis.tv

Abrexxes

BeitragDi, Okt 02, 2007 19:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Fette Links zum Thema ISO. Danke an mvBarracuda : http://www.fifengine.de/

History: http://trac.bookofhook.com/boo...evelopment
LinkList Mainpage : http://www-cs-students.stanfor...eprog.html
Hexagon : http://www-cs-students.stanfor...g.html#hex

Have Fun !

Farbfinsternis

BeitragDi, März 18, 2008 20:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Abrexxes hat den Kram leider von seinem Server geschmissen. Da es aber doch noch Interesse an dem Thema zu geben scheint, hier nochmal das Archiv von meinem Server, leider ohne die Additions von Abrexxes:

http://www.colorflow.de/pub/download/isotest.zip
Farbfinsternis.tv

Firstdeathmaker

BeitragDi, Apr 22, 2008 1:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Mal ne Frage, weshalb macht ihr überhaupt eine Kollisionsabfrage per Imagescollide? Das ist doch Rechenzeitintensiv? Um zu schauen wo die Maus in Isokoordinaten ist, braucht ihr doch nur die Formel die für´s Einzeichnen verwendet wird umzustellen?

(Nicht komplett lauffähig)
Code: [AUSKLAPPEN]
Rem
by Firstdeathmaker
2008
www.blitzforum.de

Mit SetupTileSize kann man die Tilegröße einstellen. Oft: 64*32 Pixel oder 32*16 oder so etwas.
Mit Getx0 und Gety0 bekommt man die Koordinaten auf der Tilemap (abhängig von Bildschirmkoordinaten), nützlich für das feststellen der Mausposition z.B.
Mit Getx und Gety bekommt man kartesische Bildschirmkoordinaten (die normalen 2D Koordinaten der BMax Befehle)
End Rem



Type TIsoMap
   
   Global fieldsize:Float[2]' size of the tiles in the game (x0,x1), is also the size of the tiles
   Field dim:Int[]'Dimensions of field
   Field array:TIsoMapField[,]
   
   Field offset:Float[2]
   
   
   Method Init(x0:Int,x1:Int)
      Self.array =  New TMapfield[x0,x1]
      Self.dim = array.Dimensions()
      
      For Local x0i:Int = 0 To x0-1
      For Local x1i:Int = 0 To x1-1
         Self.array[x0i,x1i] = New TIsoMapField
         Self.array[x0i,x1i].Init(x0i,x1i)
      Next
      Next
   End Method
   
   
   Method Getx0:Float(x:Float,y:Float)
      x = (Self.offset[0]-x)
      y = (Self.offset[1]-y)
      
      Return (x/fieldsize[0]-y/fieldsize[1])
   End Method
   
   Method Getx1:Float(x:Float,y:Float)
      x = (Self.offset[0]-x)
      y = (Self.offset[1]-y)
      
      Return ((-x/fieldsize[0])-(y/fieldsize[1]))
   End Method
   
   Method Getx:Float(x0:Float,x1:Float)
      Return (x1 - x0)*fieldsize[0]/2.0 + Self.offset[0]
   End Method
   
   Method Gety:Float(x0:Float,x1:Float,x2:Float)
      Return  (x1 + x0)*fieldsize[1]/2.0 - x2*fieldsize[2] + Self.offset[1]
   End Method
   
   Method SetOffset(x0:Float,x1:Float)
      Self.offset[0] = x0
      Self.offset[1] = x1
   End Method
   
   Method MoveOffset(x0:Float,x1:Float)
      Self.offset[0]:+x0
      Self.offset[1]:+x1
   End Method
   
   Method SetUpTileSize(x0:Int,x1:Int)'Maybe 64*32? (for tiles width=64, height=32)
      Self.fieldsize[0] = x0
      Self.fieldsize[1] = x1
   End Method
   
   Method Draw()
      'Ecken des Bildschirms bestimmen
      Local x0max:Int = GetX0(0,GFX_Y)+1
      Local x0min:Int = GetX0(GFX_X,0)
      
      Local x1max:Int = GetX1(GFX_X,GFX_Y)+1
      Local x1min:Int = GetX1(0,0)
      
      If x0min<0 x0min=0
      If x0max<0 x0max=0
      If x1min<0 x1min=0
      If x1max<0 x1max=0
      
      If x0min>dim[0]-1 x0min=dim[0]-1
      If x0max>dim[0]-1 x0max=dim[0]-1
      If x1min>dim[1]-1 x1min=dim[1]-1
      If x1max>dim[1]-1 x1max=dim[1]-1
   
   

      For Local x1i:Int = x1min To x1max
      For Local x0i:Int = x0min To x0max
         Self.array[x0i,x1i].Draw(GetX(x0i,x1i),GetY(x0i,x1i)) '<- Übergibt kartesische x und y Koordinaten zum einzeichnen.
      Next
      Next
      ?Debug
      DrawText "Mapsize: "+dim[0]+"/"+dim[1],10,22
      ?
   End Method

End Type
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Codearchiv & Module

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group