fb:porticula NoPaste
11.2: Kollisionskontrolle mit Alphakanal
Uploader: | nemored |
Datum/Zeit: | 29.10.2011 00:52:09 |
Hinweis: Dieser Quelltext ist Bestandteil des Projekts OpenBook: 2D-Spieleprogrammierung, zu dem es auf FreeBASIC-Portal.de eine Projektseite gibt.
' *** CODE 11.2: Kollisionskontrolle mit Alphakanal
SCREENRES 400, 50, 32
PAINT (0, 0), 0 ' Hintergrund durchsichtig setzen
DIM AS INTEGER sx = 50 ' Startposition der Figur
DIM AS STRING taste ' zur spaeteren Tastaturabfrage
' Figur in einen Puffer zeichnen; zweiter Puffer zur Hintergrundspeicherung
DIM AS ANY PTR figur, hintergrund
DIM AS UINTEGER farbe = &hFF907010 ' Farbe der Figur
figur = IMAGECREATE(30, 50, 0) ' durchsichtiger Hintergrund
hintergrund = IMAGECREATE(30, 50)
CIRCLE figur, (15, 5), 5, farbe,,,, F ' Kopf
LINE figur, (15, 10)-(15, 40), farbe ' Rumpf
LINE figur, ( 0, 10)-(15, 20), farbe ' Arme
LINE figur, -(29, 10), farbe
LINE figur, ( 0, 49)-(15, 40), farbe ' Beine
LINE figur, -(29, 49), farbe
' Objekte zeichnen
LINE (100, 5)-(150, 49), &h006080F0, BF ' Alphawert 00: Hintergrund
LINE (200, 5)-(250, 49), &hFF6080F0, BF ' Alphawert FF: Vordergrund
LINE (300, 5)-(350, 49), &h7F6080F0, BF ' Alphawert 7F: Hindernis
LINE (0, 5)-(5, 49), &h7F6080F0, BF ' linke Wand zur Begrenzung
GET (sx, 0)-STEP(29, 49), hintergrund
PUT (sx, 0), figur, ALPHA
PUT (sx, 0), hintergrund, ALPHA
DO
taste = INKEY
IF taste = CHR(255, 75) AND _ ' Pfeiltaste links
(POINT(sx-1, 20) AND &hFF000000) <> &h7F000000 THEN
PUT (sx, 0), hintergrund, PSET ' Hintergrund wiederherstellen
sx -= 1 ' Bewegung nach links
GET (sx, 0)-STEP(29, 49), hintergrund ' neuen Hintergrund speichern
PUT (sx, 0), figur, ALPHA ' Figur zeichnen
PUT (sx, 0), hintergrund, ALPHA ' Hintergrund darueber zeichnen
ELSEIF taste = CHR(255, 77) AND _ ' Pfeiltaste rechts
(POINT(sx+30, 20) AND &hFF000000) <> &h7F000000 THEN
PUT (sx, 0), hintergrund, PSET ' Hintergrund wiederherstellen
sx += 1 ' Bewegung nach rechts
GET (sx, 0)-STEP(29, 49), hintergrund ' neuen Hintergrund speichern
PUT (sx, 0), figur, ALPHA ' Figur zeichnen
PUT (sx, 0), hintergrund, ALPHA ' Hintergrund darueber zeichnen
END IF
SLEEP 10
LOOP UNTIL taste = CHR(27)