fb:porticula NoPaste
14.1: Zufallsgesteuerte Computerbewegung
Uploader: | nemored |
Datum/Zeit: | 29.10.2011 00:54:30 |
Hinweis: Dieser Quelltext ist Bestandteil des Projekts OpenBook: 2D-Spieleprogrammierung, zu dem es auf FreeBASIC-Portal.de eine Projektseite gibt.
' *** CODE 14.1: Zufallsgesteuerte Computerbewegung
DO
' Vorwaertszug testen
SELECT CASE cr
CASE Links
IF felddata(cx-1, cy) = Leer THEN bewege cx, cy, Links : CONTINUE DO
CASE Oben
IF felddata(cx, cy-1) = Leer THEN bewege cx, cy, Oben : CONTINUE DO
CASE Rechts
IF felddata(cx+1, cy) = Leer THEN bewege cx, cy, Rechts : CONTINUE DO
CASE Unten
IF felddata(cx, cy+1) = Leer THEN bewege cx, cy, Unten : CONTINUE DO
END SELECT
' verfuegbare Richtungen suchen
DIM AS INTEGER linksabbiegen = 0, rechtsabbiegen = 0
SELECT CASE cr
CASE Links
IF felddata(cx, cy+1) = Leer THEN linksabbiegen = -1
IF felddata(cx, cy-1) = Leer THEN rechtsabbiegen = -1
CASE Oben
IF felddata(cx-1, cy) = Leer THEN linksabbiegen = -1
IF felddata(cx+1, cy) = Leer THEN rechtsabbiegen = -1
CASE Rechts
IF felddata(cx, cy-1) = Leer THEN linksabbiegen = -1
IF felddata(cx, cy+1) = Leer THEN rechtsabbiegen = -1
CASE Unten
IF felddata(cx+1, cy) = Leer THEN linksabbiegen = -1
IF felddata(cx-1, cy) = Leer THEN rechtsabbiegen = -1
END SELECT
IF linksabbiegen AND (NOT rechtsabbiegen) THEN ' nur linksabbiegen
cr = (cr+3) MOD 4
ELSEIF (NOT linksabbiegen) AND rechtsabbiegen THEN ' nur rechtsabbiegen
cr = (cr+1) MOD 4
ELSEIF linksabbiegen AND rechtsabbiegen THEN ' beides moeglich
' zu 50% links, zu 50% rechts abbiegen
IF RND < .5 THEN cr = (cr+3) MOD 4 ELSE cr = (cr+1) MOD 4
ELSE ' keines moeglich
cr = (cr+2) MOD 4
END IF
LOOP UNTIL INKEY <> ""