fb:porticula NoPaste
asci game
Uploader: | Manello |
Datum/Zeit: | 30.01.2014 18:54:14 |
'####################################################Dateiangabe
DECLARE FUNCTION bewege(BYREF sx AS INTEGER, BYREF sy AS INTEGER, _
dx AS INTEGER, dy AS INTEGER) AS INTEGER
DIM AS STRING taste
DIM SHARED felddata(20,10) AS INTEGER
DIM AS INTEGER f=FREEFILE
DIM AS STRING text
DIM AS INTEGER sx,sy 'starposition
DIM AS INTEGER ax,ay 'ausgangposition
ENUM Felderliste
'#####################################################Initalisierung
OPEN "LEVELS.DAT" FOR INPUT AS #f 'Öffne Datei Level Small
FOR zeile AS INTEGER = 0 TO 10
LINE INPUT #f,text
FOR spalte AS INTEGER = 0 TO 20
felddata(spalte,zeile)=text[spalte]
IF felddata(spalte,zeile)=ASC(" ") THEN
felddata(spalte,zeile)=32
END IF
IF felddata(spalte,zeile)=ASC("#") THEN
felddata(spalte,zeile)=35
END IF
IF felddata(spalte,zeile)=ASC("A") THEN
felddata(spalte,zeile)=65
ax=spalte
ay=zeile
END IF
IF felddata(spalte,zeile)=ASC("S") THEN
felddata(spalte,zeile)=83
sx=spalte
sy=zeile
END IF
NEXT
NEXT
CLOSE #f
'########################################################Main
DO
taste = INKEY
SELECT CASE taste
CASE CHR(255,72)
bewege(sx,sy,0,-1) 'hoch
CASE CHR(255,75)
bewege(sx,sy,-1,0) 'links
CASE CHR(255,77)
bewege(sx,sy,1,0) 'rechts
CASE CHR(255,80)
bewege(sx,sy,0,1) 'runter
END SELECT
SLEEP 1
LOOP UNTIL taste = CHR(27)
'#########################################################Funktionen
FUNCTION bewege(BYREF sx AS INTEGER, BYREF sy AS INTEGER, _
dx AS INTEGER, dy AS INTEGER) AS INTEGER
'sx,sy Spielerposition
'dx,dy Bewegungsrichtung x/y
'Rückgabe -1 bei erfolgreicher Bewegung sonst 0
IF felddata(sy+dx,sy+dy) = 32 THEN 'Das Zielfeld leer ist
LOCATE sy,sx
PRINT " ";
sx +=dx
sy +=dy
LOCATE sy+1, sx+1
PRINT "S";
RETURN -1
END IF
RETURN 0
END FUNCTION