home *** CD-ROM | disk | FTP | other *** search
/ AMOS PD CD / amospdcd.iso / 301-325 / apd323 / puzzle.amos / puzzle.amosSourceCode < prev    next >
AMOS Source Code  |  1991-09-23  |  8KB  |  343 lines

  1. 'PPP  U  U ZZZZ ZZZZ L    EEEE 
  2. 'P  P U  U   Z    Z  L    E
  3. 'PPP  U  U  Z    Z   L    EEE
  4. 'P    U  U Z    Z    L    E
  5. 'P     UU  ZZZZ ZZZZ LLLL EEEE 
  6. '
  7. 'A game by S.Raaijmakers 
  8. '
  9. 'I like to thank the makers of AMOS. They made it possible for me to finally   
  10. 'make games myself.
  11. '
  12. 'Off course this game is Public Domain, so copying it is free. 
  13. 'In fact, I'd like you to copy it !
  14. '
  15. On Error Goto FOUT
  16. Dim SCORE(6)
  17. Dim NAME$(6)
  18. Dim VELD(6)
  19. Dim T(16)
  20. BEGIN:
  21. Unpack 2 To 0
  22. Screen Display 0,128,120,320,Screen Height
  23. Hide 
  24. Fade 5,0,$200,$400,$600,$700,$900,$B00,$D00,$F00,$F22,$F44,$F66,$F99,$FBB,$FDD,$FFF
  25. Wait 75
  26. Get Fonts 
  27. Dir$="Sprites"
  28. Load "Blokjes.abk"
  29. Screen Open 1,320,100,8,Lowres : Screen Display 1,128,120,320,100
  30. Flash Off : Curs Off : Load Iff "Tijden" : Paper 0 : Pen 7 : Screen Hide 1
  31. Wait Vbl 
  32. Screen 0 : Fade 5 : Wait 75
  33. Unpack 3 To 0
  34. Fade 5,0,$410,$620,$850,$A70,$B90,$DC0,$FF0 : Wait 75
  35. Screen Open 2,320,32,8,Lowres : Screen Display 2,128,70,320,32
  36. Flash Off : Curs Off : Load Iff "Quitmenu.pic" : Reserve Zone 3
  37. Colour 17,$922 : Colour 18,$C55 : Colour 19,0 : Screen Hide 2
  38. Screen 0 : Fade 5 : Wait 75
  39. LEVEL=1 : EIND=251520
  40. WEG$=Space$(27)+Cright$+"      "+Cright$+"  "
  41. For A=0 To 6
  42.  SCORE(A)=0
  43.  NAME$(A)="No Name - No Score"
  44.  VELD(A)=0
  45. Next A
  46. 'Erase 2 
  47. 'Erase 3 
  48. Screen Open 0,320,256,32,Lowres : Screen To Front 1 : Screen To Front 2
  49. Curs Off : Flash Off : Gr Writing 0 : Paper 0 : Pen 9
  50. Load Iff "Achtergrond.pic"
  51. Set Font 3
  52. REGENBOOG
  53. Double Buffer 
  54. Paste Bob 134,21,18 : Ink 0 : Bar 173,21 To 185,33 : Ink 9
  55. Randomize Timer
  56. Reserve Zone 16
  57. For A=1 To 3 : Bob A,82+26*A,76,A : Next A
  58. For B=1 To 3 : For A=1 To 4 : Bob B*4+A-1,82+26*A,76+26*B,B*4+A-1 : Next A : Next B
  59. Wait Vbl 
  60. For B=0 To 3 : For A=1 To 4 : Set Zone 4*B+A,82+26*A,76+26*B To 107+26*A,101+26*B : Next A : Next B
  61. T(1)=1 : T(2)=2 : T(3)=3 : T(4)=0 : For A=5 To 16 : T(A)=A-1 : Next A
  62. Limit Mouse 236,118 To 328,210
  63. Channel 1 To Bob 16
  64. Bob 16,0,0,16
  65. Amal 1,"Loop: Let X=XM-128 ; Let Y=YM-42 ; Jump Loop"
  66. Amal On 1
  67. Goto SCHUDDEN
  68. BESTURING:
  69. Repeat 
  70.  Inc TIJD
  71.  If TIJD>EIND and EIND>1 Then Goto GAMEOVER
  72. Until Mouse Key=0
  73. Bob 16,,,16
  74. Repeat 
  75.  Inc TIJD : Inc TIJD
  76.  If TIJD>EIND and EIND>1 Then Goto GAMEOVER
  77.  T$=Inkey$
  78.  If Scancode=69
  79.   A$="YOU ABORTED THE GAME AFTER "+(Str$(ZET)-" ")+" MOVES." : Ink 9 : Text 0,11,A$
  80.   Wait 80 : Ink 0 : Bar 0,5 To 320,12
  81.   Ink 9 : Text 0,11,"PRESS THE MOUSE BUD."
  82.   IN:
  83.   Repeat : M=Mouse Key : Until M<>0
  84.   Ink 0 : Bar 0,5 To 320,12
  85.   If M=1
  86.    Ink 9 : Text 0,11,"THE OTHER ONE, YOU STUPID OLD BUGGER !" : Wait 80
  87.    Ink 0 : Bar 0,5 To 320,12 : Goto IN
  88.   Else 
  89.    Sam Play 3,4,4000 : Goto QUIT
  90.   End If 
  91.   Ink 0 : Bar 0,5 To 320,12
  92.   Goto SCHUDDEN
  93.  End If 
  94. Until Mouse Key=1
  95. ZET=ZET+1 : Bob 16,,,17
  96. Sam Play 3,4,8000
  97. TIJD=TIJD+75
  98. Z=Mouse Zone
  99. If Z>4
  100.  If T(Z-4)=0
  101.   Bob T(Z),,Y Bob(T(Z))-26,T(Z)
  102.   T(Z-4)=T(Z) : T(Z)=0
  103.  End If 
  104. End If 
  105. If Z<13
  106.  If T(Z+4)=0
  107.   Bob T(Z),,Y Bob(T(Z))+26,T(Z)
  108.   T(Z+4)=T(Z) : T(Z)=0
  109.  End If 
  110. End If 
  111. If Z<>1 and Z<>5 and Z<>9 and Z<>13
  112.  If T(Z-1)=0
  113.   Bob T(Z),X Bob(T(Z))-26,,T(Z)
  114.   T(Z-1)=T(Z) : T(Z)=0
  115.  End If 
  116. End If 
  117. If Z<>4 and Z<>8 and Z<>12 and Z<>16
  118.  If T(Z+1)=0
  119.   Bob T(Z),X Bob(T(Z))+26,,T(Z)
  120.   T(Z+1)=T(Z) : T(Z)=0
  121.  End If 
  122. End If 
  123. If T(4)=0
  124.  If EIND>0
  125.   Goto GEHAALD
  126.  End If 
  127. End If 
  128. Goto BESTURING
  129. GEHAALD:
  130. For A=1 To 3
  131.  If T(A)<>A Then Goto BESTURING
  132. Next A
  133. For A=5 To 16
  134.  If A=9 or A=13
  135.   If T(9)<>8 and T(9)<>12
  136.    Goto BESTURING
  137.   Else 
  138.    Exit 1
  139.   End If 
  140.   If T(13)<>8 and T(13)<>12
  141.    Goto BESTURING
  142.   Else 
  143.    Exit 1
  144.   End If 
  145.  Else 
  146.   If T(A)<>A-1
  147.    Goto BESTURING
  148.   End If 
  149.  End If 
  150. Next A
  151. A$="YOU SOLVED IT IN "+(Str$(ZET)-" ")+" MOVES.(REMARKABLE)" : Ink 9 : Text 0,11,A$
  152. Sam Play 3,3,8000
  153. Repeat : Until Mouse Key=2
  154. Sam Play 3,4,4000
  155. Ink 0 : Bar 0,5 To 320,12
  156. Gosub HOPPA
  157. PLAATS:
  158. Ink 9 : Text 0,11,"HOLD YER BREATH. (LOADIN')"
  159. If LEVEL=0 Then Load "Blokjes.abk" : LEVEL=1 : EIND=251520 : Goto TEST
  160. If LEVEL=1 Then Load "Blokjes2.abk" : LEVEL=2 : EIND=125760 : Goto TEST
  161. If LEVEL=2 Then Load "Blokjes3.abk" : LEVEL=3 : EIND=62880 : Goto TEST
  162. If LEVEL=3 Then Load "Blokjes4.abk" : LEVEL=4 : EIND=31440 : Goto TEST
  163. If LEVEL=4 Then Goto DEMO
  164. TEST:
  165. Ink 0 : Bar 0,5 To 320,12
  166. Paste Bob 134,21,18 : Ink 0 : Bar 173,21 To 185,33 : Ink 9
  167. Goto SCHUDDEN
  168. GAMEOVER:
  169. Ink 9 : Text 0,11,"GAME OVER, MAN ! (TIME SHORTAGE)"
  170. Repeat : Until Mouse Key=2
  171. Ink 0 : Bar 0,5 To 320,12
  172. Gosub HOPPA
  173. LEVEL=0 : Goto PLAATS
  174. HOPPA:
  175. Screen 1 : Screen Show 1
  176. SEC=TIJD/524 : SEC2=EIND/524
  177. TMIN=SEC/60 : TMIN2=SEC2/60
  178. PUNT=PUNT+((250-ZET)*10+(EIND-TIJD)*2^LEVEL)/100
  179. Locate 10,1 : Print "         " : Locate 30,1 : Print "         "
  180. Locate 10,1 : Print TMIN2;":";SEC2-TMIN2*60
  181. Locate 30,1 : Print TMIN;":";SEC-TMIN*60
  182. If TIJD>=EIND or LEVEL=4 Then Gosub SCORES
  183. Repeat : Until Mouse Key=2
  184. Screen Hide 1 : Screen 0 : Wait Vbl 
  185. Return 
  186. SCHUDDEN:
  187. TIJD=0
  188. Ink 9 : Text 0,11,"SHUFFIN' IT ALL UP..."
  189. T(1)=Int(Rnd(15)+0.5)
  190. For A=2 To 16
  191.  TUSSEN:
  192.  T(A)=Int(Rnd(15)+0.5)
  193.  For B=1 To A-1
  194.   If T(A)=T(B) Then Goto TUSSEN : 
  195.  Next B
  196. Next A
  197. Bell 
  198. For B=0 To 3
  199.  For A=1 To 4
  200.   If T(4*B+A)<>0
  201.    Bob T(4*B+A),82+26*A,76+26*B,T(4*B+A)
  202.   End If 
  203.  Next A
  204. Next B
  205. Ink 0 : Bar 0,5 To 320,12
  206. ZET=0
  207. Goto BESTURING
  208. SCORES:
  209. If SCORE(6)>PUNT Then Return 
  210. For A=4 To 10
  211.  Locate 2,A : Print WEG$
  212. Next A
  213. Locate 2,5 : Print "     Enter your name :     "
  214. Locate 2,7 : Print "_" : Locate 2,7
  215. NAAM$=""
  216. Do 
  217.  A$=Inkey$
  218.  If Scancode>64
  219.   If Asc(A$)=13
  220.    Exit 1
  221.   End If 
  222.  Else 
  223.   If X Curs<28
  224.    Print A$; : NAAM$=NAAM$+A$
  225.   End If 
  226.  End If 
  227. Loop 
  228. Sam Play 3,4,16000
  229. If SCORE(5)>PUNT Then SCORE(6)=PUNT
  230. For B=0 To 5
  231.  If PUNT>SCORE(B)
  232.   For A=5 To B Step -1
  233.    SCORE(A+1)=SCORE(A)
  234.    NAME$(A+1)=NAME$(A)
  235.    VELD(A+1)=VELD(A)
  236.   Next A
  237.   SCORE(B)=PUNT
  238.   NAME$(B)=NAAM$
  239.   VELD(B)=LEVEL
  240.   Exit 1
  241.  End If 
  242. Next B
  243. For A=4 To 10
  244.  Locate 2,A : Print WEG$
  245. Next A
  246. For A=0 To 6
  247.  Locate 2,4+A : Print NAME$(A)
  248.  Locate 30,4+A : Print SCORE(A)
  249.  Locate 37,4+A : Print VELD(A)
  250. Next A
  251. Return 
  252. QUIT:
  253. Screen Show 2
  254. Screen 2
  255. Limit Mouse 128,70 To 434,89
  256. Set Zone 1,37,7 To 90,24
  257. Set Zone 2,133,7 To 186,24
  258. Set Zone 3,229,7 To 282,24
  259. Do 
  260.  Repeat : Show : Until Mouse Key=1
  261.  If Mouse Zone=1
  262.   Screen Hide 2 : Screen 0
  263.   Load "Blokjes.abk"
  264.   Limit Mouse 236,118 To 328,210 : Hide On 
  265.   EIND=-100
  266.   Goto SCHUDDEN
  267.  End If 
  268.  If Mouse Zone=2
  269.   Screen Hide 2 : Screen 0
  270.   Limit Mouse 236,118 To 328,210 : Hide On 
  271.   EIND=251520 : LEVEL=0 : Goto PLAATS
  272.  End If 
  273.  If Mouse Zone=3
  274.   Screen Close 2 : Screen Close 1
  275.   Screen 0
  276.   Fade 5 : Wait 75 : Screen Close 0 : End 
  277.  End If 
  278. Loop 
  279. DEMO:
  280. Screen Open 0,320,100,16,Lowres
  281. Double Buffer 
  282. Screen Display 0,128,110,320,100
  283. Curs Off : Flash Off : Cls 0
  284. Rainbow Del 
  285. Wait Vbl 
  286. Load "Ending.abk"
  287. Get Sprite Palette 
  288. Channel 1 To Bob 1
  289. Bob 1,0,60,1
  290. Set Bob 1,1,,
  291. LEM$="Anim 9,(1,12)(2,12);Move 160,0,200;"
  292. LEM$=LEM$+"Anim 1,(1,8)(3,6)(4,30)(5,6)(6,30)(7,6)(8,6)(9,6)(10,30)(11,6)(12,6)(13,6)(14,1)"
  293. Wait Vbl 
  294. Amal 1,LEM$
  295. Amal On 
  296. Wait 280
  297. Sam Play 3,2,8000
  298. Wait 50
  299. Sam Play 3,1,8000
  300. Wait 100
  301. Repeat : M=Mouse Key : Until M<>0
  302. If M=1 Then Goto BEGIN
  303. If M=2 Then Goto DEMO
  304. Sam Play 3,3,4000
  305. FOUT:
  306. ERR=Errn
  307. Screen Open 3,640,42,2,Hires
  308. Wait Vbl 
  309. Curs Off 
  310. Palette 0,$F00
  311. Cls 1
  312. Ink 0 : Bar 8,4 To 632,37
  313. Locate 13,1 : Print "Error in program. Press left mouse button to continue."
  314. Locate 20,3 : Print "Guru Meditation. Error code";ERR
  315. Do 
  316.  Ink 0
  317.  Paint 2,2
  318.  For A=1 To 50
  319.   If Mouse Key=1 Then Screen Close 3 : Resume Next 
  320.   If Mouse Key=2 Then End 
  321.   Wait Vbl 
  322.  Next A
  323.  Ink 1
  324.  Box 8,4 To 632,37
  325.  Paint 2,2
  326.  For A=1 To 50
  327.   If Mouse Key=1 Then Screen Close 3 : Resume Next 
  328.   If Mouse Key=2 Then End 
  329.   Wait Vbl 
  330.  Next A
  331. Loop 
  332. Procedure REGENBOOG
  333.  Set Rainbow 0,9,256,"","",""
  334.  Rainbow 0,0,40,16
  335.  Rain(0,7)=$630
  336.  Rain(0,8)=$970
  337.  Rain(0,9)=$CB0
  338.  Rain(0,10)=$FF0
  339.  Rain(0,11)=$FF0
  340.  Rain(0,12)=$CB0
  341.  Rain(0,13)=$970
  342.  Rain(0,14)=$630
  343. End Proc