Buchempfehlung
Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie
Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie
Umfassend, aber leicht verständlich führt dieses Buch in die Programmierung von ATMEL AVR Mikrocontrollern ein. [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.4: Steuerung mit Joystick

Uploader:Redakteurnemored
Datum/Zeit:24.09.2011 11:49:03
Hinweis: Dieser Quelltext ist Bestandteil des Projekts OpenBook: 2D-Spieleprogrammierung, zu dem es auf FreeBASIC-Portal.de eine Projektseite gibt.

' *** CODE 3.4: Steuerung mit Joystick

DIM buttons AS INTEGER, x AS SINGLE, y AS SINGLE
DECLARE FUNCTION bewege(BYREF sx AS INTEGER, BYREF sy AS INTEGER, _
                        BYVAL dx AS SINGLE, BYVAL dy AS SINGLE) AS INTEGER
DO
  IF GETJOYSTICK(0, buttons, x, y) = 0 THEN
    IF bewege(sx, sy, x, y) THEN SLEEP 200, 1  ' kleine Bewegungspause
  END IF
  IF sx = ax AND sy = ay THEN END              ' Ausgang erreicht
  SLEEP 1                                      ' Pause fuer den Prozessor
LOOP UNTIL INKEY = CHR(27)

FUNCTION bewege(BYREF sx AS INTEGER, BYREF sy AS INTEGER, _
                BYVAL dx AS SINGLE, BYVAL dy AS SINGLE) AS INTEGER
  ' sx, sy: Spielerposition
  ' dx, dy: Bewegung in x- bzw. y-Richtung
  ' Rueckgabe: -1 bei erfolgreicher Bewegung; sonst 0
  IF ABS(dx) < .7 THEN dx = 0   ' Bewegungsspielraum festlegen
  IF ABS(dy) < .7 THEN dy = 0
  IF felddata(sx+dx, sy+dy) = 32 THEN
    LOCATE sy+1, sx+1  ' alte Position leeren
    PRINT " ";
    sx += SGN(dx)      ' Spielerposition aendern
    sy += SGN(dy)
    LOCATE sy+1, sx+1  ' neue Position schreiben
    PRINT "S";
    RETURN -1          ' Bewegung erfolgreich
  END IF
  RETURN 0             ' keine Bewegung erfolgt
END FUNCTION