Buchempfehlung
Windows-Programmierung. Das Entwicklerhandbuch zur WIN32-API
Windows-Programmierung. Das Entwicklerhandbuch zur WIN32-API
"Der" Petzold, das über 1000 Seiten starke Standardwerk zum Win32-API - besonders nützlich u. a. bei der GUI-Programmierung in FreeBASIC! [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

fb:porticula NoPaste

Info
Info / Hilfe
Liste
Übersicht / Liste
Neu
Datei hochladen
Suche
Quellcode suchen
Download
Dateidownload

3.2: Verbesserte Steuerung über Tastatur

Uploader:Redakteurnemored
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