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 >
Text File  |  1987-04-22  |  4KB  |  102 lines

  1. 10 rem 3d-maze game
  2. 20 rem by Phil Lawson for Atari ST User (c) 1990
  3. 30 mode 0 : key off : curs off : key off 
  4. 40 rem SET UP THE SCREENS
  5. 50 rem ******************
  6. 60 reserve as screen 5
  7. 70 reserve as screen 6
  8. 80 reserve as screen 7
  9. 90 unpack 10,5 : wait vbl 
  10. 100 unpack 11,6 : wait vbl 
  11. 110 rem INITIALISE THE ARRAYS
  12. 120 rem *********************
  13. 130 dim MAZE(16,16),TX(4,3,5),TY(4,3,5)
  14. 140 restore 700
  15. 150 for A=1 to 16 : for B=1 to 16 : read MAZE(B,A) : next B : next A
  16. 160 for A=1 to 4 : for B=3 to 1 step-1 : for C=1 to 5
  17. 170 read TX(A,B,C),TY(A,B,C) : next C : next B : next A
  18. 180 XP=13 : YP=13 : DI=1
  19. 190 rem DRAW THE SCREEN
  20. 200 rem ***************
  21. 210 cls 7
  22. 220 rem Put the back line in first
  23. 230 rem ==========================
  24. 240 screen copy 5,160,80,304,96 to 7,16,88
  25. 250 screen copy 5,160,80,304,96 to 7,80,88
  26. 260 rem Now put in line 3
  27. 270 rem =================
  28. 280 C=1 : gosub 290 : C=5 : gosub 290 : C=2 : gosub 290 : C=4 : gosub 290 : C=3 : gosub 290 : goto 360
  29. 290 if MAZE(XP+TX(DI,3,C),YP+TY(DI,3,C))=0 then 330
  30. 300 screen copy 5,96,31,144,79 to 7,(C*48)-48,72
  31. 310 if C<3 then screen copy 5,160,0,176,47 to 7,(C*48),73
  32. 320 if C>3 then screen copy 5,176,0,192,47 to 7,(C*48)-64,73
  33. 330 return 
  34. 340 rem Now put in line 2
  35. 350 rem =================
  36. 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
  37. 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
  38. 380 S$=screen$(5,0,32 to 48,143) : XX=16 : for C=2 to 4 step 2
  39. 390 if MAZE(XP+TX(DI,2,C),YP+TY(DI,2,C))=0 then goto 420
  40. 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
  41. 410 screen copy 5,128,0,160,110 to 7,154,41
  42. 420 XX=XX+160 : next C
  43. 430 if MAZE(XP+TX(DI,2,3),YP+TY(DI,2,3))=0 then goto 490
  44. 440 rem Now the position directly in front
  45. 450 rem ==================================
  46. 460 screen$(7,64,40)=S$ : screen$(7,110,40)=S$ : screen$(7,128,40)=S$
  47. 470 rem Draw the pieces directly left and right
  48. 480 rem =======================================
  49. 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
  50. 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
  51. 510 rem NOW DRAW THE BORDER AROUND THE IMAGE
  52. 520 rem ************************************
  53. 530 S$=screen$(6,40,0 to 280,196) : screen$(7,8,0)=S$
  54. 540 rem NOW COPY THE DRAWN SCREEN TO THE DISPLAY
  55. 550 rem ****************************************
  56. 560 wait vbl 
  57. 570 screen copy 7,8,0,239,198 to physic,16,0 : wait vbl : screen copy physic to back : wait vbl 
  58. 580 I$="" : while I$="" : I$=inkey$ : SC=scancode : wend 
  59. 590 OK=0 : if SC=82 then dec DI : OK=1
  60. 600 if SC=71 then inc DI : OK=1
  61. 610 if DI<1 then DI=4 else if DI>4 then DI=1
  62. 620 TD=0
  63. 630 if SC=75 then TD=DI-1 : if TD=0 then TD=4
  64. 640 if SC=77 then TD=DI+1 : if TD=5 then TD=1
  65. 650 if SC=72 then TD=DI
  66. 660 if SC=80 then TD=DI+2 : if TD>4 then TD=TD-4
  67. 670 if OK=1 then goto 210
  68. 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)
  69. 690 goto 210
  70. 700 data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
  71. 710 data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
  72. 720 data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
  73. 730 data 1,1,1,0,0,0,0,0,0,1,0,0,0,1,1,1
  74. 740 data 1,1,1,0,1,0,1,1,0,0,0,1,0,1,1,1
  75. 750 data 1,1,1,0,1,0,0,1,0,1,1,1,0,1,1,1
  76. 760 data 1,1,1,0,0,1,0,1,0,1,0,1,0,1,1,1
  77. 770 data 1,1,1,0,1,0,0,0,0,1,0,1,0,1,1,1
  78. 780 data 1,1,1,0,1,1,1,1,0,0,0,1,0,1,1,1
  79. 790 data 1,1,1,0,0,0,0,1,1,1,0,1,0,1,1,1
  80. 800 data 1,1,1,1,0,1,0,1,0,0,0,1,0,1,1,1
  81. 810 data 1,1,1,0,0,0,0,1,0,1,0,0,0,1,1,1
  82. 820 data 1,1,1,0,1,1,0,0,0,1,0,1,0,1,1,1
  83. 830 data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
  84. 840 data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
  85. 850 data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
  86. 860 rem data for direction 1
  87. 870 data-2,-2,-1,-2,0,-2,1,-2,2,-2
  88. 880 data-2,-1,-1,-1,0,-1,1,-1,2,-1
  89. 890 data-2,0,-1,0,0,0,1,0,2,0
  90. 900 rem data for direction 2
  91. 910 data 2,-2,2,-1,2,0,2,1,2,2
  92. 920 data 1,-2,1,-1,1,0,1,1,1,2
  93. 930 data 0,-2,0,-1,0,0,0,1,0,2
  94. 940 rem data for direction 3
  95. 950 data 2,2,1,2,0,2,-1,2,-2,2
  96. 960 data 2,1,1,1,0,1,-1,1,-2,1
  97. 970 data 2,0,1,0,0,0,-1,0,-2,0
  98. 980 rem data for direction 4
  99. 990 data-2,2,-2,1,-2,0,-2,-1,-2,-2
  100. 1000 data-1,2,-1,1,-1,0,-1,-1,-1,-2
  101. 1010 data 0,2,0,1,0,0,0,-1,0,-2
  102.