Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Pascalated ZX BASIC Demo #20 - Maze Walls
#1
To run online, click here: RUN ONLINE



Code:
' PROGRAM Maze Walls
' (c) ZarSoft 2022 Pascalated BASIC
' (c) ZarSoft 2023 Pascalated Boriel ZX BASIC
' Written by Ze Oliveira
' Pascalated Sinclair BASIC (c) 1987 by ZarSoft
' Pascalated BASIC Converter (c) 2021 by Zarsoft
' Pascalated Boriel (c) 2023 by ZarSoft
' ZX BASIC Compiler (c) 2008 by Boriel

#include <input.bas>  ' number = VAL INPUT(12)
#include <screen.bas> ' SCREEN$ function
#include <attr.bas>   ' ATTR function

'--- Pascalated Boriel ---
#define PROGRAM   REM
#define BEGIN    REM
'#define CONST     CONST
#define VAR       DIM
#define INTEGER   LONG
#define REAL      FLOAT
#define CHAR      STRING
'#define STRING    STRING
#define BOOLEAN   UBYTE
#define TYPE      AS
'#define WHILE    WHILE
#define REPEAT    DO
#define UNTIL     LOOP UNTIL
#define PROCEDURE  SUB
CONST   TRUE      TYPE BOOLEAN = 1
CONST   FALSE     TYPE BOOLEAN = 0

PROGRAM MazeWalls

' CONSTant declarations
REM CONSTant declarations
CONST black = 0
CONST blue = 1
CONST red = 2
CONST magenta = 3
CONST green = 4
CONST cyan = 5
CONST yellow = 6
CONST white = 7
'CONST b$ = "\::" ' wall char
CONST cx =127 ' center of horizon
CONST cy =55
CONST DOV = 9 ' depth of vision
CONST FOV = 1+2*(DOV-1): REM field of view (odd number)

' VAR - Global variables
VAR SIZE TYPE INTEGER ' 1..4 user input
VAR MazeLen TYPE INTEGER ' in build maze
VAR Maze$(33) TYPE STRING ' Maze$(33,33)
VAR Key$ TYPE CHAR ' key
VAR Heading TYPE INTEGER ' heading of view
VAR ExitLin TYPE INTEGER ' exit line heading
VAR ExitCol TYPE INTEGER ' exit line heading
VAR Lin,Col TYPE INTEGER ' current position
VAR Walls$(22) TYPE STRING ' Walls$(22,32) walls picture
VAR Holes$(22) TYPE STRING ' Holes$(22,32) holes picture
VAR LinesCoord(10,2) TYPE INTEGER ' lines walls coordinates
VAR ColsCoord(10,4) TYPE INTEGER ' columns walls coordinates
VAR Abort TYPE BOOLEAN
VAR TheEnd TYPE BOOLEAN
VAR b$ = "\::" ' wall char --- should be CONST
VAR f$ TYPE STRING
VAR g$ TYPE STRING

PROCEDURE TRON (m TYPE STRING)
  PRINT AT 23,0;m;
  PAUSE 0
END PROCEDURE

PROCEDURE Congratulations
PRINT AT 11,12;INK 3;"SUCCESS!"
: FOR i=-11 TO 11: BEEP .01,i: BEEP .01,ABS(i): NEXT i
PRINT AT 23,0;INK 1;"        Press any key.     ";TAB 31;
PAUSE 5*50
END PROCEDURE

PROCEDURE Help
BORDER 4: PAPER 4: INK 1: CLS
FOR n = 1 TO 22
  PRINT AT n-1,0;Maze$(n)(0 TO 31);
NEXT n
PRINT AT Lin-1,Col-1;
IF Heading = 1 THEN PRINT INK 2;">";
IF Heading = 2 THEN PRINT INK 2;"^";
IF Heading = 3 THEN PRINT INK 2;"<";
IF Heading = 4 THEN PRINT INK 2;"V";
IF ExitLin-1 <= 21 AND ExitCol-1 <= 31 THEN PRINT AT ExitLin-1,ExitCol-1;PAPER 8;INK 2;"$";
PRINT AT 23,0;INK 1;"Press any key to continue";TAB 31;
PAUSE 0
PRINT AT 23,0;"                         ";TAB 31;
BORDER 5: PAPER 5
END PROCEDURE

PROCEDURE ShowFrontWall (base TYPE INTEGER)
INK 5
IF base = 10
  PRINT AT 13,15;INK 7;"\A\A";
ELSEIF base = 8
  PRINT AT 12,14;INK 7;f$(1 TO 4);
  PRINT AT 13,14;INK 7;f$(1 TO 4);
  PRINT AT 14,14;INK 7;g$(1 TO 4);
ELSEIF base = 6
  FOR l = 10 TO 14
    PRINT AT l,12;INK 7;f$(1 TO 8);
  NEXT l
  PRINT AT 15,12;INK 7;g$(1 TO 8);
ELSEIF base = 4
  FOR l = 7 TO 16
    PRINT AT l,9;INK 7;f$(1 TO 14);
  NEXT l
ELSEIF base = 2
  FOR l = 3 TO 18
    PRINT AT  l,5;INK 7;f$(1 TO 22);
  NEXT l
ENDIF
END PROCEDURE

PROCEDURE ShowLeftWay (base TYPE INTEGER)
FOR l = 1 TO 22
  PRINT AT  l-1,ColsCoord(base,1)-1;PAPER 8;INK 7;Holes$(l)( ColsCoord(base,1) TO ColsCoord(base,2) );
NEXT l
END PROCEDURE

PROCEDURE ShowRightWay (base TYPE INTEGER)
FOR l = 1 TO 22
  PRINT AT  l-1,ColsCoord(base,3)-1;PAPER 8;INK 7;Holes$(l)( ColsCoord(base,3) TO ColsCoord(base,4) );
NEXT l
END PROCEDURE

PROCEDURE ShowLeftWall (base TYPE INTEGER)
FOR l = 1 TO 22
  PRINT AT  l-1,ColsCoord(base,1)-1;PAPER 8;INK 6;Walls$(l)( ColsCoord(base,1) TO ColsCoord(base,2) );
NEXT l
END PROCEDURE

PROCEDURE ShowRightWall (base TYPE INTEGER)
FOR l = 1 TO 22
  PRINT AT  l-1,ColsCoord(base,3)-1;PAPER 8;INK 6;Walls$(l)( ColsCoord(base,3) TO ColsCoord(base,4) );
NEXT l
END PROCEDURE

PROCEDURE ClearScreen
BORDER 0: PAPER 1: INK 7: CLS
PAPER 4: INK 4
PRINT AT 14, 0;PAPER 1;f$(1 TO 12);PAPER 4;" ";TAB 20;PAPER 1;f$(1 TO 12);
PRINT AT 15, 0;PAPER 1;f$(1 TO 9);PAPER 4;" ";TAB 23;PAPER 1;f$(1 TO 9);
PRINT AT 16, 0;PAPER 1;f$(1 TO 9);PAPER 4;" ";TAB 23;PAPER 1;f$(1 TO 9);
PRINT AT 17, 0;PAPER 1;f$(1 TO 5);PAPER 4;" ";TAB 27;PAPER 1;f$(1 TO 5);
PRINT AT 18, 0;PAPER 1;f$(1 TO 5);PAPER 4;" ";TAB 27;PAPER 1;f$(1 TO 5);
PRINT AT 19, 0;" ";TAB 31;" ";
PRINT AT 20, 0;" ";TAB 31;" ";
PRINT AT 21, 0;" ";TAB 31;" ";
PRINT AT 22, 0;" ";TAB 31;" ";
PRINT AT 23, 0;PAPER 0;" ";TAB 31;" ";
END PROCEDURE

PROCEDURE ShowWalls1
VAR range TYPE INTEGER
VAR base TYPE INTEGER
VAR EndShow TYPE BOOLEAN
VAR test TYPE BOOLEAN
REM CLS
PRINT AT 23,0;INK 1;" 58OP-Turn 7Q-Go H-Help A-Abort ";
LET range=0: LET base = 2
LET EndShow = FALSE

REPEAT
 
  LET test = Maze$(Lin-1)(Col+range-1) = b$
  IF test THEN ShowLeftWall(base)
  IF NOT test THEN ShowLeftWay(base)
 
  LET test = Maze$(Lin+1)(Col+range-1) = b$
  IF test THEN ShowRightWall(base)
  IF NOT test THEN ShowRightWay(base)
 
  IF Col+range+1 <= MazeLen THEN IF Maze$(Lin)(Col+range+1-1) = b$ THEN ShowFrontWall(base): LET EndShow = TRUE
 
  IF Lin = MazeLen-1 THEN IF Col+range+1 = MazeLen THEN LET EndShow = TRUE
 
  LET Key$ = INKEY$
 
  LET range = range+2: LET base = base+2
 
UNTIL range=DOV-1 OR EndShow OR Key$<>""

END PROCEDURE

PROCEDURE ShowWalls2
VAR range TYPE INTEGER
VAR base TYPE INTEGER
VAR EndShow TYPE BOOLEAN
VAR test TYPE BOOLEAN
REM CLS
PRINT AT 23,0;INK 1;" 58OP-Turn 7Q-Go H-Help A-Abort ";
LET range=0: LET base = 2
LET EndShow = FALSE

REPEAT
 
  LET test = Maze$(Lin-range)(Col-1-1) = b$
  IF test THEN ShowLeftWall(base)
  IF NOT test THEN ShowLeftWay(base)
 
  LET test = Maze$(Lin-range)(Col+1-1) = b$
  IF test THEN ShowRightWall(base)
  IF NOT test THEN ShowRightWay(base)
 
  IF Lin-range-1 >= 1 THEN IF Maze$(Lin-range-1)(Col-1) = b$ THEN ShowFrontWall(base): LET EndShow = TRUE
 
  LET Key$ = INKEY$
 
  LET range = range+2: LET base = base+2
 
UNTIL range=DOV-1 OR EndShow OR Key$<>""

END PROCEDURE

PROCEDURE ShowWalls3
VAR range TYPE INTEGER
VAR base TYPE INTEGER
VAR EndShow TYPE BOOLEAN
VAR test TYPE BOOLEAN
REM CLS
PRINT AT 23,0;INK 1;" 58OP-Turn 7Q-Go H-Help A-Abort ";
LET range=0: LET base = 2
LET EndShow = FALSE

REPEAT
 
  LET test = Maze$(Lin-1)(Col-range-1) = b$
  IF test THEN ShowRightWall(base)
  IF NOT test THEN ShowRightWay(base)
 
  LET test = Maze$(Lin+1)(Col-range-1) = b$
  IF test THEN ShowLeftWall(base)
  IF NOT test THEN ShowLeftWay(base)
 
  IF Col-range-1 >= 1 THEN IF Maze$(Lin)(Col-range-1-1) = b$ THEN ShowFrontWall(base): LET EndShow = TRUE
 
  LET Key$ = INKEY$
 
  LET range = range+2: LET base = base+2
 
UNTIL range=DOV-1 OR EndShow OR Key$<>""

END PROCEDURE

PROCEDURE ShowWalls4
VAR range TYPE INTEGER
VAR base TYPE INTEGER
VAR EndShow TYPE BOOLEAN
VAR test TYPE BOOLEAN
REM CLS
PRINT AT 23,0;INK 1;" 58OP-Turn 7Q-Go H-Help A-Abort ";
LET range=0: LET base = 2
LET EndShow = FALSE

REPEAT
 
  LET test = Maze$(Lin+range)(Col-1-1) = b$
  IF test THEN ShowRightWall(base)
  IF NOT test THEN ShowRightWay(base)
 
  LET test = Maze$(Lin+range)(Col+1-1) = b$
  IF test THEN ShowLeftWall(base)
  IF NOT test THEN ShowLeftWay(base)
 
  IF Lin+range+1 <= MazeLen THEN IF Maze$(Lin+range+1)(Col-1) = b$ THEN ShowFrontWall(base): LET EndShow = TRUE
 
  LET Key$ = INKEY$
 
  LET range = range+2: LET base = base+2
 
UNTIL range=DOV-1 OR EndShow OR Key$<>""

END PROCEDURE

PROCEDURE ShowMazeWalls
ClearScreen
PAPER 8
' PROC VAL("ShowWalls"+STR$ Heading)
IF Heading = 1 THEN ShowWalls1
IF Heading = 2 THEN ShowWalls2
IF Heading = 3 THEN ShowWalls3
IF Heading = 4 THEN ShowWalls4
END PROCEDURE

PROCEDURE ShowMaze
FOR n = 1 TO 24
  PRINT AT n-1,0;Maze$(n)(0 TO 31);
NEXT n
PAUSE 50
END PROCEDURE

PROCEDURE GenerateMaze
VAR middle TYPE INTEGER
VAR positions TYPE INTEGER
VAR block TYPE INTEGER
VAR hole TYPE INTEGER
BORDER green: PAPER green: INK black: CLS
'DIM Maze$(33,33)
FOR i=1 TO 33
  LET Maze$(i) = ""
NEXT i
LET Maze$(24) = "Maze by tessellation method"
REM SIZE = 1,2,3 or 4
LET MazeLen = 3
REM horizontal borders
LET Maze$(1) = b$+b$+b$
LET Maze$(2) = b$+" "+b$
LET Maze$(3) = b$+b$+b$
ShowMaze
REM Poles
INK blue
FOR i=1 TO SIZE
  REM 3 more copies
  FOR l=1 TO MazeLen
    LET Maze$(l) = Maze$(l)(0 TO MazeLen-1) + Maze$(l)(1 TO MazeLen-1)
  NEXT l
  ShowMaze
  FOR l=2 TO MazeLen
    LET Maze$(MazeLen+l-1) = Maze$(l)(0 TO MazeLen-1)
  NEXT l
  ShowMaze
  FOR l=2 TO MazeLen
    LET Maze$(MazeLen+l-1) = Maze$(l)
  NEXT l
  ShowMaze
  REM update new size
  LET MazeLen = 2*MazeLen-1
  LET middle = INT (MazeLen+1)/2
  LET positions = INT (middle-1)/2
  REM dig 3 holes
  LET block = 1+INT (4*RND)
  IF NOT block = 1
    REM left
    LET hole = 2*INT (1+positions*RND)
    LET Maze$(middle)(hole-1) = " "
    IF middle-1 <= 21 AND hole-1 <= 31 THEN PRINT AT middle-1,hole-1;PAPER yellow;" ";
    REM PAUSE 50
  ENDIF
  IF NOT block = 2
    REM right
    LET hole = 2*INT (1+positions*RND)
    LET Maze$(middle)(MazeLen+1-hole-1) = " "
    IF middle-1 <= 21 AND MazeLen+1-hole-1 <= 31 THEN PRINT AT middle-1,MazeLen+1-hole-1;PAPER yellow;" ";
    REM PAUSE 50
  ENDIF
  IF NOT block = 3
    REM top
    LET hole = 2*INT (1+positions*RND)
    LET Maze$(hole)(middle-1) = " "
    IF hole-1 <= 21 AND middle-1 <= 31 THEN PRINT AT hole-1,middle-1;PAPER yellow;" ";
    REM PAUSE 50
  ENDIF
  IF NOT block = 4
    REM down
    LET hole = 2*INT (1+positions*RND)
    LET Maze$(MazeLen+1-hole)(middle-1) = " "
    IF MazeLen+1-hole-1 <= 21 AND middle-1 <= 31 THEN PRINT AT MazeLen+1-hole-1,middle-1;PAPER yellow;" ";
    REM PAUSE 50
  ENDIF
  PAUSE 50
  ShowMaze
NEXT i
REM start & exit
INK black
END PROCEDURE

PROCEDURE Forward
IF Lin=ExitLin AND Col=ExitCol-1 AND Heading = 1 THEN LET TheEnd = TRUE
IF Heading = 1 THEN IF Maze$(Lin)(Col+1-1)=" " THEN LET Col = Col+2
IF Heading = 2 THEN IF Maze$(Lin-1)(Col-1)=" " THEN LET Lin = Lin-2
IF Heading = 3 THEN IF Maze$(Lin)(Col-1-1)=" " THEN LET Col = Col-2
IF Heading = 4 THEN IF Maze$(Lin+1)(Col-1)=" " THEN LET Lin = Lin+2
END PROCEDURE

PROCEDURE TurnLeft
LET Heading = Heading+1
IF Heading>4 THEN LET Heading = 1
END PROCEDURE

PROCEDURE TurnRight
LET Heading = Heading-1
IF Heading<1 THEN LET Heading = 4
END PROCEDURE

PROCEDURE InitGame
BORDER 5: PAPER 5: INK 0
LET TheEnd = FALSE
LET Abort = FALSE
LET Key$=""
REM --- entry point
LET Lin = 2
LET Col = 2
LET Heading = 1
PRINT AT 2-1,2-1;PAPER 8;INK 2;">";
REM --- exit point
LET ExitLin = MazeLen-1
LET ExitCol = MazeLen
LET Maze$(ExitLin)(ExitCol-1) = "$"
IF ExitLin-1 <= 21 AND ExitCol-1 <= 31 THEN PRINT AT ExitLin-1,ExitCol-1;PAPER 8;INK 2;"$";
PAUSE 3*50
END PROCEDURE

PROCEDURE Game
InitGame
REPEAT
  ShowMazeWalls
  REPEAT
    IF Key$ = "" THEN PAUSE 0: LET Key$ = INKEY$
  UNTIL Key$ <> ""
  IF Key$="7" OR Key$="q" THEN BEEP .1,5: Forward
  IF Key$="5" OR Key$="o" THEN BEEP .1,5: TurnLeft
  IF Key$="8" OR Key$="p" THEN BEEP .1,5: TurnRight
  IF Key$="h" THEN BEEP .1,5: Help
  IF Key$="a" THEN BEEP .1,5: LET Abort = TRUE
UNTIL TheEnd OR Abort
IF TheEnd THEN Congratulations
END PROCEDURE

PROCEDURE DefineSprites
VAR a$ TYPE STRING
VAR n TYPE INTEGER
REM A\A#
REM B\B\\ /\CC
REM DE\D\E/ \\FG\F\G
REM H\H-
REM I\I| |J\J
RESTORE ' DataSprites
READ a$
REPEAT
  FOR i=0 TO 7
    READ n
    POKE USR a$+i,n
  NEXT i
  ' PRINT a$;
  READ a$
UNTIL a$ = ""
' PAUSE 0
END PROCEDURE

PROCEDURE DataSprites
DATA "\A" : REM A
DATA BIN 11111111
DATA BIN 11111111
DATA BIN 11111111
DATA BIN 11111111
DATA BIN 11111111
DATA BIN 11111111
DATA BIN 11111111
DATA BIN 11111111
DATA "\B" : REM B
DATA BIN 10000000
DATA BIN 11000000
DATA BIN 11100000
DATA BIN 11110000
DATA BIN 11111000
DATA BIN 11111100
DATA BIN 11111110
DATA BIN 11111111
DATA "\C" : REM C
DATA BIN 00000001
DATA BIN 00000011
DATA BIN 00000111
DATA BIN 00001111
DATA BIN 00011111
DATA BIN 00111111
DATA BIN 01111111
DATA BIN 11111111
DATA "\D" : REM D
DATA BIN 11111111
DATA BIN 11111111
DATA BIN 11111111
DATA BIN 11111111
DATA BIN 11111110
DATA BIN 11111000
DATA BIN 11100000
DATA BIN 10000000
DATA "\E" : REM E
DATA BIN 11111110
DATA BIN 11111000
DATA BIN 11100000
DATA BIN 10000000
DATA BIN 00000000
DATA BIN 00000000
DATA BIN 00000000
DATA BIN 00000000
DATA "\F" : REM F
DATA BIN 01111111
DATA BIN 00011111
DATA BIN 00000111
DATA BIN 00000001
DATA BIN 00000000
DATA BIN 00000000
DATA BIN 00000000
DATA BIN 00000000
DATA "\G" : REM G
DATA BIN 11111111
DATA BIN 11111111
DATA BIN 11111111
DATA BIN 11111111
DATA BIN 01111111
DATA BIN 00011111
DATA BIN 00000111
DATA BIN 00000001
DATA "\H" : REM H
DATA BIN 11111111
DATA BIN 11111111
DATA BIN 11111111
DATA BIN 11111111
DATA BIN 00000000
DATA BIN 00000000
DATA BIN 00000000
DATA BIN 00000000
DATA "\I" : REM I
DATA BIN 11111110
DATA BIN 11111110
DATA BIN 11111110
DATA BIN 11111110
DATA BIN 11111110
DATA BIN 11111110
DATA BIN 11111110
DATA BIN 11111110
DATA "\J" : REM J
DATA BIN 01111111
DATA BIN 01111111
DATA BIN 01111111
DATA BIN 01111111
DATA BIN 01111111
DATA BIN 01111111
DATA BIN 01111111
DATA BIN 01111111
DATA "\L" : REM blank
DATA BIN 00000000
DATA BIN 00000000
DATA BIN 00000000
DATA BIN 00000000
DATA BIN 00000000
DATA BIN 00000000
DATA BIN 00000000
DATA BIN 00000000
DATA "\L" : REM blank
DATA BIN 00000000
DATA BIN 00000000
DATA BIN 00000000
DATA BIN 00000000
DATA BIN 00000000
DATA BIN 00000000
DATA BIN 00000000
DATA BIN 00000000
DATA ""
END PROCEDURE

PROCEDURE DefineMazeSize
CLS
PRINT AT 0,9;INK 3;"MAZE WALLS"
PRINT AT 10,0;
PRINT "Difficulty level:"
PRINT
PRINT "1 - Beginner     [ 5*5 ]"
PRINT "2 - Amateur      [ 9*9 ]": REM 2 * previous - 1
PRINT "3 - Professional [17*17]"
PRINT "4 - Expert       [33*33]"
PRINT
PRINT "Pick your poison"
REM INPUT "Size [1..4] ";SIZE
REPEAT
  PAUSE 0
  LET Key$ = INKEY$
UNTIL Key$ >= "1" AND Key$ <= "4"
BEEP .1,5
LET SIZE = VAL Key$
RANDOMIZE
END PROCEDURE

PROCEDURE MazeGame
BORDER 4: PAPER 4: INK 0: CLS
DefineMazeSize
GenerateMaze
LET b$ = Maze$(1)(1-1)
Game
REPEAT
  BORDER 6: PAPER 6: INK 0: CLS
  PRINT AT 22,0;INK 7;"(c) 2023 by ZARSOFT";AT 23,10;"Written by ZE OLIVEIRA";
  PRINT AT 0,9;INK 3;"MAZE WALLS"
  PRINT AT 10,5;"S - Same maze"
  PRINT AT 12,5;"N - New Maze"
  PRINT AT 14,5;"T - Terminate"
  PRINT AT 17,5;INK 1;"Your command ?"
  REPEAT
    PAUSE 0: LET Key$ = INKEY$
  UNTIL Key$="s" OR Key$="n" OR Key$="t"
  BEEP .1,5
  IF Key$="s" THEN CLS: ShowMaze: Game
  IF Key$="n" THEN DefineMazeSize: GenerateMaze: Game
UNTIL Key$="t"
END PROCEDURE

PROCEDURE InitProgram
LET f$ = "\A\A\A\A\A\A\A\A\A\A\A\A\A\A\A\A\A\A\A\A\A\A\A\A\A\A\A\A\A\A\A\A\A"
LET g$ = "\H\H\H\H\H\H\H\H\H\H\H\H\H\H\H\H\H\H\H\H\H\H\H\H\H\H\H\H\H\H\H\H\H"
REM walls
REM DIM Walls$(22,32)
LET Walls$(01) = ".\A\A\B\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\C\A\A"
LET Walls$(02) = ".\A\A\A\B\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\C\A\A\A"
LET Walls$(03) = ".\A\A\A\A\B\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\C\A\A\A\A"
LET Walls$(04) = ".\A\A\A\A\I\B\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\C\J\A\A\A\A"
LET Walls$(05) = ".\A\A\A\A\I\A\B\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\C\A\J\A\A\A\A"
LET Walls$(06) = ".\A\A\A\A\I\A\A\B\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\C\A\A\J\A\A\A\A"
LET Walls$(07) = ".\A\A\A\A\I\A\A\A\B\L\L\L\L\L\L\L\L\L\L\L\L\L\L\C\A\A\A\J\A\A\A\A"
LET Walls$(08) = ".\A\A\A\A\I\A\A\A\I\B\L\L\L\L\L\L\L\L\L\L\L\L\C\J\A\A\A\J\A\A\A\A"
LET Walls$(09) = ".\A\A\A\A\I\A\A\A\I\A\B\L\L\L\L\L\L\L\L\L\L\C\A\J\A\A\A\J\A\A\A\A"
LET Walls$(10) = ".\A\A\A\A\I\A\A\A\I\A\A\B\L\L\L\L\L\L\L\L\C\A\A\J\A\A\A\J\A\A\A\A"
LET Walls$(11) = ".\A\A\A\A\I\A\A\A\I\A\A\I\B\L\L\L\L\L\L\C\J\A\A\J\A\A\A\J\A\A\A\A"
LET Walls$(12) = ".\A\A\A\A\I\A\A\A\I\A\A\I\A\B\L\L\L\L\C\A\J\A\A\J\A\A\A\J\A\A\A\A"
LET Walls$(13) = ".\A\A\A\A\I\A\A\A\I\A\A\I\A\I\B\L\L\C\J\A\J\A\A\J\A\A\A\J\A\A\A\A"
LET Walls$(14) = ".\A\A\A\A\I\A\A\A\I\A\A\I\A\I\I\L\L\J\J\A\J\A\A\J\A\A\A\J\A\A\A\A"
LET Walls$(15) = ".\A\A\A\A\I\A\A\A\I\A\A\I\A\D\E\L\L\F\G\A\J\A\A\J\A\A\A\J\A\A\A\A"
LET Walls$(16) = ".\A\A\A\A\I\A\A\A\I\A\A\D\E\L\L\L\L\L\L\F\G\A\A\J\A\A\A\J\A\A\A\A"
LET Walls$(17) = ".\A\A\A\A\I\A\A\A\I\D\E\L\L\L\L\L\L\L\L\L\L\F\G\J\A\A\A\J\A\A\A\A"
LET Walls$(18) = ".\A\A\A\A\I\A\A\D\E\L\L\L\L\L\L\L\L\L\L\L\L\L\L\F\G\A\A\J\A\A\A\A"
LET Walls$(19) = ".\A\A\A\A\I\D\E\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\F\G\J\A\A\A\A"
LET Walls$(20) = ".\A\A\A\D\E\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\F\G\A\A\A"
LET Walls$(21) = ".\A\D\E\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\F\G\A"
LET Walls$(22) = ".\E\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\F"
REM holes
REM DIM Holes$(22,32)
LET Holes$(01) = ".\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L"
LET Holes$(02) = ".\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L"
LET Holes$(03) = ".\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L"
LET Holes$(04) = ".\A\A\A\A\I\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\J\A\A\A\A"
LET Holes$(05) = ".\A\A\A\A\I\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\J\A\A\A\A"
LET Holes$(06) = ".\A\A\A\A\I\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\J\A\A\A\A"
LET Holes$(07) = ".\A\A\A\A\I\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\J\A\A\A\A"
LET Holes$(08) = ".\A\A\A\A\I\A\A\A\I\L\L\L\L\L\L\L\L\L\L\L\L\L\L\J\A\A\A\J\A\A\A\A"
LET Holes$(09) = ".\A\A\A\A\I\A\A\A\I\L\L\L\L\L\L\L\L\L\L\L\L\L\L\J\A\A\A\J\A\A\A\A"
LET Holes$(10) = ".\A\A\A\A\I\A\A\A\I\L\L\L\L\L\L\L\L\L\L\L\L\L\L\J\A\A\A\J\A\A\A\A"
LET Holes$(11) = ".\A\A\A\A\I\A\A\A\I\A\A\I\L\L\L\L\L\L\L\L\J\A\A\J\A\A\A\J\A\A\A\A"
LET Holes$(12) = ".\A\A\A\A\I\A\A\A\I\A\A\I\L\L\L\L\L\L\L\L\J\A\A\J\A\A\A\J\A\A\A\A"
LET Holes$(13) = ".\A\A\A\A\I\A\A\A\I\A\A\I\A\I\L\L\L\L\J\A\J\A\A\J\A\A\A\J\A\A\A\A"
LET Holes$(14) = ".\A\A\A\A\I\A\A\A\I\A\A\I\A\I\I\L\L\J\J\A\J\A\A\J\A\A\A\J\A\A\A\A"
LET Holes$(15) = ".\A\A\A\A\I\A\A\A\I\A\A\I\H\H\L\L\L\L\H\H\J\A\A\J\A\A\A\J\A\A\A\A"
LET Holes$(16) = ".\A\A\A\A\I\A\A\A\I\H\H\H\L\L\L\L\L\L\L\L\H\H\H\J\A\A\A\J\A\A\A\A"
LET Holes$(17) = ".\A\A\A\A\I\A\A\A\I\L\L\L\L\L\L\L\L\L\L\L\L\L\L\J\A\A\A\J\A\A\A\A"
LET Holes$(18) = ".\A\A\A\A\I\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\J\A\A\A\A"
LET Holes$(19) = ".\A\A\A\A\I\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\J\A\A\A\A"
LET Holes$(20) = ".\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L"
LET Holes$(21) = ".\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L"
LET Holes$(22) = ".\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L\L"
REM lines coordinates
REM DIM LinesCoord(10,2)
LET LinesCoord(2,1) = 1: LET LinesCoord(2,2) = 22
LET LinesCoord(4,1) = 4: LET LinesCoord(4,2) = 19
LET LinesCoord(6,1) = 8: LET LinesCoord(6,2) = 17
LET LinesCoord(8,1) = 11: LET LinesCoord(8,2) = 15
LET LinesCoord(10,1) = 14: LET LinesCoord(10,2) = 14
REM columns coordinates
REM DIM ColsCoord(10,4)
LET ColsCoord(2,1) = 1: LET ColsCoord(2,2) = 5: LET ColsCoord(2,3) = 28: LET ColsCoord(2,4) = 32
LET ColsCoord(4,1) = 6: LET ColsCoord(4,2) = 9: LET ColsCoord(4,3) = 24: LET ColsCoord(4,4) = 27
LET ColsCoord(6,1) = 10: LET ColsCoord(6,2) = 12: LET ColsCoord(6,3) = 21: LET ColsCoord(6,4) = 23
LET ColsCoord(8,1) = 13: LET ColsCoord(8,2) = 14: LET ColsCoord(8,3) = 19: LET ColsCoord(8,4) = 20
LET ColsCoord(10,1) = 15: LET ColsCoord(10,2) = 15: LET ColsCoord(10,3) = 18: LET ColsCoord(10,4) = 18
END PROCEDURE

PROGRAM MazeWalls
PRINT AT 23,0;"Pascalated Boriel ZX BASIC demo";
PAUSE 1*50
DefineSprites
InitProgram
MazeGame
END PROGRAM
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)