Farbpixel in Tiles umwandeln
Übersicht BlitzBasic Beginners-Corner
BoregardBetreff: Farbpixel in Tiles umwandeln |
Sa, Okt 02, 2004 19:22 Antworten mit Zitat |
|
---|---|---|
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 |
Sa, Okt 02, 2004 19:30 Antworten mit Zitat |
|
---|---|---|
mit readpixelfast kannst du den farbwert eines pixels auslesen. siehe onlinehilfe. | ||
Blitzmax.org - News, Artikel, Tutorials & die Onlinehilfe |
Boregard |
Sa, Okt 02, 2004 19:34 Antworten mit Zitat |
|
---|---|---|
danke
werds mir gleich mal ansehen. |
||
Boregard |
Sa, Okt 02, 2004 23:54 Antworten mit Zitat |
|
---|---|---|
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 |
So, Okt 03, 2004 0:16 Antworten mit Zitat |
|
---|---|---|
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 |
So, Okt 03, 2004 10:04 Antworten mit Zitat |
|
---|---|---|
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) |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
Boregard |
So, Okt 03, 2004 12:43 Antworten mit Zitat |
|
---|---|---|
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 |
So, Okt 03, 2004 15:03 Antworten mit Zitat |
|
---|---|---|
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 |
So, Okt 03, 2004 18:12 Antworten mit Zitat |
|
---|---|---|
Danke werds dann gleich mal testen.
Gruss Bore |
||
Übersicht BlitzBasic Beginners-Corner
Powered by phpBB © 2001 - 2006, phpBB Group