 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Felix
Anmeldungsdatum: 22.01.2008 Beiträge: 41 Wohnort: Breisach
|
Verfasst am: 06.02.2008, 17:51 Titel: Komische Farben bei Sprites?!?!? |
|
|
Hallo, ich habe heute Mittag ein Programm geschrieben, das meinen Roten Pacman von links nach rechts laufen lässt, während er den Mund bewegt (pac1 und pac2) und im Hintergrund ein anderes Bild angezeigt wird. Hier der kleine Code:
Code: |
dim shared back(0 to 639, 0 to 479) as integer 'Groeße des Arrays
dim shared pac1(1000) as integer 'gesammtgröße des arrays
dim shared pac2(1000) as integer ' " " "
dim x as integer
screen 18 '640x480 x 256 Farben
bload "Billardkugel.bmp" '2-Farben bmp laden (Schwarz-Weiß)
get (0,0)-(639,479), back 'und in Array speichern
cls
bload "pman.bmp" '256-Farben bmp
get (0,0)-(49,49), pac1 'laden und davon die erste Hälfte in pac1
get (50, 0)-(100, 49), pac2 'und die 2. Hälfte in pac2 speichern
cls
put (0,0), back 'An Pixel 0,0 (links oben)
'array "back" ausgeben (Billardkugel)
for x = 1 to 640 step 5 'For-Schleife für Pacman-Bewegung (von Pixel 1 bis pixel 640)
cls 'Clearscreen
put (0,0), back 'An Position 0,0 Inhalt von back platzieren
put (x, 200), pac1 'an Position x, 100 Inhalt von pac1 platzieren
sleep 100 '100 ms warten (wegen flimmerns und Geschwindigkeit)
x=x+5 'X+5
cls 'wieder clearscreen
put (0,0), back 'An Position 0,0 Inhalt von back platzieren
put (x, 200), pac2 'an Position x, 100 Inhalt von pac1 platzieren
sleep 100 '100 ms warten (wegen flimmerns und Geschwindigkeit)
next
end
|
Soweit so gut, es klappt wunderbar, mit dem einzigen Fehler, dass wenn der Pacman über eine andere Farbe als Schwarz gleitet, auch er eine andere Farbe bekommt. Zudem sind bei dem Hintergrund die Farben verfälscht.
Kann mir das jemand erklären oder Lösungsvorschläge bringen? Ich bin mit meinem Anfängerlatein am Ende
Gruß Felix |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 06.02.2008, 19:17 Titel: |
|
|
Der Befehl PUT hat einen Parameter, mit dem du die "Mischung" zwischen Hintergrund und Sprite verändern kannst. Standardmäßig ist da AND oder OR eingestellt, was eben die beiden Farben mit einem logschen Und / Oder verknüpft. Du benötigst für dein Sprite aber entweder die volle Deckung (PSET) oder die transparente Deckung (TRANS), bei der die Farbe Schwarz (bei 16 Bit und aufwärts: Magenta) gefiltert wird. Somit müsste dein Put-Befehl so lauten:
Code: | PUT (x,y), grafik, TRANS |
_________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
Cherry
Anmeldungsdatum: 20.06.2007 Beiträge: 249
|
Verfasst am: 06.02.2008, 20:04 Titel: |
|
|
Wegen Hintergrund - da musst du im 32bit-Modus arbeiten, sonst hast du immer Probleme mit der Palette (oder du verwendest über all die selbe, ist aber komplizierter)
Screen 18, 32 |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 06.02.2008, 20:05 Titel: |
|
|
Cherry hat Folgendes geschrieben: | sonst hast du immer Probleme mit der Palette (oder du verwendest über all die selbe, ist aber komplizierter) |
Na, so kompliziert ist das doch wirklich nicht Hat schließlich jahrelang funktioniert, warum sollte es nicht mehr funktionieren? _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
Cherry
Anmeldungsdatum: 20.06.2007 Beiträge: 249
|
Verfasst am: 06.02.2008, 22:03 Titel: |
|
|
äh?
Wenn er ein mehrere Bilder mit verschiedenen Paletten im 8-bit Modus lädt, sieht alles ziemlich seltsam aus!
Edit: Achso. Aber wenn da einer ist, der einfach irgendwelche Bilder anzeigen will (die sowieso meistens 32bit sind), dann ist Screen 18, 32 einfacher und sinnvoller als alles andere! |
|
Nach oben |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 06.02.2008, 22:26 Titel: |
|
|
Beispiele von mir aus der QB-Zeit:
http://beilagen.dreael.ch/QB/SPR_DEMO.BAS
http://www.dreael.ch/QB/JUMPGAME.ZIP
Wenn man in QB keine Option wie PSET hinten bei PUT angibt, so findet immer eine XOR-Verknüpfung mit dem Hintergrund statt, was manchmal etwas seltsam anmutende Verfärbungen bewirkt, sobald der Hintergrund nicht mehr aus lauter "COLOR 0"-Pixeln besteht.
Als Abhilfe war es daher damals üblich, mit einer AND-Maske zuerst den Hintergrund sihouettenförmig "freistanzen" und dann das eigentliche Sprite noch mit XOR drüberzeichnen. So wird es übrigens auch in den oberen Beispielen gemacht.
Wie ich aber soeben sehe, scheint dieser Umweg mit der neuen TRANS-Verknüpfungsoption nicht mehr notwendig zu sein. _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 06.02.2008, 22:36 Titel: |
|
|
Cherry hat Folgendes geschrieben: | Edit: Achso. Aber wenn da einer ist, der einfach irgendwelche Bilder anzeigen will (die sowieso meistens 32bit sind), dann ist Screen 18, 32 einfacher und sinnvoller als alles andere! |
Wer wirklich ein 8-Bit-Spiel designen will, muss natürlich schon zu Beginn an eine gemeinsame Palette denken, und das geht ohne Probleme... _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
Felix
Anmeldungsdatum: 22.01.2008 Beiträge: 41 Wohnort: Breisach
|
Verfasst am: 07.02.2008, 09:24 Titel: |
|
|
So,
ersma vielen dank für eure Antworten.
Ich hab das jetz ma schnell geändert (also den Screen 18,32) und es kompiliert, aber jetzt sieht alles voll verwirrt aus (nur schwarzer Hintergrund und der Pacman sind ein paar verzerrte undefinierbare Pixel ) Liegt wohl daran dass ich die Bilder noch nich in 32 Bit BMP's umgewandelt hab. Werd ich gleich mal machen.
Gruß Felix
EDIT: Ok, mit den 32 Bit funktioniert alles super. Danke!!  |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|