DEFINT A-Z 'make everything an Integer unless we specify otherwise
DECLARE FUNCTION formatday$ (day AS INTEGER)
DECLARE FUNCTION formattime$ (tim AS INTEGER)
DIM start AS SINGLE, elapsed AS SINGLE, t AS SINGLE
DIM maze(1 TO 7, 1 TO 20) AS STRING
maze(6, 1) = " ############################# #####################################"
maze(6, 2) = " #m #"
maze(6, 3) = " # #"
maze(6, 4) = " # #"
maze(6, 5) = " # #"
maze(6, 6) = " # #"
maze(6, 7) = " # #"
maze(6, 8) = " # #"
maze(6, 9) = " # #"
maze(6, 10) = " ## "
maze(6, 11) = " # #"
maze(6, 12) = " # #"
maze(6, 13) = " # #"
maze(6, 14) = " # #"
maze(6, 15) = " # #"
maze(6, 16) = " # #"
maze(6, 17) = " # #"
maze(6, 18) = " # #"
maze(6, 19) = " # #"
maze(6, 20) = " ############################# #####################################"
maze(2, 1) = " ############################# #####################################"
maze(2, 2) = " #r #"
maze(2, 3) = " # #"
maze(2, 4) = " # #"
maze(2, 5) = " # #"
maze(2, 6) = " # #"
maze(2, 7) = " # #"
maze(2, 8) = " # #"
maze(2, 9) = " # #"
maze(2, 10) = " "
maze(2, 11) = " # #"
maze(2, 12) = " # #"
maze(2, 13) = " # #"
maze(2, 14) = " # #"
maze(2, 15) = " # #"
maze(2, 16) = " # #"
maze(2, 17) = " # #"
maze(2, 18) = " # #"
maze(2, 19) = " # #"
maze(2, 20) = " ############################# #####################################"
maze(3, 1) = " ############################# #####################################"
maze(3, 2) = " #l #"
maze(3, 3) = " # #"
maze(3, 4) = " # #"
maze(3, 5) = " # #"
maze(3, 6) = " # #"
maze(3, 7) = " # #"
maze(3, 8) = " # #"
maze(3, 9) = " # #"
maze(3, 10) = " "
maze(3, 11) = " # #"
maze(3, 12) = " # #"
maze(3, 13) = " # #"
maze(3, 14) = " # #"
maze(3, 15) = " # #"
maze(3, 16) = " # #"
maze(3, 17) = " # #"
maze(3, 18) = " # #"
maze(3, 19) = " # #"
maze(3, 20) = " ############################# #####################################"
maze(4, 1) = " ############################# #####################################"
maze(4, 2) = " #um #"
maze(4, 3) = " # #"
maze(4, 4) = " # #"
maze(4, 5) = " # #"
maze(4, 6) = " # #"
maze(4, 7) = " # #"
maze(4, 8) = " # #"
maze(4, 9) = " # #"
maze(4, 10) = " "
maze(4, 11) = " # #"
maze(4, 12) = " # #"
maze(4, 13) = " # #"
maze(4, 14) = " # #"
maze(4, 15) = " # #"
maze(4, 16) = " # #"
maze(4, 17) = " # #"
maze(4, 18) = " # #"
maze(4, 19) = " # #"
maze(4, 20) = " ############################# #####################################"
maze(5, 1) = " ############################# #####################################"
maze(5, 2) = " #ur #"
maze(5, 3) = " # #"
maze(5, 4) = " # #"
maze(5, 5) = " # #"
maze(5, 6) = " # #"
maze(5, 7) = " # #"
maze(5, 8) = " # #"
maze(5, 9) = " # #"
maze(5, 10) = " "
maze(5, 11) = " # #"
maze(5, 12) = " # #"
maze(5, 13) = " # #"
maze(5, 14) = " # #"
maze(5, 15) = " # #"
maze(5, 16) = " # #"
maze(5, 17) = " # #"
maze(5, 18) = " # #"
maze(5, 19) = " # #"
maze(5, 20) = " ############################# #####################################"
maze(1, 1) = " xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
maze(1, 2) = " x x x x x x"
maze(1, 3) = " x x x x x x"
maze(1, 4) = " x x x x x x"
maze(1, 5) = " xxxxx x x x x"
maze(1, 6) = " x xxxxxxxxx xxxxx x x"
maze(1, 7) = " x x x"
maze(1, 8) = " x x x"
maze(1, 9) = " x x x"
maze(1, 10) = " x xxxxxxxxxxx"
maze(1, 11) = " x x"
maze(1, 12) = " xxxxx xxxxxxxx x"
maze(1, 13) = " x x x xxxxxxxx x"
maze(1, 14) = " x x x x xxxxxxxxxxxxxxxxxxx"
maze(1, 15) = " x x xxxx xxx x x"
maze(1, 16) = " x x x x x x"
maze(1, 17) = " x x x x x"
maze(1, 18) = " x x x x x x"
maze(1, 19) = " x x x x x x"
maze(1, 20) = " xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
maze(7, 1) = " ############################# #####################################"
maze(7, 2) = " #lm #"
maze(7, 3) = " # #"
maze(7, 4) = " # #"
maze(7, 5) = " # #"
maze(7, 6) = " # #"
maze(7, 7) = " # #"
maze(7, 8) = " # #"
maze(7, 9) = " # #"
maze(7, 10) = " "
maze(7, 11) = " # #"
maze(7, 12) = " # #"
maze(7, 13) = " # #"
maze(7, 14) = " # #"
maze(7, 15) = " # #"
maze(7, 16) = " # #"
maze(7, 17) = " # #"
maze(7, 18) = " # #"
maze(7, 19) = " # #"
maze(7, 20) = " ############################# #####################################"
CONST uplimit = 0
CONST leftlimit = 1
CONST rightlimit = 69
CONST downlimit = 21
GOSUB prep
GOSUB middle
'initialize game
LOCATE oldrow, oldcolumn
PRINT MID$(maze(1, oldrow), oldcolumn, 1); 'redraw previous square.
LOCATE row, column
PRINT "o";
DO
SELECT CASE t
CASE 0
LOCATE oldrow, oldcolumn
PRINT MID$(maze(1, oldrow), oldcolumn, 1); 'redraw previous square.
LOCATE row, column
PRINT "o";
CASE 5
LOCATE oldrow, oldcolumn
PRINT MID$(maze(2, oldrow), oldcolumn, 1); 'redraw previous square.
LOCATE row, column
PRINT "o";
CASE 10
LOCATE oldrow, oldcolumn
PRINT MID$(maze(3, oldrow), oldcolumn, 1); 'redraw previous square.
LOCATE row, column
PRINT "o";
CASE 15
LOCATE oldrow, oldcolumn
PRINT MID$(maze(3, oldrow), oldcolumn, 1); 'redraw previous square.
LOCATE row, column
PRINT "o";
CASE 20
LOCATE oldrow, oldcolumn
PRINT MID$(maze(4, oldrow), oldcolumn, 1); 'redraw previous square.
LOCATE row, column
PRINT "o";
CASE 25
LOCATE oldrow, oldcolumn
PRINT MID$(maze(6, oldrow), oldcolumn, 1); 'redraw previous square.
LOCATE row, column
PRINT "o";
CASE 30
LOCATE oldrow, oldcolumn
PRINT MID$(maze(7, oldrow), oldcolumn, 1); 'redraw previous square.
LOCATE row, column
PRINT "o";
CASE 35
CASE 40
END SELECT
DO 'keyboard and clock loop
t = TIMER
IF t < start THEN start = start - 86400 'midnight correction
elapsed = t - start
IF oelap <> INT(elapsed) THEN 'update clock display
oelap = INT(elapsed)
'put time events here:
IF oelap >= secsPerDay THEN start = TIMER: day = (day + 1) MOD 7
LOCATE 23, 40: PRINT formatday$(day); ", "; formattime$(oelap); TAB(79); " ";
keyed$ = INKEY$
LOOP UNTIL (keyed$ <> "")
oldrow = row
oldcolumn = column
SELECT CASE keyed$ 'handle keyboard input
CASE CHR$(27): EXIT DO ' ESC quits
CASE CHR$(0) + CHR$(72): IF row > uplimit THEN row = row - 1
CASE CHR$(0) + CHR$(75): IF column > leftlimit THEN column = column - 1
CASE CHR$(0) + CHR$(77): IF column < rightlimit THEN column = column + 1
CASE CHR$(0) + CHR$(80): IF row < downlimit THEN row = row + 1
END SELECT
tselect:
'row and column inputs
IF t = 0 AND row = 10 AND column = 69 THEN
GOSUB right
row = 10
column = 2
END IF
IF t = 5 AND row = 0 AND column = 31 THEN
row = 20
column = 31
GOSUB ur
END IF
IF t = 20 AND row = 10 AND column = 69 THEN
row = 10
column = 2
GOSUB ur
END IF
IF t = 0 AND row = 10 AND column = 1 THEN
GOSUB left
row = 10
column = 68
END IF
IF t = 5 AND row = 10 AND column = 1 THEN
row = 10
column = 68
GOSUB middle
END IF
IF t = 10 AND row = 10 AND column = 69 THEN
row = 10
column = 2
GOSUB middle
END IF
IF t = 15 AND row = 10 AND column = 69 THEN row = 10: column = 2: GOSUB um
IF t = 0 AND row = 0 AND column = 31 THEN row = 20: column = 31: GOSUB um
IF t = 10 AND row = 10 AND column = 1 THEN t = 10
IF t = 5 AND row = 10 AND column = 69 THEN t = 5
IF t = 10 AND row = 0 AND column = 31 THEN
row = 20
column = 31
GOSUB ul
END IF
IF t = 25 AND row = 10 AND column = 1 THEN
row = 10
column = 68
GOSUB um
END IF
IF t = 25 AND row = 21 AND column = 31 THEN
row = 1
column = 31
GOSUB right
END IF
IF t = 15 AND row = 21 AND column = 31 THEN
row = 1
column = 31
GOSUB left
END IF
LOCATE 10, 10
PRINT t
SELECT CASE t
CASE 0
SELECT CASE MID$(maze(1, row), column, 1) 'what square am I on?
CASE "x" 'wall
row = oldrow
column = oldcolumn
END SELECT
CASE 5
SELECT CASE MID$(maze(2, row), column, 1)'what square am I on?
CASE "x" 'wall
row = oldrow
column = oldcolumn
END SELECT
CASE 10
SELECT CASE MID$(maze(3, row), column, 1) 'what square am I on?
CASE "x" 'wall
row = oldrow
column = oldcolumn
END SELECT
CASE 15
SELECT CASE MID$(maze(4, row), column, 1) 'what square am I on?
CASE "x" 'wall
row = oldrow
column = oldcolumn
END SELECT
CASE 20
SELECT CASE MID$(maze(5, row), column, 1) 'what square am I on?
CASE "x" 'wall
row = oldrow
column = oldcolumn
END SELECT
CASE 25
SELECT CASE MID$(maze(6, row), column, 1) 'what square am I on?
CASE "#" 'wall
row = oldrow
column = oldcolumn
END SELECT
CASE 30
SELECT CASE MID$(maze(7, row), column, 1) 'what square am I on?
CASE "x" 'wall
row = oldrow
column = oldcolumn
END SELECT
END SELECT
LOOP
SYSTEM
middle:
t = 0
count = 0
CLS
FOR count = 1 TO 20
PRINT maze(1, count)
NEXT count
RETURN
right:
t = 5
CLS
count = 0
FOR count = 1 TO 20
PRINT maze(2, count)
NEXT count
RETURN
left:
t = 10
CLS
count = 0
FOR count = 1 TO 20
PRINT maze(3, count)
NEXT count
RETURN
ul:
t = 15
CLS
count = 0
FOR count = 1 TO 20
PRINT maze(6, count)
NEXT count
RETURN
um:
t = 20
CLS
count = 0
FOR count = 1 TO 20
PRINT maze(4, count)
NEXT count
RETURN
ur:
t = 25
CLS
count = 0
FOR count = 1 TO 20
PRINT maze(5, count)
NEXT count
RETURN
prep: 'initiallizes the game
row = 5
column = 3
oldrow = row
oldcolumn = column
RETURN 'always end subroutines with RETURN
RETURN
FUNCTION formatday$ (day AS INTEGER)
DEFINT A-Z
formatday$ = MID$("SunMonTueWedThuFriSat", (day * 3) + 1, 3)
END FUNCTION
FUNCTION formattime$ (tim AS INTEGER)
DEFINT A-Z
hour = (tim * 24&) \ secsPerDay
min = ((tim * 1440&) \ secsPerDay) MOD 60
SELECT CASE hour
CASE 0: hour = 12: t$ = "AM"
CASE IS > 12: hour = hour - 12: t$ = "PM"
CASE ELSE: t$ = "AM"
END SELECT
m$ = LTRIM$(STR$(min))
m$ = STRING$(2 - LEN(m$), "0") + m$ 'make sure it has 2 digits
formattime = LTRIM$(STR$(hour)) + ":" + m$ + " " + t$
END FUNCTION
|