Farbpixel in Tiles umwandeln

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Boregard

Betreff: Farbpixel in Tiles umwandeln

BeitragSa, Okt 02, 2004 19:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Erstmal hallo an alle.

Ich beschäftige mich schon länger mit Blitzbasic, da ich aber nicht oft dazukomme bin ich eigentlich noch nicht so bewandert im Umgang damit.
Nun meine Frage:

Wie kann ich aus einer Bilddatei, sagen wir mal 100x100 Pixel gross, die einzelnen Pixel einlesen und diese dann anhand einer Tilemap umwandeln?
Grosses Vorbild dabei ist das Spiel Ultima Online.

Im einzelnen sollte das so funktionieren:
Ich hab z.B ein Bild, 100x100 Pixel, das aus aus den Farben Blau, Grün und Grau besteht.
Jetzt will ich die einzelnen Pixel aus dem Bild auslesen und anhand einer Tilemap, jedes Pixel mit der Farbe Grün in ein 32x32 grosses Tile das eine Wiese darstellt, umwandeln.
Das gleiche natürlich mit Blau (Wasser) und Grau (Berg).

Sorry falls ich einen Post übersehen habe, wusste nicht genau wonach ich suchen sollte, hab aber leider auch nichts darüber gefunden.

Danke im vorraus für Eure Antworten.

Bore
 

Alu2

BeitragSa, Okt 02, 2004 19:30
Antworten mit Zitat
Benutzer-Profile anzeigen
mit readpixelfast kannst du den farbwert eines pixels auslesen. siehe onlinehilfe.
Blitzmax.org - News, Artikel, Tutorials & die Onlinehilfe
 

Boregard

BeitragSa, Okt 02, 2004 19:34
Antworten mit Zitat
Benutzer-Profile anzeigen
danke
werds mir gleich mal ansehen.
 

Boregard

BeitragSa, Okt 02, 2004 23:54
Antworten mit Zitat
Benutzer-Profile anzeigen
So, nochmal Danke an Alu2, die Info hat geholfen.

Wahrscheinlich hab ich es etwas umständlich programmiert, aber es funktioniert bislang.
Dennoch hab ich da noch ein kleines Problem.
Folgendes passiert nun:
Ich lese die Farbinformationen aus der Map.
Danach wandle ich die Informationen anhand der Tilemap um und bringe das ganze auf den Bildschirm.
Soweit so gut.

Nun möchte ich mit meinem Char auf dieser Map rumlaufen.
Was auch im grossen und ganzen funktioniert, bis auf die Spur die der Char hinter sich herzieht.
Mein eigentliches Problem ist allerdings folgendes.
Wie kann ich den Bildschirm scrollen, wenn mein Char einen bestimmten Punkt erreicht hat?

Hier mal der Code (Bitte nicht schrecken):


Code: [AUSKLAPPEN]

Graphics 800,600
map=LoadImage("map.png")
tile=LoadAnimImage("tile.png",32,32,0,3)
char=LoadImage("char.png")

mapx = ImageWidth(map)
mapy = ImageHeight(map)
steuernx=128
steuerny=128
Dim rot(mapx,mapy),gruen(mapx,mapy),blau(mapx,mapy)

SetBuffer ImageBuffer(map)
LockBuffer ImageBuffer(map)
For a = 0 To mapx
   For b = 0 To mapy
      rgb = ReadPixelFast(a,b)
      rot(a,b) =(rgb And $FF0000)/$10000
      gruen(a,b) =(rgb And $FF00)/$100
      blau(a,b) =rgb And $FF

   Next
Next
UnlockBuffer ImageBuffer(map)

SetBuffer BackBuffer()
For i=0 To mapx
   For j=0 To mapy
      If rot(i,j)=255
         DrawBlock tile,i*32,j*32,0
      EndIf
      If gruen(i,j)=255
         DrawBlock tile,i*132,j*32,1
      EndIf
      If blau(i,j)=255
         DrawBlock tile,i*32,j*32,2
      EndIf
   Next
Next

Repeat
   If KeyDown (200) ;rauf
      steuerny=steuerny-32
      DrawImage char,steuernx,steuerny
   Flip
   EndIf
   
   If KeyDown (208) ;runter
      steuerny=steuerny+32
      DrawImage char,steuernx,steuerny
   Flip
   EndIf
   
   If KeyDown (203) ;links
      steuernx=steuernx-32
      DrawImage char,steuernx,steuerny
   Flip
   EndIf
   
   If KeyDown (205) ;rechts
      steuernx=steuernx+32
      DrawImage char,steuernx,steuerny
   Flip
   EndIf
Until KeyHit(1)
 

Alu2

BeitragSo, Okt 03, 2004 0:16
Antworten mit Zitat
Benutzer-Profile anzeigen
du kannst scroll-variablen setzen (beispielsweise scrollx und scrolly) und die bilder abhängig von den scroll-variablen zeichnen - die scrollvariablen kannst du dann entsprechend vergrößtern / verkleinern wenn der spieler einen bestimmten punkt erreicht.
Blitzmax.org - News, Artikel, Tutorials & die Onlinehilfe

Hubsi

BeitragSo, Okt 03, 2004 10:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

Repeat

Cls

For i=0 To mapx
   For j=0 To mapy
      If rot(i,j)=255
         DrawBlock tile,i*32,j*32,0
      EndIf
      If gruen(i,j)=255
         DrawBlock tile,i*132,j*32,1
      EndIf
      If blau(i,j)=255
         DrawBlock tile,i*32,j*32,2
      EndIf
   Next
Next

   If KeyDown (200) ;rauf
      steuerny=steuerny-32
      DrawImage char,steuernx,steuerny
   EndIf
   
   If KeyDown (208) ;runter
      steuerny=steuerny+32
      DrawImage char,steuernx,steuerny
   EndIf
   
   If KeyDown (203) ;links
      steuernx=steuernx-32
      DrawImage char,steuernx,steuerny
   EndIf
   
   If KeyDown (205) ;rechts
      steuernx=steuernx+32
      DrawImage char,steuernx,steuerny
   EndIf
  Flip
Until KeyHit(1)
Kein schmieren, kein flimmern Wink
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

Boregard

BeitragSo, Okt 03, 2004 12:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Na was sagt man dazu, ich fass es nicht.
Hatte gestern den einen Codeteil wo das Spielfeld gezeichnet wird auch mal in die Schleife rein getan.
Bei mir kam es zu einem Error, dein Beispiel funktioniert obwohl ich keinen Unterschied feststellen kann zu dem wie ich es hatte.
Vielen Dank.

Das Prob mit dem Scrollen hab ich leider noch nicht gelöst.
Komm einfach nicht drauf, steh irgendwie auf der Leitung.
Dabei hatte ich schon mal so ein Scrolling programmiert. *schäm*

Danke
Bore
 

Alu2

BeitragSo, Okt 03, 2004 15:03
Antworten mit Zitat
Benutzer-Profile anzeigen
das prinzip mit dem scrollen ist relativ simpel.
wie ich bereits gesagt habe, zeichnest du die grafiken nicht abhängig vom 0:0 des bildschirmes, sondern von scrollvariablen.

Also

Code: [AUSKLAPPEN]
DrawImage Tileset, [b]ScrollX[/b] + TileX, [b]ScrollY[/b] + TileY, Frame

If KeyDown( 208 ) Then ScrollY = ScrollY - 1
If KeyDown( 200 ) Then ScrollY = ScrollY + 1
If KeyDown( 205 ) Then ScrollY = ScrollX - 1
If KeyDown( 203 ) Then ScrollY = ScrollX + 1


probier das mal so ungefähr aus. die scrollvariablen musst du also einfach entsprechend verändern, wie es dir passt.
Blitzmax.org - News, Artikel, Tutorials & die Onlinehilfe
 

Boregard

BeitragSo, Okt 03, 2004 18:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke werds dann gleich mal testen.

Gruss
Bore

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group