fb:porticula NoPaste
3.2: Verbesserte Steuerung über Tastatur
Uploader: | nemored |
Datum/Zeit: | 24.09.2011 11:42:54 |
Hinweis: Dieser Quelltext ist Bestandteil des Projekts OpenBook: 2D-Spieleprogrammierung, zu dem es auf FreeBASIC-Portal.de eine Projektseite gibt.
' *** CODE 3.2: Verbesserte Steuerung über Tastatur
DECLARE FUNCTION bewege(BYREF sx AS INTEGER, BYREF sy AS INTEGER, _
dx AS INTEGER, dy AS INTEGER) AS INTEGER
DIM AS STRING taste
DO
taste = INKEY
SELECT CASE taste
CASE CHR(255, 72)
bewege(sx, sy, 0, -1) ' nach oben
CASE CHR(255, 75)
bewege(sx, sy, -1, 0) ' nach links
CASE CHR(255, 77)
bewege(sx, sy, 1, 0) ' nach rechts
CASE CHR(255, 80)
bewege(sx, sy, 0, 1) ' nach unten
END SELECT
SLEEP 1 ' Pause, um die Kontrolle an andere Prozesse zu uebergeben
LOOP UNTIL taste = CHR(27)
FUNCTION bewege(BYREF sx AS INTEGER, BYREF sy AS INTEGER, _
dx AS INTEGER, dy AS INTEGER) AS INTEGER
' sx, sy: Spielerposition
' dx, dy: Bewegung in x- bzw. y-Richtung
' Rueckgabe: -1 bei erfolgreicher Bewegung; sonst 0
IF felddata(sx+dx, sy+dy) = 32 THEN
' das Zielfeld ist leer; die Bewegung kann stattfinden
LOCATE sy, sx ' alte Position leeren
PRINT " ";
sx += dx ' Spielerposition aendern
sy += dy
LOCATE sy+1, sx+1 ' neue Position schreiben
PRINT "S";
RETURN -1 ' Bewegung erfolgreich
END IF
RETURN 0 ' keine Bewegung erfolgt
END FUNCTION