home *** CD-ROM | disk | FTP | other *** search
/ 17 Bit Software 1: Collection A / 17Bit_Collection_A.iso / files / 989.dms / 989.adf / Stepstone (.txt) < prev    next >
AmigaBASIC Source Code  |  1990-04-30  |  17KB  |  634 lines

  1. CLEAR,25000:CLEAR,50000
  2. SCREEN 1,320,200,3,1
  3. WINDOW 2,,,0,1
  4. ON BREAK GOSUB quit: BREAK ON
  5. FOR x=0 TO 7
  6. READ r,g,b
  7. PALETTE x,r,g,b
  8. NEXT
  9. DATA 0,0,0,.33,.87,0,.93,.2,0,.4,.6,1,1,.73,0,.73,.73,.73,1,.13,.93,1,1,1
  10. REM 0-black,1-green,2-red,3-blue,4-orange,5-grey,6-mauve,7-white
  11. DEFINT a-z
  12. RANDOMIZE TIMER
  13. DIM check(225),grid(17,17),cordx(17,17),cordy(17,17),bonus(17,17)
  14. DIM gotbonus(2,17,17)
  15. GOSUB graphics
  16. COLOR 3
  17. LOCATE 5,5:PRINT "S T E P P I N G   S T O N E S";
  18. COLOR 4:LOCATE 7,13:PRINT "BY ERIC COVELL"
  19. COLOR 5
  20. ditto:                                           
  21. LOCATE 10,4:INPUT"Do you want instructions (y,n)";ans$:ans$=UCASE$(ans$)
  22. IF ans$<>"Y" AND ans$<>"N" THEN ditto
  23. IF ans$="Y" THEN GOSUB instructions
  24. restart:
  25. GOSUB getnames
  26. CLS
  27. LOCATE 2,5:COLOR 7:PRINT "MAZE 1"
  28. LOCATE 4,5:PRINT "MAZE 1 + BONUSES"
  29. LOCATE 6,5:PRINT "MAZE 1 + BONUSES + FOOTPRINTS"
  30. LOCATE 8,5:PRINT "MAZE 2"
  31. LOCATE 10,5:PRINT "MAZE 2 + BONUSES"
  32. LOCATE 12,5:PRINT "MAZE 2 + BONUSES + FOOTPRINTS"
  33. LOCATE 14,5:PRINT "RANDOM MAZE"
  34. LOCATE 16,5:PRINT "RANDOM MAZE + BONUSES"
  35. LOCATE 18,5:PRINT "RANDOM MAZE + BONUSES + FOOTPRINTS"
  36. FOR y=6 TO 134 STEP 16:LINE(5,y)-(17,y+12),3,b:NEXT
  37. LOCATE 20,5:COLOR 2:PRINT "Click in box of choice"
  38. type=3
  39. GOSUB readmouse
  40. level=choice
  41. start:
  42. CLS
  43. FOR x=0 TO 225:check(x)=0:NEXT
  44. y=0
  45. FOR x=1 TO 225
  46. again:
  47. p=INT(RND*225)+1
  48. IF check(p)<>0 THEN again
  49. y=y+1:IF y=7 THEN y=1
  50. check(p)=y
  51. NEXT
  52. y=9:x=0:k=0
  53. FOR j=2 TO 16
  54. y=y+11
  55. FOR i=2 TO 16
  56. x=x+11
  57. k=k+1
  58. m=check(k)
  59. grid(i,j)=m
  60. cordx(i,j)=x:cordy(i,j)=y
  61. NEXT
  62. x=0
  63. NEXT
  64. rubout=0
  65. IF level=1 THEN GOSUB obstacle2
  66. IF level=2 THEN GOSUB obstacle2:GOSUB bonus
  67. IF level=3 THEN rubout=1:GOSUB obstacle2:GOSUB bonus
  68. IF level=4 THEN GOSUB obstacle1
  69. IF level=5 THEN GOSUB obstacle1:GOSUB bonus
  70. IF level=6 THEN rubout=1:GOSUB obstacle1:GOSUB bonus
  71. IF level=7 THEN GOSUB maze
  72. IF level=8 THEN GOSUB maze:GOSUB bonus
  73. IF level=9 THEN rubout=1:GOSUB maze:GOSUB bonus
  74. y=9:x=0
  75. FOR j=2 TO 16
  76. y=y+11
  77. FOR i= 2 TO 16
  78. x=x+11
  79. m=grid(i,j)
  80. LINE(x,y)-(x+10,y+10),m,bf
  81. IF level<>1 AND level<>4 AND level<>7 THEN GOSUB printbonus
  82. NEXT
  83. x=0
  84. NEXT
  85. FOR x=1 TO 3
  86. p=INT(RND*6)+1
  87. col(x)=p
  88. NEXT
  89. y=8
  90. FOR x=1 TO 3
  91. y=y+12
  92. LINE(199,y)-(229,y+10),col(x),bf
  93. NEXT
  94. LINE(197,18)-(231,56),7,b
  95. PUT(199,69),nw,PSET
  96. PUT(209,69),north,PSET
  97. PUT(219,69),ne,PSET
  98. PUT(199,79),west,PSET
  99. PUT(219,79),east,PSET
  100. PUT(199,89),sw,PSET
  101. PUT(209,89),south,PSET
  102. PUT(219,89),se,PSET
  103. cx(1)=9:cx(2)=9:cy(1)=2:cy(2)=16
  104. LINE(cordx(cx(1),cy(1)),cordy(cx(1),cy(1)))-(cordx(cx(1),cy(1))+10,cordy(cx(1),cy(1))+10),7,b
  105. LINE(cordx(cx(2),cy(2)),cordy(cx(2),cy(2)))-(cordx(cx(2),cy(2))+10,cordy(cx(2),cy(2))+10),0,b
  106. IF pla=1 THEN
  107. r=0
  108. FOR y=12 TO 92 STEP 16
  109. r=r+1
  110. LINE(280,y)-(292,y+12),r,b
  111. NEXT
  112. END IF
  113. LOCATE 14,24:COLOR 6:PRINT "SCORES";
  114. x=LEN(names$(1)):p=10-x:LOCATE 15,24:COLOR 7,3:PRINT names$(1)+SPACE$(p)
  115. x=LEN(names$(2)):p=10-x:LOCATE 17,24:COLOR 0,3:PRINT names$(2)+SPACE$(p);
  116. LOCATE 15,34:PRINT score(1):LOCATE 17,34:PRINT score(2)
  117. begin:
  118. cp=1
  119. WHILE xxx=0
  120. pn=pn+1:IF pn=3 THEN pn=1
  121. LOCATE 19,24:COLOR ,0:PRINT "                ";
  122. LOCATE 19,24:COLOR 2:PRINT names$(pn);
  123. tryagain:
  124. LOCATE 20,24:COLOR 0:PRINT "                "
  125. LOCATE 20,24:COLOR 7:PRINT "SELECT DIRECTION";
  126. type=1
  127. GOSUB readmouse
  128. GOSUB checkchoice
  129. badmove:
  130. IF flag=1 THEN
  131. COLOR 0:LOCATE 20,24:PRINT "                 ";
  132. COLOR 2:LOCATE 20,24:PRINT "ILLEGAL MOVE";
  133. FOR x=1 TO 5000:NEXT
  134. GOTO tryagain
  135. END IF
  136. GOSUB update
  137. IF wrong=1 THEN flag=1:GOTO badmove
  138. IF pn=2 AND cy(1)=16 OR cy(2)=2 THEN xxx=1:GOTO over
  139. IF pn=2 THEN GOSUB changecolour
  140. over:
  141. WEND
  142. LOCATE 1,1
  143. PRINT:COLOR 5:PRINT "      PRESS SPACE BAR TO CONTINUE";
  144. ee:a$=INKEY$:IF a$<>" "THEN ee
  145. CLS
  146. newgame:
  147. LOCATE 10,10
  148. INPUT"ANOTHER GAME (Y/N)";ans$
  149. ans$=UCASE$(ans$)
  150. IF ans$<>"Y" AND ans$<>"N" THEN newgame
  151. IF ans$="Y" THEN
  152. xxx=0:FOR w=1 TO 2:FOR x=1 TO 17:FOR y=1 TO 17:gotbonus(w,x,y)=0:NEXT:NEXT:NEXT
  153. FOR x=1 TO 17:FOR y=1 TO 17:bonus(x,y)=0:NEXT:NEXT
  154.  
  155. CLS:LOCATE 10,10
  156. INPUT"SAME PLAYERS (Y/N)";ans$
  157. ans$=UCASE$(ans$)
  158. 51 :
  159. IF ans$<>"Y" AND ans$<>"N" THEN 51
  160. IF ans$="Y" THEN samep=1 :ELSE samep=0:FOR y=1 TO 2:score(y)=0:NEXT
  161. IF samep=1 THEN
  162. CLS:LOCATE 10,1
  163. PRINT "CONTINUE SCORE OR START AGAIN"
  164. INPUT "TYPE 'C' TO CONTINUE, 'R' TO RESTART";ans$
  165. ans$=UCASE$(ans$)
  166. 59 :
  167. IF ans$<>"C" AND ans$<>"R" THEN 59
  168. IF ans$="R" THEN FOR y=1 TO 2:score(y)=0:NEXT
  169. END IF
  170. GOTO restart
  171. END IF
  172. quit:
  173. CLEAR,25000
  174. SYSTEM
  175. END
  176. getnames:
  177. IF samep=1 THEN 6000
  178. FOR x=1 TO 2
  179. 19 :
  180. CLS:LOCATE 10,1: COLOR 6:PRINT "Player ";x;" please type your name":INPUT"max 10 letters ",names$(x)
  181. names$(x)=UCASE$(names$(x))
  182. l= LEN(names$(x)):IF l>10 THEN 19
  183. NEXT
  184. 6000 :
  185. CLS
  186. LINE(10,20)-(50,60),4,b
  187. LINE(10,90)-(50,130),4,b
  188. LOCATE 5,10:COLOR 5:PRINT "Players control colours"
  189. LOCATE 15,10:COLOR 5:PRINT "Random colours"
  190. LOCATE 21,10:COLOR 6:PRINT "Click on selection"
  191. type=2
  192. GOSUB readmouse
  193. IF choice=1 THEN pla=1 :ELSE pla=0
  194. RETURN
  195. update:
  196. IF pn=1 THEN cc=7 :ELSE cc=0
  197. oldcol=grid(cx(pn),cy(pn))
  198. IF gotbonus(pn,newcx(pn),newcy(pn))=1 AND choice<>5 THEN wrong=1 :ELSE wrong=0
  199. IF newcx(pn)=cx(3-pn) AND newcy(pn)=cy(3-pn) THEN wrong=1 :ELSE wrong=0
  200. IF wrong=1 THEN RETURN
  201. IF rubout=1 THEN
  202. IF choice<>5 THEN
  203. LINE(cordx(cx(pn),cy(pn)),cordy(cx(pn),cy(pn)))-(cordx(cx(pn),cy(pn))+10,cordy(cx(pn),cy(pn))+10),0,bf
  204. grid(cx(pn),cy(pn))=0
  205. END IF
  206. END IF
  207. IF rubout=0 THEN LINE(cordx(cx(pn),cy(pn)),cordy(cx(pn),cy(pn)))-(cordx(cx(pn),cy(pn))+10,cordy(cx(pn),cy(pn))+10),oldcol,b
  208. LINE(cordx(newcx(pn),newcy(pn)),cordy(newcx(pn),newcy(pn)))-(cordx(newcx(pn),newcy(pn))+10,cordy(newcx(pn),newcy(pn))+10),cc,b
  209. cx(pn)=newcx(pn):cy(pn)=newcy(pn)
  210. IF choice=5 THEN sc=0
  211. IF choice=4 OR choice=6 THEN sc=1
  212. IF pn=1 THEN
  213. IF choice=7 OR choice=8 OR choice=9 THEN sc=2
  214. IF choice=1 OR choice=2 OR choice=3 THEN sc=-2
  215. END IF
  216. IF pn=2 THEN
  217. IF choice=1 OR choice=2 OR choice=3 THEN sc=2
  218. IF choice=7 OR choice=8 OR choice=9 THEN sc=-2
  219. END IF
  220. score(pn)=score(pn)+sc
  221. IF level<>1 AND level<>4 AND level<>7 THEN
  222. IF choice<>5 THEN
  223. sc=bonus(cx(pn),cy(pn))
  224. IF sc>0 THEN gotbonus(pn,cx(pn),cy(pn))=1
  225. score(pn)=score(pn)+sc
  226. END IF
  227. END IF
  228. IF pn=1 THEN r=0 :ELSE r=2
  229. LOCATE 15+r,34:PRINT "    ";:COLOR 5:LOCATE 15+r,34:PRINT score(pn);
  230. RETURN
  231. changecolour:
  232. rcol(2)=col(1):rcol(3)=col(2)
  233. IF pla=0 THEN col(1)=INT(RND*6)++1 :ELSE col(1)=0
  234. col(2)=rcol(2):col(3)=rcol(3)
  235. j=8
  236. FOR i=1 TO 3
  237. j=j+12
  238. LINE(199,j)-(229,j+10),col(i),bf
  239. NEXT
  240. IF pla=1 THEN
  241. COLOR 0:LOCATE 19,24:PRINT "                ";
  242. cp=3-cp
  243. COLOR 2:LOCATE 19,24:PRINT names$(cp);
  244. COLOR 0:LOCATE 20,24:PRINT "                ";
  245. COLOR 4:LOCATE 20,24:PRINT "Select Colour"
  246. type=4
  247. GOSUB readmouse
  248. col(1)=choice
  249. LINE(199,20)-(229,30),col(1),bf
  250. END IF
  251. RETURN
  252. checkchoice:
  253. flag=0
  254. ON choice GOSUB 1,2,3,4,5,6,7,8,9
  255. newcol=grid(newcx(pn),newcy(pn))
  256. IF newcol=0 THEN flag=1
  257. IF newcol<>col(3) THEN flag=1
  258. IF choice=5 THEN flag=0
  259. RETURN
  260. printbonus:
  261. aa=bonus(i,j)
  262. IF aa<>0 THEN
  263. IF aa=1 THEN PUT(cordx(i,j)+2,cordy(i,j)+2),one,PSET
  264. IF aa=2 THEN PUT(cordx(i,j)+2,cordy(i,j)+2),two,PSET
  265. IF aa=3 THEN PUT(cordx(i,j)+2,cordy(i,j)+2),three,PSET
  266. IF aa=4 THEN PUT(cordx(i,j)+2,cordy(i,j)+2),four,PSET
  267. IF aa=5 THEN PUT(cordx(i,j)+2,cordy(i,j)+2),five,PSET
  268. IF aa=6 THEN PUT(cordx(i,j)+2,cordy(i,j)+2),six,PSET
  269. END IF
  270. RETURN
  271. 1 :
  272. newcx(pn)=cx(pn)-1:newcy(pn)=cy(pn)-1
  273. RETURN
  274. 2 :
  275. newcx(pn)=cx(pn):newcy(pn)=cy(pn)-1
  276. RETURN
  277. 3 :
  278. newcx(pn)=cx(pn)+1:newcy(pn)=cy(pn)-1
  279. RETURN
  280. 4 :
  281. newcx(pn)=cx(pn)-1:newcy(pn)=cy(pn)
  282. RETURN
  283. 5 :
  284. newcx(pn)=cx(pn):newcy(pn)=cy(pn)
  285. RETURN
  286. 6 :
  287. newcx(pn)=cx(pn)+1:newcy(pn)=cy(pn)
  288. RETURN
  289. 7 :
  290. newcx(pn)=cx(pn)-1:newcy(pn)=cy(pn)+1
  291. RETURN
  292. 8 :
  293. newcx(pn)=cx(pn):newcy(pn)=cy(pn)+1
  294. RETURN
  295. 9 :
  296. newcx(pn)=cx(pn)+1:newcy(pn)=cy(pn)+1
  297. RETURN
  298. obstacle1:
  299. FOR j=4 TO 14 STEP 10
  300. FOR i=3 TO 5
  301. grid(i,j)=0
  302. grid(i+5,j)=0
  303. grid(i+10,j)=0
  304. NEXT
  305. NEXT
  306. FOR i=2 TO 4
  307. grid(i,9)=0:grid(i+4,9)=0:grid(i+8,9)=0:grid(i+12,9)=0
  308. NEXT
  309. RETURN
  310. obstacle2:
  311. FOR j=5 TO 6
  312. FOR i=2 TO 4
  313. grid(i,j)=0
  314. grid(i+5,j)=0
  315. grid(i+7,j)=0
  316. grid(i+12,j)=0
  317. NEXT
  318. NEXT
  319. FOR j=12 TO 13
  320. FOR i=2 TO 4
  321. grid(i,j)=0
  322. grid(i+5,j)=0
  323. grid(i+7,j)=0
  324. grid(i+12,j)=0
  325. NEXT
  326. NEXT
  327. RETURN
  328. bonus:
  329. FOR x=1 TO 225:check(x)=0:NEXT
  330. IF level>6 THEN 2000
  331. IF level>3 THEN 2001
  332. count=1:x=0
  333. WHILE count<13
  334. 1900 :
  335. p=INT(RND*75)+1
  336. IF check(p)<>0 THEN 1900
  337. x=x+1
  338. IF x<2 THEN q=6 :ELSE IF x<4 THEN q=5 :ELSE IF x<6 THEN q=4 :ELSE IF x<8 THEN q=3 :ELSE IF x<10 THEN q=2 :ELSE q=1
  339. check(p)=q
  340. count=count+1
  341. WEND
  342. k=0
  343. FOR j=7 TO 11
  344. FOR i=2 TO 16
  345. k=k+1
  346. m=check(k)
  347. bonus(i,j)=m
  348. NEXT
  349. NEXT
  350. RETURN
  351. 2000 :
  352. FOR x=1 TO 30
  353. 2010 :
  354. j=INT(RND*13)+3
  355. i=INT(RND*13)+3
  356. IF grid(i,j)=0 THEN 2010
  357. IF bonus(i,j)<>0 THEN 2010
  358. k=INT(RND*6+1)
  359. bonus(i,j)=k
  360. NEXT
  361. RETURN
  362. 2001 :
  363. count=1:x=0
  364. WHILE count<21
  365. 2002 :
  366. p=INT(RND*120)+1
  367. IF check(p)<>0 THEN 2002
  368. x=x+1
  369. IF x<3 THEN q=6 :ELSE IF x<6 THEN q=5 :ELSE IF x<9 THEN q=4 :ELSE IF x<12 THEN q=3 :ELSE IF x<15 THEN q=2 :ELSE q=1
  370. check(p)=q
  371. count=count+1
  372. WEND
  373. k=0
  374. FOR j=5 TO 8
  375. FOR i=2 TO 16
  376. k=k+1
  377. bonus(i,j)=check(k)
  378. NEXT:NEXT
  379. FOR j=10 TO 13
  380. FOR i=2 TO 16
  381. k=k+1
  382. bonus(i,j)=check(k)
  383. NEXT:NEXT
  384. RETURN
  385. maze:
  386. FOR j=1 TO 10:FOR i=1 TO 10:maze(i,j)=0:NEXT:NEXT
  387. FOR x=1 TO 10
  388. 3000 :
  389. j=INT(RND*7)+3
  390. i=INT(RND*7)+3
  391. IF maze(i,j)<>0 THEN 3000
  392. maze(i,j)=1
  393. GOSUB fillmaze
  394. NEXT
  395. RETURN
  396. fillmaze:
  397. j1=i:i1=j
  398. grid(i,j)=0:grid(18-j,i)=0:grid(18-i,18-j)=0:grid(j,18-i)=0
  399. RETURN
  400. readmouse:
  401. WHILE MOUSE(0)<>0:WEND
  402. WHILE MOUSE(0)=0:WEND
  403. xm=MOUSE(1):ym=MOUSE(2)
  404. IF type=4 THEN 1150
  405. IF type=3 THEN 1100
  406. IF type=2 THEN 1000
  407. IF type=1 THEN
  408. IF xm>229 OR xm<199 OR ym>100 OR ym<69 THEN readmouse
  409. IF ym<80 THEN
  410. IF xm>218 THEN choice=3 :ELSE IF xm>209 THEN choice=2 :ELSE choice=1
  411. END IF
  412. IF ym>79 AND ym<91 THEN
  413. IF xm>218 THEN choice=6 :ELSE IF xm>209 THEN choice=5 :ELSE choice=4
  414. END IF
  415. IF ym>90 AND ym<102 THEN
  416. IF xm>218 THEN choice=9 :ELSE IF xm>209 THEN choice=8 :ELSE choice=7
  417. END IF
  418. END IF
  419. 1000 :
  420. IF type=2 THEN
  421. IF xm<10 OR xm>50 OR ym<20 OR ym >130 THEN readmouse
  422. IF ym>60 AND ym<90 THEN readmouse
  423. IF ym<60 THEN choice=1 :ELSE choice=2
  424. END IF
  425. 1100 :
  426. IF type=3 THEN
  427. choice=0
  428. IF xm<5 OR xm>17 OR ym<6 OR ym>146 THEN readmouse
  429. IF ym<19 THEN choice=1
  430. IF ym>21 AND ym<35 THEN choice=2
  431. IF ym>37 AND ym<51 THEN choice=3
  432. IF ym>53 AND ym<67 THEN choice=4
  433. IF ym>69 AND ym<83 THEN choice=5
  434. IF ym>85 AND ym<99 THEN choice=6
  435. IF ym>101 AND ym<115 THEN choice=7
  436. IF ym>117 AND ym<131 THEN choice=8
  437. IF ym>133 AND ym<147 THEN choice=9
  438. IF choice=0 THEN readmouse
  439. END IF
  440. 1150 :
  441. IF type=4 THEN
  442. choice=0
  443. IF xm<280 OR xm>292 OR ym<12 OR ym>104 THEN readmouse
  444. IF ym<25 THEN choice=1
  445. IF ym>27 AND ym<41 THEN choice=2
  446. IF ym>43 AND ym<57 THEN choice=3
  447. IF ym>59 AND ym<73 THEN choice=4
  448. IF ym>75 AND ym<89 THEN choice=5
  449. IF ym>91 AND ym<105 THEN choice=6
  450. END IF
  451. RETURN
  452. graphics:
  453. DIM north(33)
  454. FOR i=0 TO 32:READ north(i):NEXT
  455. DATA &hA,&hA,&h3,&h0,&hC00,&h1E00,&h3F00,&h7F80
  456. DATA &h7F80,&hC00,&hC00,&hC00,&h0,&hFFC0,&h8C40,&h9E40
  457. DATA &hAF40,&hFFC0,&hFFC0,&h8C40,&h8C40,&h8C40,&hFFC0,&h0
  458. DATA &hC00,&h1E00,&h2F00,&h7F80,&h7F80,&hC00,&hC00,&hC00
  459. DATA &h0
  460. DIM south(33)
  461. FOR i=0 TO 32:READ south(i):NEXT
  462. DATA &hA,&hA,&h3,&h0,&hC00,&hC00,&hC00,&h7F80
  463. DATA &h7F80,&h3F00,&h1E00,&hC00,&h0,&hFFC0,&h8C40,&h8C40
  464. DATA &h8C40,&hFFC0,&hFFC0,&hBF40,&h9E40,&h8C40,&hFFC0,&h0
  465. DATA &hC00,&hC00,&hC00,&h7F80,&h7F80,&h3F00,&h1E00,&hC00
  466. DATA &h0 
  467. DIM east(33)
  468. FOR i=0 TO 32:READ east(i):NEXT
  469. DATA &hA,&hA,&h3,&h0,&hC00,&hE00,&hF00,&h7F80
  470. DATA &h7F80,&hF00,&hE00,&hC00,&h0,&hFFC0,&h8C40,&h8E40
  471. DATA &h8F40,&hFFC0,&hFFC0,&h8F40,&h8E40,&h8C40,&hFFC0,&h0
  472. DATA &hC00,&hE00,&hF00,&h7F80,&h7F80,&hF00,&hE00,&hC00
  473. DATA &h0 
  474. DIM west(33)
  475. FOR i=0 TO 32:READ west(i):NEXT
  476. DATA &hA,&hA,&h3,&h0,&hC00,&h1C00,&h3C00,&h7F80
  477. DATA &h7F80,&h3C00,&h1C00,&hC00,&h0,&hFFC0,&h8C40,&h9C40
  478. DATA &hBC40,&hFFC0,&hFFC0,&hBC40,&h9C40,&h8C40,&hFFC0,&h0
  479. DATA &hC00,&h1C00,&h3C00,&h7F80,&h7F80,&h3C00,&h1C00,&hC00
  480. DATA &h0 
  481. DIM nw(33)
  482. FOR i=0 TO 32:READ nw(i):NEXT
  483. DATA &hA,&hA,&h3,&h0,&h7F00,&h7E00,&h7C00,&h7C00
  484. DATA &h7E00,&h6700,&h4380,&h180,&h0,&hFFC0,&hFF40,&hFE40
  485. DATA &hFC40,&hFC40,&hFE40,&hE740,&hC3C0,&h81C0,&hFFC0,&h0
  486. DATA &h7F00,&h7E00,&h7C00,&h7C00,&h7E00,&h6700,&h4380,&h180
  487. DATA &h0 
  488. DIM ne(33)
  489. FOR i=0 TO 32:READ ne(i):NEXT
  490. DATA &hA,&hA,&h3,&h0,&h3F80,&h1F80,&hF80,&hF80
  491. DATA &h1F80,&h3980,&h7080,&h6000,&h0,&hFFC0,&hBFC0,&h9FC0
  492. DATA &h8FC0,&h8FC0,&h9FC0,&hB9C0,&hF0C0,&hE040,&hFFC0,&h0
  493. DATA &h3F80,&h1F80,&hF80,&hF80,&h1F80,&h3980,&h7080,&h6000
  494. DATA &h0 
  495. DIM sw(33)
  496. FOR i=0 TO 32:READ sw(i):NEXT
  497. DATA &hA,&hA,&h3,&h0,&h180,&h4380,&h6700,&h7E00
  498. DATA &h7C00,&h7C00,&h7E00,&h7F00,&h0,&hFFC0,&h81C0,&hC3C0
  499. DATA &hE740,&hFE40,&hFC40,&hFC40,&hFE40,&hFF40,&hFFC0,&h0
  500. DATA &h180,&h4380,&h6700,&h7E00,&h7C00,&h7C00,&h7E00,&h7F00
  501. DATA &h0 
  502. DIM se(33)
  503. FOR i=0 TO 32:READ se(i):NEXT
  504. DATA &hA,&hA,&h3,&h0,&h6000,&h7080,&h3980,&h1F80
  505. DATA &hF80,&hF80,&h1F80,&h3F80,&h0,&hFFC0,&hE040,&hF0C0
  506. DATA &hB9C0,&h9FC0,&h8FC0,&h8FC0,&h9FC0,&hBFC0,&hFFC0,&h0
  507. DATA &h6000,&h7080,&h3980,&h1F80,&hF80,&hF80,&h1F80,&h3F80
  508. DATA &h0 
  509. DIM one(18)
  510. FOR i=0 TO 17:READ one(i):NEXT
  511. DATA &h3,&h5,&h3,&hA000,&h2000,&hA000,&hA000,&h0
  512. DATA &hA000,&h2000,&hA000,&hA000,&h0,&hA000,&h2000,&hA000
  513. DATA &hA000,&h0 
  514. DIM two(18)
  515. FOR i=0 TO 17:READ two(i):NEXT
  516. DATA &h3,&h5,&h3,&h0,&hC000,&h0,&h6000,&h0
  517. DATA &h0,&hC000,&h0,&h6000,&h0,&h0,&hC000,&h0
  518. DATA &h6000,&h0
  519. DIM three(18)
  520. FOR i=0 TO 17:READ three(i):NEXT
  521. DATA &h3,&h5,&h3,&h0,&hC000,&h0,&hC000,&h0
  522. DATA &h0,&hC000,&h0,&hC000,&h0,&h0,&hC000,&h0
  523. DATA &hC000,&h0 
  524. DIM four(18)
  525. FOR i=0 TO 17:READ four(i):NEXT
  526. DATA &h3,&h5,&h3,&h6000,&h6000,&h4000,&h0,&hC000
  527. DATA &h6000,&h6000,&h4000,&h0,&hC000,&h6000,&h6000,&h4000
  528. DATA &h0,&hC000 
  529. DIM five(18)
  530. FOR i=0 TO 17:READ five(i):NEXT
  531. DATA &h3,&h5,&h3,&h0,&h6000,&h0,&hC000,&h0
  532. DATA &h0,&h6000,&h0,&hC000,&h0,&h0,&h6000,&h0
  533. DATA &hC000,&h0
  534. DIM six(18)
  535. FOR i=0 TO 17:READ six(i):NEXT
  536. RETURN
  537. DATA &h3,&h5,&h3,&h0,&h6000,&h0,&h4000,&h0
  538. DATA &h0,&h6000,&h0,&h4000,&h0,&h0,&h6000,&h0
  539. DATA &h4000,&h0
  540. instructions:
  541. COLOR 1:CLS
  542. PRINT "Move from one side of playfield to the"
  543. PRINT "other. You can only move to a square"
  544. PRINT "of the same color as the lowest of the"
  545. PRINT "block of three colors shown on the"
  546. PRINT "right side of the screen."
  547. PRINT:COLOR 2 
  548. PRINT "Moving forward either in a vertical or"
  549. PRINT "diagonal direction scores 2 points."
  550. PRINT "Moving backward loses 2 points, while"
  551. PRINT "moving on the same row scores 1 point."
  552. PRINT "Staying on the same square scores zero."
  553. PRINT:COLOR 3
  554. PRINT "Click on the appropriate arrow symbol-"
  555. PRINT "(left mouse button) - when prompted to "
  556. PRINT "move. Click on the blank square in the" 
  557. PRINT "center of the arrow symbols to stay on"
  558. PRINT "the same square."
  559. PRINT:COLOR 4
  560. PRINT "When both players have completed their"
  561. PRINT "turn, the block of colors moves down 1"
  562. PRINT "place so what was the current color is"
  563. PRINT "replaced by the next color, and so on."
  564. PRINT:COLOR 5:PRINT "      PRESS SPACE BAR TO CONTINUE";
  565. aa:a$=INKEY$:IF a$<>" "THEN aa
  566. CLS:COLOR 1
  567. PRINT "The third colour is now chosen. At the"
  568. PRINT "start of the game you will be given the"
  569. PRINT "choice of having the new color chosen"
  570. PRINT "randomly or alternately by the players."
  571. PRINT "This option adds considerably to the"
  572. PRINT "tactics of the game. Pick the colour"
  573. PRINT "you want by clicking in one of the six"
  574. PRINT "boxes on the right of the screen when"
  575. PRINT "prompted."
  576. PRINT:COLOR 2
  577. PRINT "There are 3 playfields available. The "
  578. PRINT "first 2 playfields have black bands "
  579. PRINT "across the screen with gaps in them."
  580. PRINT "The 3rd playfield has a series of black"
  581. PRINT "squares randomly generated in crossword"
  582. PRINT "puzzle fashion. You cannot move onto a"
  583. PRINT "black square. There are 3 alternatives"
  584. PRINT "for each playfield."
  585. PRINT
  586. COLOR 3:PRINT "      1) No additions
  587. COLOR 4:PRINT "      2) Bonus numbers
  588. COLOR 6:PRINT "      3) Bonus numbers + footprints"
  589. PRINT:COLOR 5:PRINT "      PRESS SPACE BAR TO CONTINUE";
  590. bb:a$=INKEY$:IF a$<>" "THEN bb
  591. CLS:COLOR 1
  592. PRINT "1) No additions: The game is played"
  593. PRINT "on the playfields as described above."
  594. COLOR 2:PRINT
  595. PRINT "2) Numbers are shown randomly on some"
  596. PRINT "of the squares. Landing on any of the"
  597. PRINT "bonus squares adds the bonus value to"
  598. PRINT "your score. You may only land on any"
  599. PRINT "one bonus square once during the game."
  600. COLOR 3:PRINT
  601. PRINT "3) In this variation, bonuses are as"
  602. PRINT "in 2), but as you leave any square,"
  603. PRINT "the square, any bonus are blacked out"
  604. PRINT "so either player can use the square"
  605. PRINT "subsequently."
  606. PRINT "Hence, you leave a trail of `footprints'"
  607. PRINT "as you travel the screen. It is fairly"
  608. PRINT "easy to get trapped using the footprint"
  609. PRINT "variations, particularly for the first"
  610. PRINT "2 playfields. Always make sure there is"
  611. PRINT "a route open for you to reach the other"
  612. PRINT "side of the playfield."
  613. PRINT:COLOR 5:PRINT "      PRESS SPACE BAR TO CONTINUE";
  614. cc:a$=INKEY$:IF a$<>" "THEN cc
  615. CLS
  616. COLOR 4:PRINT
  617. PRINT "The first named player plays white and"
  618. PRINT "moves down the playfield. The second "
  619. PRINT "player plays black and moves upward. No"
  620. PRINT "player can move to a square occupied by"
  621. PRINT "the other."
  622. COLOR 2:PRINT
  623. PRINT "The game ends when one of the players "
  624. PRINT "has crossed the playfield. If this is"
  625. PRINT "the first player then the other player"
  626. PRINT "is given one more move. The winner is "
  627. PRINT "the player with the highest score. You "
  628. PRINT "will be given the opportunity to carry"
  629. PRINT "the score forward if the same players "
  630. PRINT "are competing."
  631. PRINT:COLOR 5:PRINT "      PRESS SPACE BAR TO CONTINUE";
  632. dd:a$=INKEY$:IF a$<>" "THEN dd
  633. RETURN
  634.