Buchempfehlung
Visual Basic 6 Kochbuch
Visual Basic 6 Kochbuch
Viele praktische Tipps zum Programmieren mit Visual Basic 6, die sich oft auch auf FB übertragen lassen. [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

asci game

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