home *** CD-ROM | disk | FTP | other *** search
/ AMOS PD CD / amospdcd.iso / 476-500 / apd478 / led_clones.amos / led_clones.amosSourceCode < prev   
AMOS Source Code  |  1988-02-16  |  11KB  |  533 lines

  1. Cls 0 : Change Mouse 2
  2. Get Disc Fonts 
  3. Set Font 2
  4. Dir$="marksman:leds"
  5. Load "ledmusic.abk"
  6. Load "led-samples.abk"
  7. Music 1
  8. Ink 4,0
  9.  Dim HIGHSCORE(9) : Dim HIGHSCORE$(9) : For F=0 To 9 : HIGHSCORE(F)=0 : HIGHSCORE$(F)="CHAZ" : 
  10. Next F
  11. Dim CLONX(6) : Dim CLONY(6)
  12.  Global CLONX(),CLONY()
  13. METHOD=0
  14.      BEGIN:
  15. Screen Open 0,320,256,32,Lowres
  16. CLONX(1)=166 : CLONX(2)=90 : CLONX(3)=287 : CLONX(4)=47 : CLONX(5)=137 : CLONX(6)=227
  17. CLONY(1)=164 : CLONY(2)=133 : CLONY(3)=134 : CLONY(4)=104 : CLONY(5)=104 : CLONY(6)=104
  18. ' initialise  variables  
  19. Rem MX & MY =X & Y co-ordinates,Mshot=trigger value(-1=trigger pressed,0=trigger not pressed)
  20. XCAL=0 : YCAL=0
  21. MX=0 : MY=0 : MSHOT=0 : SCORE=0 : LIVES=10 : MEHIT=0 : LEVEL=1 : KILED=0 : Amreg(0)=15 : Amreg(1)=20 : Amreg(2)=0
  22. MXPTR=Varptr(MX)
  23. MYPTR=Varptr(MY)
  24. MSHOTPTR=Varptr(MSHOT)
  25. OLDSHOT=0
  26. ' Initialise Gun and screen
  27. Dreg(0)=0
  28. Call 6
  29. Load "ledhi.abk"
  30. Curs Off : Flash Off : Paper 0 : Pen 2 : Cls : Get Sprite Palette 
  31. If METHOD=0 Then Proc METHOD : Cls 
  32. Bob Off 1
  33. Load "lev1.abk" : Load "lev1.iff.abk",7
  34. If METHOD=1
  35. If THRU=0
  36. Proc CALIBRATEGUN
  37. End If 
  38. End If 
  39. THRU=1
  40. Bob Off 1
  41. '
  42. Cls 0
  43. Hide 
  44. Set Font 2
  45. Ink 1,0
  46. Text X Graphic(17),Y Graphic(11),"LEVEL"
  47. Text X Graphic(19),Y Graphic(13),"1"
  48. Wait 45
  49. Screen Close 0
  50. Screen Open 0,320,256,32,Lowres : Double Buffer 
  51. Hide 
  52. Get Sprite Palette 
  53.  Flash Off : Curs Off 
  54. Unpack 7 : Hide 
  55. Locate 2,1 : Print "score:0" : For GUN=1 To 10 : Paste Bob 80+(GUN*20),9,29 : Next GUN
  56. For V=63 To 0 Step -1
  57. Mvolume V
  58. Wait 2
  59. Next V
  60. Music Stop 
  61. Wait 30
  62. Sam Play 1,1,14300
  63. Wait 75
  64. '
  65. '
  66. ' main loop which gives screen X & Y position
  67. Update Every 2
  68. MAIN_LOOP:
  69. While KILED<20+LEVEL*2
  70.     Proc PICK
  71. For DELAY=1 To 130
  72.       If METHOD=1
  73.        Proc TRIGGER
  74.         Else Proc MOOSE
  75.         End If 
  76.       If MSHOT=-1 Then Bob 1,MX,MY,1 : If Bob Col(1,2 To 8) Then Proc HIT_WHO
  77.  Proc HITME
  78. If LIVES=0 Then MYDEATH : Goto BEGIN
  79. Next DELAY
  80. '
  81. Wait Vbl 
  82. Wend 
  83. Proc NEX_LEVEL
  84. KILED=0
  85. Goto MAIN_LOOP
  86. '
  87. ' Wait for the trigger to be pressed then return 
  88. Procedure TRIGWAIT
  89.    Shared MSHOT,MSHOTPTR
  90.    ' init trigger 
  91.    Dreg(0)=0
  92.    Call 6
  93.    MSHOT=0
  94.    Repeat 
  95.       MSHOT=Jleft(1)
  96.    Until MSHOT=-1
  97. End Proc
  98. '
  99. ' Read the trigger and goto beampos if pressed, should be last routine called  
  100. Procedure TRIGGER
  101.    Shared MSHOT,OLDSHOT,MSHOTPTR
  102.    ' read trigger - valptr in a0
  103.    MSHOT=Jleft(1)
  104.    If MSHOT<>OLDSHOT
  105.       OLDSHOT=MSHOT
  106.       If MSHOT=-1 : Proc BEAMPOS : Sam Play 2,5,16000 : End If 
  107.    Else 
  108.       Wait Vbl 
  109.       MSHOT=0
  110.    End If 
  111. End Proc
  112. '
  113. ' Return values in  MX,MY,MSHOT = -1 if shot 
  114. Procedure BEAMPOS
  115.    Shared MSHOT,MX,MY,MXPTR,MYPTR,MSHOTPTR,XCAL,YCAL
  116.    Dreg(0)=2
  117.    Dreg(1)=Cop Logic
  118.    Dreg(2)=Phybase(0)
  119.    Dreg(3)=Phybase(1)
  120.    Dreg(4)=Phybase(2)
  121.    Dreg(5)=Phybase(3)
  122.    Areg(0)=MXPTR
  123.    Areg(1)=MYPTR
  124.    Areg(2)=MSHOTPTR
  125.    Call 6
  126.    MX=MX+XCAL
  127.    MY=MY+YCAL
  128.    If MY<0 or MY>255 Then MSHOT=0
  129. End Proc
  130. Procedure PSYCHO_ONE
  131. Shared MEHIT
  132. MEHIT=0
  133. Bob 2,CLONX(1),CLONY(1),32
  134. Channel 2 To Bob 2
  135. A$="A 1,(5,RA)(4,RA)(3,RA)(2,RB)(14,RA)(2,RA)(3,RA)(4,RA)(5,RA)(32,RA)"
  136. Amal 2,A$
  137. Amal On 2
  138. End Proc
  139. Procedure PSYCHO_TWO
  140. Shared MEHIT
  141. MEHIT=0
  142. Bob 3,CLONX(2),CLONY(2),32
  143. Channel 3 To Bob 3
  144. A$="A 1,(9,RA)(8,RA)(7,RA)(6,RB)(15,RA)(6,RA)(7,RA)(8,RA)(9,RA)(32,RA)"
  145. Amal 3,A$
  146. Amal On 3
  147. End Proc
  148. Procedure PSYCHO_THREE
  149. Shared MEHIT
  150. MEHIT=0
  151. Bob 4,CLONX(3),CLONY(3),32
  152. Channel 4 To Bob 4
  153. A$="A 1,(9,RA)(8,RA)(7,RA)(6,RB)(15,RA)(6,RA)(7,RA)(8,RA)(9,RA)(32,RA)"
  154. Amal 4,A$
  155. Amal On 4
  156. End Proc
  157. Procedure PSYCHO_FOUR
  158. Shared MEHIT
  159. MEHIT=0
  160. Bob 5,CLONX(4),CLONY(4),32
  161. Channel 5 To Bob 5
  162. A$="A 1,(13,RA)(12,RA)(11,RA)(10,RB)(16,RA)(10,RA)(11,RA)(12,RA)(13,RA)(32,RA)"
  163. Amal 5,A$
  164. Amal On 5
  165. End Proc
  166. Procedure PSYCHO_FIVE
  167. Shared MEHIT
  168. MEHIT=0
  169. Bob 6,CLONX(5),CLONY(5),32
  170. Channel 6 To Bob 6
  171. A$="A 1,(13,RA)(12,RA)(11,RA)(10,RB)(16,RA)(10,RA)(11,RA)(12,RA)(13,RA)(32,RA)"
  172. Amal 6,A$
  173. Amal On 6
  174. End Proc
  175. Procedure PSYCHO_SIX
  176. Shared MEHIT
  177. MEHIT=0
  178. Bob 7,CLONX(6),CLONY(6),32
  179. Channel 7 To Bob 7
  180. A$="A 1,(13,RA)(12,RA)(11,RA)(10,RB)(16,RA)(10,RA)(11,RA)(12,RA)(13,RA)(32,RA)"
  181. Amal 7,A$
  182. Amal On 7
  183. End Proc
  184. Procedure DIE_ONE
  185. Amal Off 2
  186. Bob 2,CLONX(1),CLONY(1),17
  187. Channel 2 To Bob 2
  188. A$="A 1,(17,5)(18,5)(19,5)(20,5)(5,5)(32,5)"
  189. Amal 2,A$
  190. Amal On 2
  191. ADSCORE
  192. End Proc
  193. Procedure DIE_TWO
  194. Amal Off 3
  195. Bob 3,CLONX(2),CLONY(2),21
  196. Channel 3 To Bob 3
  197. A$="A 1,(21,5)(22,5)(23,5)(24,5)(32,5)"
  198. Amal 3,A$
  199. Amal On 3
  200. ADSCORE
  201. End Proc
  202. Procedure DIE_THREE
  203. Amal Off 4
  204. Bob 4,CLONX(3),CLONY(3),21
  205. Channel 4 To Bob 4
  206. A$="A 1,(21,5)(22,5)(23,5)(24,5)(32,5)"
  207. Amal 4,A$
  208. Amal On 4
  209. ADSCORE
  210. End Proc
  211. Procedure DIE_FOUR
  212. Amal Off 5
  213. Bob 5,CLONX(4),CLONY(4),25
  214. Channel 5 To Bob 5
  215. A$="A 1,(25,5)(26,5)(27,5)(28,5)(32,5)"
  216. Amal 5,A$
  217. Amal On 5
  218. ADSCORE
  219. End Proc
  220. Procedure DIE_FIVE
  221. Amal Off 6
  222. Bob 6,CLONX(5),CLONY(5),25
  223. Channel 6 To Bob 6
  224. A$="A 1,(25,5)(26,5)(27,5)(28,5)(32,5)"
  225. Amal 6,A$
  226. Amal On 6
  227. ADSCORE
  228. End Proc
  229. Procedure DIE_SIX
  230. Amal Off 7
  231. Bob 7,CLONX(6),CLONY(6),25
  232. Channel 7 To Bob 7
  233. A$="A 1,(25,5)(26,5)(27,5)(28,5)(32,5)"
  234. Amal 7,A$
  235. Amal On 7
  236. ADSCORE
  237. End Proc
  238. Procedure PICK
  239. PICK:
  240. P=Rnd(5)+1
  241. If Chanan(P+1) Then Goto PICK
  242. If P=1 Then Proc PSYCHO_ONE
  243. If P=2 Then Proc PSYCHO_TWO
  244. If P=3 Then Proc PSYCHO_THREE
  245. If P=4 Then Proc PSYCHO_FOUR
  246. If P=5 Then Proc PSYCHO_FIVE
  247. If P=6 Then Proc PSYCHO_SIX
  248. End Proc
  249. Procedure HIT_WHO
  250. If Bob Col(2,0 To 1)
  251. If I Bob(2)<=17
  252. Amal Off 2 : Bob 2,,,17 : Sam Play 1,3,22000 : DIE_ONE
  253. End If 
  254. End If 
  255. If Bob Col(3,0 To 1)
  256. If I Bob(3)<=21
  257. Amal Off 3 : Bob 3,,,21 : Sam Play 1,3,22000 : DIE_TWO
  258. End If 
  259. End If 
  260. If Bob Col(4,0 To 1)
  261. If I Bob(4)<=21
  262. Amal Off 4 : Bob 4,,,21 : Sam Play 1,3,22000 : DIE_THREE
  263. End If 
  264. End If 
  265. If Bob Col(5,0 To 1)
  266. If I Bob(5)<=25
  267. Amal Off 5 : Bob 5,,,25 : Sam Play 1,3,22000 : DIE_FOUR
  268. End If 
  269. End If 
  270. If Bob Col(6,0 To 1)
  271. If I Bob(6)<=25
  272. Amal Off 6 : Bob 6,,,25 : Sam Play 1,3,22000 : DIE_FIVE
  273. End If 
  274. End If 
  275. If Bob Col(7,0 To 1)
  276. If I Bob(7)<=25
  277. Amal Off 7 : Bob 7,,,25 : Sam Play 1,3,22000 : DIE_SIX
  278. End If 
  279. End If 
  280. Bob Off 1
  281. End Proc
  282. Procedure ADSCORE
  283. Shared SCORE
  284. SCORE=SCORE+10
  285. Shared KILED
  286. KILED=KILED+1
  287. Locate 7,1 : Print SCORE
  288. End Proc
  289. Procedure HITME
  290. Shared MEHIT
  291. For A=5 To 7
  292. If Chanan(A)
  293.     If I Bob(A)=16
  294.      If MEHIT=0
  295.       Sam Play 4,4,17000 : Sam Play 2,3,27000 : Proc INJ : MEHIT=1
  296.     End If 
  297. End If 
  298. End If 
  299. Next A
  300. For B=3 To 4
  301. If Chanan(B)
  302.     If I Bob(B)=15
  303. If MEHIT=0
  304.       Sam Play 4,4,17000 : Sam Play 2,3,27000 : Proc INJ : MEHIT=1
  305.     End If 
  306. End If 
  307. End If 
  308. Next B
  309. If Chanan(2)
  310.     If I Bob(2)=14
  311. If MEHIT=0
  312.       Sam Play 4,4,17000 : Sam Play 2,3,27000 : Proc INJ : MEHIT=1
  313.     End If 
  314. End If 
  315. End If 
  316. End Proc
  317. ' Calibrate the gun
  318. Procedure CALIBRATEGUN
  319. Hide 
  320.    Shared MSHOT,XCAL,YCAL,MX,MY
  321. Bob 1,399,399,
  322. Bob Off 1
  323. Cls 0
  324.    Text 50,180,"Fire at cross-hair to calibrate gun"
  325.    Paste Bob 160,100,31
  326.    OK=False
  327.    Repeat 
  328.       XCAL=0 : YCAL=0
  329.       ' clear trigger
  330.       MSHOT=0
  331.       ' init trigger 
  332.       Dreg(0)=0
  333.       Call 6
  334.       Repeat 
  335.          Proc TRIGGER
  336.       Until MSHOT=-1
  337.       XCAL=160-MX
  338.       YCAL=100-MY
  339.       If XCAL<40 and XCAL>-40 Then OK=True
  340.       If YCAL<80 and YCAL>-80 Then OK=True
  341.    Until OK
  342.    MX=0 : MY=0
  343. Cls 
  344. End Proc
  345. Procedure INJ
  346. Shared LIVES
  347. LIVES=LIVES-1
  348. If LIVES=9 Then Paste Bob 280,9,30
  349. If LIVES=8 Then Paste Bob 260,9,30
  350. If LIVES=7 Then Paste Bob 240,9,30
  351. If LIVES=6 Then Paste Bob 220,9,30
  352. If LIVES=5 Then Paste Bob 200,9,30
  353. If LIVES=4 Then Paste Bob 180,9,30
  354. If LIVES=3 Then Paste Bob 160,9,30
  355. If LIVES=2 Then Paste Bob 140,9,30
  356. If LIVES=1 Then Paste Bob 120,9,30
  357. End Proc
  358. Procedure METHOD
  359. Shared METHOD
  360. Show 
  361. Reserve Zone 2
  362. A$=Zone$(" MOUSE ",1)
  363. B$=Zone$(" PHAZER ",2)
  364. Set Font 2
  365. Ink 4,0
  366. Bob 1,80,0,4
  367. Text 20,110,"This Game can be Played with a Mouse"
  368. Text 90,130,"Or....even better,"
  369. Text 115,150,"with a"
  370. Text 80,170,"TROJAN LIGHT PHAZER"
  371. Text 105,190,"Please Select."
  372. Locate 10,25 : Paper 5 : Print A$
  373. Locate 20,25 : Paper 5 : Print B$
  374. DEL:
  375. If Mouse Zone=1 and Mouse Key=1 Then METHOD=2 : Paper 0 : Pop Proc
  376. If Mouse Zone=2 and Mouse Key=1 Then METHOD=1 : Paper 0 : Pop Proc
  377. Goto DEL
  378. Bob 1,300,300,1
  379. Bob Off 1
  380. End Proc
  381. Procedure DEL
  382. Shared METHOD
  383. While W<1
  384. If METHOD=1 Then TRIGWAIT : W=1
  385. If METHOD=2 and Mouse Key=1 Then W=1
  386. Wend 
  387. End Proc
  388. Procedure MOOSE
  389. Shared MSHOT,MX,MY
  390. MSHOT=0
  391. For D=1 To 5
  392. M=Mouse Click
  393. If M=1 Then MSHOT=-1 : Sam Play 2,5,16000
  394. MX=X Screen(X Mouse) : MY=Y Screen(Y Mouse)
  395. Next D
  396. M=0
  397. Bob 10,MX,MY,33
  398. End Proc
  399. Procedure NEX_LEVEL
  400. Wait 30
  401. Shared LEVEL,METHOD,LIVES,CLONX(),CLONY()
  402. LEVEL=LEVEL+1
  403. If LEVEL=10
  404. ENGAME
  405. End If 
  406. Screen Open 2,320,200,4,Lowres
  407. Curs Off 
  408. Screen 2
  409. Cls 0
  410. Locate 0,10
  411. Set Font 2
  412. Ink 2,0
  413. Amreg(0)=10-LEVEL
  414. Amreg(1)=20-LEVEL
  415. Text X Graphic(17),Y Graphic(11),"LEVEL"
  416. Text X Graphic(19),Y Graphic(13),Chr$(48+LEVEL)
  417. Screen Hide 0
  418. Paper 0
  419. W=0
  420. While W<1
  421. If METHOD=1 Then TRIGWAIT : W=1
  422. If METHOD=2 and Mouse Key=1 Then W=1
  423. Wend 
  424. If LEVEL=4
  425. Load "lev2.iff.abk",7 : Load "lev2.abk"
  426.  Screen 0 : Unpack 7
  427. Locate 2,1 : Print "score:0" : For GUN=1 To LIVES : Paste Bob 80+(GUN*20),9,29 : Next GUN
  428. End If 
  429. If LEVEL=7
  430. Load "lev3.iff.abk",7 : Load "lev3.abk"
  431.  Screen 0 : Unpack 7
  432. Locate 2,1 : Print "score:0" : For GUN=1 To LIVES : Paste Bob 80+(GUN*20),9,29 : Next GUN
  433. CLONX(1)=132 : CLONX(2)=55 : CLONX(3)=295 : CLONX(4)=168 : CLONX(5)=230 : CLONX(6)=266
  434. CLONY(1)=205 : CLONY(2)=128 : CLONY(3)=143 : CLONY(4)=85 : CLONY(5)=98 : CLONY(6)=96
  435. End If 
  436. Sam Play 1,1,14300
  437. Wait 30
  438. Screen Show 0
  439. Screen Close 2
  440. Screen 0
  441. End Proc
  442. Procedure NUHIGH
  443. Shared SCORE,HIGHSCORE(),HIGHSCORE$()
  444. Locate 0,24 : Input "NAME :MAX 7 LETTERS: ";G$
  445. Curs Off 
  446. U$=Upper$(G$) : N$=Left$(U$,7)
  447. For H=0 To 9 Step 1
  448. If SCORE>HIGHSCORE(H)
  449.     For M=8 To H Step -1
  450.      HIGHSCORE(M+1)=HIGHSCORE(M)
  451.       HIGHSCORE$(M+1)=HIGHSCORE$(M)
  452.       Next M
  453.       HIGHSCORE$(H)=N$
  454.        HIGHSCORE(H)=SCORE
  455.        H=9
  456.       End If 
  457. Next H
  458.    End Proc
  459. Procedure PRTHIGH
  460. Shared HIGHSCORE(),HIGHSCORE$()
  461. Cls 0
  462. Set Font 2
  463. Ink 2,0
  464. Bob 1,100,10,3
  465. Bob 2,20,30,1
  466. Bob 3,260,29,2
  467. For H=0 To 9
  468. B$=HIGHSCORE$(H)
  469. D$=Str$(HIGHSCORE(H))
  470. C=Len(D$)
  471. R$=Right$(D$,C-1)
  472. F$=String$("0",7-C)
  473. P$=F$+R$
  474. Text 190,50+H*15,P$
  475. Text 80,50+H*15,B$
  476. Next H
  477. Ink 3,0
  478. End Proc
  479. Procedure MYDEATH
  480. Sam Play 1,6,11000
  481. Wait 70
  482. Music 1
  483. For V=0 To 63
  484. Wait 2
  485. Mvolume V
  486. Next V
  487. Load "ledhi.abk"
  488. Shared SCORE,LEVEL,HIGHSCORE()
  489. Amal Off 
  490. Screen Close 0
  491. Screen Open 0,320,256,32,Lowres : Get Sprite Palette : Curs Off : Hide : Paper 0 : Cls 0
  492. Set Font 2
  493. Bob 1,80,0,4
  494. Ink 3,0
  495. Text 110,110,"GAME OVER"
  496. Ink 2,0
  497. Text 80,140,"SCORE "
  498. Text 180,140,Str$(SCORE)
  499. Text 80,170,"LEVEL"
  500. Text 180,170,Str$(LEVEL)
  501. If SCORE>HIGHSCORE(9) Then NUHIGH
  502. Wait 50
  503. Bob Off 1 : Wait 10
  504. Cls 0
  505. PRTHIGH
  506. Set Font 2
  507. Ink 3,0
  508. Text 70,210,"PRESS FIRE TO PLAY AGAIN"
  509. DEL
  510. Screen Close 0
  511. End Proc
  512. Procedure ENGAME
  513. Music 1
  514. For MV=0 To 63
  515. Wait 2
  516. Mvolume MV
  517. Next MV
  518. Screen Open 2,320,256,4,Lowres
  519.  Hide : Curs Off : Cls 0
  520. Ink 3,0
  521. Set Font 1
  522. Text 80,30,"WELL DONE!"
  523. Set Font 2
  524. Ink 2,0
  525. Text 30,53,"You have achieved the almost impossible"
  526. Text 30,70,"I only hope you didn't cheat ,or else"
  527. Text 30,90,"You'll never survive the challenge of:"
  528. Set Font 1
  529. Ink 3,0
  530. Text 70,120,"LED CLONES II"
  531. DEL
  532. Direct 
  533. End Proc