home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
No Fragments Archive 10: Diskmags
/
nf_archive_10.iso
/
MAGS
/
ST_USER
/
1990
/
USERDC90.MSA
/
STOS.ARC
/
MAZEGAME.ASC
next >
Wrap
Text File
|
1987-04-22
|
4KB
|
102 lines
10 rem 3d-maze game
20 rem by Phil Lawson for Atari ST User (c) 1990
30 mode 0 : key off : curs off : key off
40 rem SET UP THE SCREENS
50 rem ******************
60 reserve as screen 5
70 reserve as screen 6
80 reserve as screen 7
90 unpack 10,5 : wait vbl
100 unpack 11,6 : wait vbl
110 rem INITIALISE THE ARRAYS
120 rem *********************
130 dim MAZE(16,16),TX(4,3,5),TY(4,3,5)
140 restore 700
150 for A=1 to 16 : for B=1 to 16 : read MAZE(B,A) : next B : next A
160 for A=1 to 4 : for B=3 to 1 step-1 : for C=1 to 5
170 read TX(A,B,C),TY(A,B,C) : next C : next B : next A
180 XP=13 : YP=13 : DI=1
190 rem DRAW THE SCREEN
200 rem ***************
210 cls 7
220 rem Put the back line in first
230 rem ==========================
240 screen copy 5,160,80,304,96 to 7,16,88
250 screen copy 5,160,80,304,96 to 7,80,88
260 rem Now put in line 3
270 rem =================
280 C=1 : gosub 290 : C=5 : gosub 290 : C=2 : gosub 290 : C=4 : gosub 290 : C=3 : gosub 290 : goto 360
290 if MAZE(XP+TX(DI,3,C),YP+TY(DI,3,C))=0 then 330
300 screen copy 5,96,31,144,79 to 7,(C*48)-48,72
310 if C<3 then screen copy 5,160,0,176,47 to 7,(C*48),73
320 if C>3 then screen copy 5,176,0,192,47 to 7,(C*48)-64,73
330 return
340 rem Now put in line 2
350 rem =================
360 if MAZE(XP+TX(DI,2,1),YP+TY(DI,2,1))=1 then screen copy 5,96,0,128,110 to 7,16,41
370 if MAZE(XP+TX(DI,2,5),YP+TY(DI,2,5))=1 then screen copy 5,128,0,160,110 to 7,200,41
380 S$=screen$(5,0,32 to 48,143) : XX=16 : for C=2 to 4 step 2
390 if MAZE(XP+TX(DI,2,C),YP+TY(DI,2,C))=0 then goto 420
400 screen$(7,XX,40)=S$ : if C=2 then screen copy 5,96,0,128,110 to 7,64,41 : wait vbl : goto 420
410 screen copy 5,128,0,160,110 to 7,154,41
420 XX=XX+160 : next C
430 if MAZE(XP+TX(DI,2,3),YP+TY(DI,2,3))=0 then goto 490
440 rem Now the position directly in front
450 rem ==================================
460 screen$(7,64,40)=S$ : screen$(7,110,40)=S$ : screen$(7,128,40)=S$
470 rem Draw the pieces directly left and right
480 rem =======================================
490 if MAZE(XP+TX(DI,1,2),YP+TY(DI,1,2))=1 then screen copy 5,0,0,48,176 to 7,16,8
500 if MAZE(XP+TX(DI,1,4),YP+TY(DI,1,4))=1 then screen copy 5,48,0,96,176 to 7,176,8
510 rem NOW DRAW THE BORDER AROUND THE IMAGE
520 rem ************************************
530 S$=screen$(6,40,0 to 280,196) : screen$(7,8,0)=S$
540 rem NOW COPY THE DRAWN SCREEN TO THE DISPLAY
550 rem ****************************************
560 wait vbl
570 screen copy 7,8,0,239,198 to physic,16,0 : wait vbl : screen copy physic to back : wait vbl
580 I$="" : while I$="" : I$=inkey$ : SC=scancode : wend
590 OK=0 : if SC=82 then dec DI : OK=1
600 if SC=71 then inc DI : OK=1
610 if DI<1 then DI=4 else if DI>4 then DI=1
620 TD=0
630 if SC=75 then TD=DI-1 : if TD=0 then TD=4
640 if SC=77 then TD=DI+1 : if TD=5 then TD=1
650 if SC=72 then TD=DI
660 if SC=80 then TD=DI+2 : if TD>4 then TD=TD-4
670 if OK=1 then goto 210
680 if MAZE(XP+TX(TD,2,3),YP+TY(TD,2,3))=0 then XP=XP+TX(TD,2,3) : YP=YP+TY(TD,2,3)
690 goto 210
700 data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
710 data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
720 data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
730 data 1,1,1,0,0,0,0,0,0,1,0,0,0,1,1,1
740 data 1,1,1,0,1,0,1,1,0,0,0,1,0,1,1,1
750 data 1,1,1,0,1,0,0,1,0,1,1,1,0,1,1,1
760 data 1,1,1,0,0,1,0,1,0,1,0,1,0,1,1,1
770 data 1,1,1,0,1,0,0,0,0,1,0,1,0,1,1,1
780 data 1,1,1,0,1,1,1,1,0,0,0,1,0,1,1,1
790 data 1,1,1,0,0,0,0,1,1,1,0,1,0,1,1,1
800 data 1,1,1,1,0,1,0,1,0,0,0,1,0,1,1,1
810 data 1,1,1,0,0,0,0,1,0,1,0,0,0,1,1,1
820 data 1,1,1,0,1,1,0,0,0,1,0,1,0,1,1,1
830 data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
840 data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
850 data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
860 rem data for direction 1
870 data-2,-2,-1,-2,0,-2,1,-2,2,-2
880 data-2,-1,-1,-1,0,-1,1,-1,2,-1
890 data-2,0,-1,0,0,0,1,0,2,0
900 rem data for direction 2
910 data 2,-2,2,-1,2,0,2,1,2,2
920 data 1,-2,1,-1,1,0,1,1,1,2
930 data 0,-2,0,-1,0,0,0,1,0,2
940 rem data for direction 3
950 data 2,2,1,2,0,2,-1,2,-2,2
960 data 2,1,1,1,0,1,-1,1,-2,1
970 data 2,0,1,0,0,0,-1,0,-2,0
980 rem data for direction 4
990 data-2,2,-2,1,-2,0,-2,-1,-2,-2
1000 data-1,2,-1,1,-1,0,-1,-1,-1,-2
1010 data 0,2,0,1,0,0,0,-1,0,-2