home *** CD-ROM | disk | FTP | other *** search
/ AMOS PD CD / amospdcd.iso / 126-150 / apd137 / autoexec.amos / autoexec.amosSourceCode
AMOS Source Code  |  1990-08-11  |  6KB  |  301 lines

  1. '  This Program is SHAREWARE 
  2. '  If you would like to receive updates etc. 
  3. '  Please send five pounds registration fee to 
  4. '  D. Ramsey, 2 The Paddocks, Haddenham< Bucks. HP17 8AG. ThankYou 
  5. On Error Goto HELP
  6. Break Off 
  7. Screen Open 0,320,256,2,Lowres : Cls 0 : Hide On 
  8. Curs Off : GAME=1 : Dir$="df0:" : LEVEL=1 : 
  9. Load "music.abk" : Music 1
  10. LL:
  11. Dim TILE(5,5),NAME$(6),HISCORE(6)
  12. For T=1 To 5 : Read NAME$(T),HISCORE(T) : Next 
  13. Data "AMOS",3500,"MANDARIN",3000,"PIXEL",500,"PRECISON",200,"SOFTWARE",100
  14. Screen Open 1,320,20,2,Lowres : Cls 0 : Screen Display 1,,150,,
  15. Flash Off : 
  16. Palette 0,$111,$222,$333,$444,$555,$666,$777,$888,$999,$AAA,$BBB,$CCC,$DDD,$EEE,$FFF
  17. TXT$="          Dom Ramsey Presents"
  18. Gosub FADTXT
  19. TXT$="     A Pixel Precision Production"
  20. Gosub FADTXT
  21. LLL:
  22. Hide On : Gosub TITLE : SCORE=0
  23. LLLL:
  24. GAME$=Right$(Str$(GAME),1)
  25. GAME$="screen"+GAME$+".iff"
  26. Load Iff GAME$,0
  27. Double Buffer : Screen Hide 0
  28. MNS=0 : SECS=0 : Inc LEVEL
  29. C=0
  30. For Y=0 To 4
  31. For X=0 To 4
  32. Inc C
  33. Get Bob 0,C,(X*40)+14,(Y*40)+46 To(X*40)+55,(Y*40)+87
  34. Next X
  35. Next Y
  36. Get Bob 0,26,244,191 To 293,240
  37. M:
  38. C=1
  39. For Y=0 To 4
  40. For X=0 To 4
  41. TILE(X,Y)=C
  42. Inc C
  43. Next X
  44. Next Y
  45. Limit Mouse 143,89 To 340,286
  46. '
  47. 'Main loop 
  48. '
  49. GOES=0
  50. Gosub MESSBOARD
  51. Ink 31,22 : LEVEL$=Str$(LEVEL-1) : LEVEL$=Right$(LEVEL$,Len(LEVEL$)-1)
  52. LEVEL$=String$("0",3-Len(LEVEL$))+LEVEL$ : Text 255,98,LEVEL$
  53. Timer=0
  54. L:
  55. Gosub GTMOVE
  56. Gosub CHKMOVE
  57.  If NOMOVED=1 Then Goto L
  58. Gosub MOVETILE
  59. Gosub CHKDONE
  60. Goto L
  61. '
  62. '
  63. '
  64. End 
  65. '
  66. FADTXT:
  67. Ink 1,0
  68. For T=0 To 15 : Colour 1,(16*16*T)+(16*T)+T : Wait Vbl : Text 1,10,TXT$ : Wait 4 : Next T
  69. Wait 5
  70. For T=15 To 0 Step -1 : Colour 1,(16*16*T)+(16*T)+T : Wait Vbl : Text 1,10,TXT$ : Wait 4 : Next T
  71. Wait 20
  72. Return 
  73. '
  74. GTMOVE:
  75. Show On 
  76.  While Mouse Key=0
  77.   X=X Screen(X Mouse)-14
  78.   Y=Y Screen(Y Mouse)-46
  79.   T=Timer/50 : MNS=T/60 : SECS=T-(MNS*60) : SEC$=Str$(SECS)
  80.   If Len(SEC$)=2 Then SEC$="0"+Right$(SEC$,1) Else SEC$=Right$(SEC$,2)
  81.   T$=Str$(MNS)+":"+SEC$
  82.   Ink 31,22 : Text 244,138,T$
  83.  If MNS=3 Then Goto TIMEUP
  84. Wend 
  85. Hide On 
  86. X=X/40 : Y=Y/40
  87. Return 
  88. '
  89. CHKMOVE:
  90. RT=0 : LT=0 : UP=0 : DN=0 : NOMOVED=0
  91.  Gosub CHKUP
  92.  Gosub CHKDN
  93.  Gosub CHKRT
  94.  Gosub CHKLT
  95. If(LT=0 and RT=0 and UP=0 and DN=0) Then NOMOVED=1
  96. If NOMOVED=0 Then GOES=GOES+1
  97. Return 
  98. '
  99. CHKUP:
  100. If Y=0 Then Return 
  101. If TILE(X,Y-1)=1 Then UP=1
  102. Return 
  103. '
  104. CHKDN:
  105. If Y=4 Then Return 
  106. If TILE(X,Y+1)=1 Then DN=1
  107. Return 
  108. '
  109. CHKLT:
  110. If X=0 Then Return 
  111. If TILE(X-1,Y)=1 Then LT=1
  112. Return 
  113. '
  114. CHKRT:
  115. If X=4 Then Return 
  116. If TILE(X+1,Y)=1 Then RT=1
  117. Return 
  118. '
  119. '
  120. MOVETILE:
  121. If UP=1 Then Gosub MVUP
  122. If DN=1 Then Gosub MVDN
  123. If RT=1 Then Gosub MVRT
  124. If LT=1 Then Gosub MVLT
  125. Return 
  126. '
  127. MVUP:
  128. Paste Bob(X*40)+14,(Y*40)+46,1
  129. For YY=0 To 39
  130. Wait Vbl 
  131. Bob 1,(X*40)+14,(Y*40)+46-YY,TILE(X,Y)
  132. Next YY
  133. Shoot 
  134. Paste Bob(X*40)+14,((Y-1)*40)+46,TILE(X,Y)
  135. Bob Off 
  136. TILE(X,Y-1)=TILE(X,Y) : TILE(X,Y)=1
  137. Return 
  138. '
  139. MVLT:
  140. Paste Bob(X*40)+14,(Y*40)+46,1
  141. For XX=0 To 39
  142. Wait Vbl 
  143. Bob 1,(X*40)+14-XX,(Y*40)+46,TILE(X,Y)
  144. Next XX
  145. Shoot 
  146. Paste Bob((X-1)*40)+14,(Y*40)+46,TILE(X,Y)
  147. Bob Off 
  148. TILE(X-1,Y)=TILE(X,Y) : TILE(X,Y)=1
  149. Return 
  150. '
  151. MVRT:
  152. Paste Bob(X*40)+14,(Y*40)+46,1
  153. For XX=0 To 39
  154. Wait Vbl 
  155. Bob 1,(X*40)+14+XX,(Y*40)+46,TILE(X,Y)
  156. Next XX
  157. Shoot 
  158. Paste Bob((X+1)*40)+14,(Y*40)+46,TILE(X,Y)
  159. Bob Off 
  160. TILE(X+1,Y)=TILE(X,Y) : TILE(X,Y)=1
  161. Return 
  162. '
  163. MVDN:
  164. Paste Bob(X*40)+14,(Y*40)+46,1
  165. For YY=0 To 39
  166. Wait Vbl 
  167. Bob 1,(X*40)+14,(Y*40)+46+YY,TILE(X,Y)
  168. Next YY
  169. Shoot 
  170. Paste Bob(X*40)+14,(Y*40)+46+YY,TILE(X,Y)
  171. Bob Off 
  172. TILE(X,Y+1)=TILE(X,Y) : TILE(X,Y)=1
  173. Return 
  174. '
  175. '
  176. MESSBOARD:
  177. For M=1 To(15+(7*LEVEL))
  178. LP:
  179. X=Rnd(4) : Y=Rnd(4)
  180.  Gosub CHKMOVE
  181. If NOMOVED=1 Then Goto LP
  182. If DN=1 Then TILE(X,Y+1)=TILE(X,Y) : TILE(X,Y)=1
  183. If RT=1 Then TILE(X+1,Y)=TILE(X,Y) : TILE(X,Y)=1
  184. If LT=1 Then TILE(X-1,Y)=TILE(X,Y) : TILE(X,Y)=1
  185. If UP=1 Then TILE(X,Y-1)=TILE(X,Y) : TILE(X,Y)=1
  186. Next 
  187. C=0
  188. For Y=0 To 4
  189. For X=0 To 4
  190. Inc C
  191. Paste Bob(X*40)+14,(Y*40)+46,TILE(X,Y)
  192. Next X
  193. Next Y
  194. Gosub VOLDOWN
  195. Screen Show 0
  196. Return 
  197. '
  198. CHKDONE:
  199. C=0
  200. For Y=0 To 4
  201. For X=0 To 4
  202. Inc C : If TILE(X,Y)<>C Then Return 
  203. Next X
  204. Next Y
  205. Gosub VOLUP
  206. S=Timer/50 : S=(300-S)*5
  207. S=(SCORE+S-(3*GOES)+(3*LEVEL))/5 : S=S*2 : SCORE=SCORE+S
  208. If SCORE<0 Then SCORE=0
  209. Load "Congrats.abk",7 : Unpack 7 To 1 : Screen Display 1,,320,, : Erase 7
  210. Ink 1,6 : Text 190,66,Str$(SCORE)
  211. Ink 1,7
  212. SECS=60-SECS : SEC$=Str$(SECS)
  213. SEC$=Right$(SEC$,Len(SEC$)-1) : If Len(SEC$)=1 Then SEC$="0"+SEC$
  214. T$=Str$(2-MNS)+":"+SEC$
  215. Text 50,48,T$
  216. For Y=300 To 120 Step -2
  217. Wait Vbl 
  218. Screen Display 1,,Y,,
  219. Next 
  220. Screen 0 : Fade 12
  221. GOES=0 : Wait 150 : Add GAME,1,1 To 10
  222. Goto LLLL
  223. Return 
  224. '
  225. '
  226. TIMEUP:
  227. Hide On 
  228. Gosub VOLUP
  229. SCORE=SCORE+(3*LEVEL)
  230. If SCORE<10 Then SCORE=0
  231. Load "BadLuck.abk",7 : Unpack 7 To 1 : Screen Display 1,,320,,
  232. Erase 7
  233. Ink 1,6 : Text 190,74,Str$(SCORE)
  234. For Y=300 To 120 Step -2
  235. Wait Vbl : Screen Display 1,,Y,,
  236. Next 
  237. Gosub CHKHISCORE
  238. Screen 0 : Fade 12 : Wait 350 : Screen 1 : GAME=1 : LEVEL=1
  239. Goto LLL
  240. '
  241. TITLE:
  242. Screen Hide 0
  243. Load Iff "titlescreen.Iff",0
  244. Screen Display 0,,320,,
  245. For Y=320 To 42 Step -4
  246. Wait Vbl 
  247. Screen Display 0,,Y,,
  248. Next 
  249. Wait 10 : Load "Hiscoretable.abk",7
  250. Unpack 7 To 1 : Screen Display 1,,320,, : SD=319 : SDX=-1
  251. Ink 6,3 : Erase 7 : For T=1 To 5 : S=15-Len(NAME$(T))
  252. T$=Str$(T)+"  "+NAME$(T)+String$(".",S)+Str$(HISCORE(T))
  253. Text 50,40+(10*T),T$
  254. Next T
  255. While Mouse Key=0
  256. Add SD,SDX,30 To 320
  257. Wait Vbl 
  258. Screen Display 1,,SD,,
  259. If SD=320 or SD=30 Then SDX=-SDX
  260. Wend : Screen 0 : Fade 4
  261. For Y=SD To 320 : Wait Vbl : Screen Display 1,,Y,, : Next 
  262. Screen 1 : Cls 0
  263. Return 
  264. '
  265. VOLDOWN:
  266. For MV=63 To 0 Step -1 : Wait Vbl : Mvolume MV : Next 
  267. Return 
  268. VOLUP:
  269. For MV=0 To 63 : Wait Vbl : Mvolume MV : Next 
  270. Return 
  271. '
  272. '
  273. CHKHISCORE:
  274. For T=1 To 5
  275.  If SCORE=>HISCORE(T)
  276.   If T=5
  277.   HISCORE(5)=SCORE : Gosub GTNAME : Return 
  278.  End If 
  279. For S=5 To T Step -1
  280. HISCORE(S)=HISCORE(S-1) : NAME$(S)=NAME$(S-1)
  281. Next S
  282. Gosub GTNAME : Return 
  283. End If 
  284. Next T
  285. Return 
  286. '
  287. GTNAME:
  288. Hide On 
  289. Screen Open 2,320,20,2,Lowres : Screen Display 2,,320,,
  290. Paper 0 : Colour 1,$FFF : Pen 1 : Print "  ENTER YOUR NAME  (MAX 10 LETTERS)"
  291. For SD=320 To 98 Step -2 : Wait Vbl : Screen Display 2,,SD,, : Next 
  292. Locate 10,1
  293. Input NAME$(T)
  294. If Len(NAME$(T))>10 Then NAME$(T)=Left$(NAME$(T),10)
  295. NAME$(T)=Upper$(NAME$(T))
  296. HISCORE(T)=SCORE
  297. For SD=98 To 320 Step 2 : Wait Vbl : Screen Display 2,,SD,, : Next 
  298. Return 
  299. '
  300. HELP:
  301. Resume