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)