home *** CD-ROM | disk | FTP | other *** search
/ Loadstar 129 / 129.d81 / sr (.txt) < prev    next >
Commodore BASIC  |  2022-08-26  |  15KB  |  516 lines

  1. 10 goto3090
  2. 20 rem -- game screen --
  3. 30 poke53269,0:print"[147]";:poke53275,0
  4. 40 poke53265,peek(53265)or64
  5. 50 poke53281,4:poke53280,6:poke53282,1:poke53283,0:poke53284,7
  6. 60 fori=.to23:print"[154]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@[157][148]@":next
  7. 70 print"[160][160][200][189][200][197][204][208][160][160][160][160][160][160][160][160][160][160][160][160][160][160][160][160][160][160][160][160][160][160][160][160][209][189][209][213][201][212][160][157][148][160]"
  8. 80 printtab(15)"[150]#$#$#$[150]#$#$"
  9. 90 printtab(15)"[150]%&%&%&[150]%&%&@"
  10. 100 printtab(15)"[150]#$@@[150]#$@@[150]#$@"
  11. 110 printtab(15)"[150]%&@[150]%&@[150]%&@"
  12. 120 fori=1to2
  13. 130 printtab(15)"[150]#$@[150]#$@[150]#$@":printtab(15)"[150]%&@[150]%&@[150]%&@"
  14. 140 next
  15. 150 printtab(3)"[150]#$#$#$#$#$#$#$@[150]#$@#$[150]#$#$#$#$#$#$"
  16. 160 printtab(3)"[150]%&%&%&%&%&%&%&@[150]%&@%&[150]%&%&%&%&%&%&@"
  17. 170 printtab(3)"#$@@@@@@@@@@@@@[153]#$@@@@@@@@@@@@#$@"
  18. 180 printtab(3)"%&@"tab(19)"[153]%&@"tab(35)"%&@"
  19. 190 printtab(3)"[150]#$#$#$#$#$#$#$[150]#$@#$[150]#$#$#$#$#$#$@"
  20. 200 printtab(3)"[150]%&%&%&%&%&%&%&@[150]%&@%&[150]%&%&%&%&%&%&@"
  21. 210 printtab(4)"@@@@@@@@@@@[150]#$@[150]#$@[150]#$@@@@@@@@@@@@@"
  22. 220 printtab(15)"[150]%&@[150]%&@[150]%&@"
  23. 230 fori=1to2
  24. 240 printtab(15)"[150]#$@[150]#$@[150]#$@":printtab(15)"[150]%&@[150]%&@[150]%&@"
  25. 250 next
  26. 260 printtab(15)"[150]#$#$#$[150]#$#$@"
  27. 270 printtab(15)"[150]%&%&%&[150]%&%&@"
  28. 280 printtab(16)"@@@@@@@@@@"
  29. 290 printtab(2)"           "tab(27)"           "
  30. 300 fori=.to3:printtab(2)"[144]           [146]@"tab(27)"[144]           [146]@":next
  31. 310 printtab(3)"@@@@@@@@@@@"tab(28)"@@@@@@@@@@@"
  32. 320 poke214,16:print
  33. 330 printtab(2)"[144]           "tab(27)"           "
  34. 340 fori=.to3:printtab(2)"[144]           [146]@"tab(27)"[144]           [146]@":next
  35. 350 printtab(3)"@@@@@@@@@@@"tab(28)"@@@@@@@@@@@"
  36. 360 poke214,2:print
  37. 370 printtab(3)"[156]star race":printtab(3)"a game by":printtab(3)"tony rose"
  38. 380 poke214,17:print""
  39. 390 printtab(31)d$(5)""
  40. 400 rem -- sprites --
  41. 410 poke51192,128:poke53285,14:poke53286,10:poke53276,1
  42. 420 fori=.to3:poke53287+i,0:next
  43. 430 poke53250,184:poke53251,135:poke53252,160:poke53253,135
  44. 440 poke53254,172:poke53255,156:poke53256,172:poke53257,114
  45. 450 poke53258,184:poke53259,135:poke53260,160:poke53261,135
  46. 460 poke53262,172:poke53263,156
  47. 470 rem -- main --
  48. 480 ifd<>6andd<>1thenpl=pl+1:ifpl>2thenpl=1
  49. 490 poke214,2:print
  50. 500 printtab(30)c$(-(pl=2))"knees"
  51. 510 printtab(31)""np(2)
  52. 520 poke214,17:print
  53. 530 printtab(6)c$(-(pl=1))"you"
  54. 540 printtab(6)""np(1)
  55. 550 poke214,23:print:printtab(13)tn$(pl)""
  56. 560 gosub1040
  57. 570 ifpl=2then1320
  58. 580 gosub1190:iff=0then480
  59. 590 rem -- move the hand --
  60. 600 geta$:j=peek(jy)and15
  61. 610 ifa$=""orj=7then650
  62. 620 ifa$="[157]"orj=11then670
  63. 630 ifa$=chr$(13)or(peek(jy)and16)=.then730
  64. 640 goto600
  65. 650 hp=hp+1:ifhp>57thenhp=1
  66. 660 goto680
  67. 670 hp=hp-1:ifhp<1thenhp=57
  68. 680 yp=bd(hp,1)*8+64:xp=bd(hp,2)*8+32
  69. 690 ifxp>255thenpoke53264,1
  70. 700 poke53248,xpand255:poke53249,yp:ifxp<256thenpoke53264,0
  71. 710 goto600
  72. 720 rem -- move --
  73. 730 ifbd(hp,0)=1then600
  74. 740 ifbd(hp,0)=2andbd(hp,3)=2then600
  75. 750 f=0:fori=1to4
  76. 760 ifmp(i)=0andhp>1then780
  77. 770 ifmp(i)+d=hpthenf=i
  78. 780 next
  79. 790 iff=0then600
  80. 800 rem -- erase --
  81. 810 ifmp(f)=0thennp(1)=np(1)-1:goto860
  82. 820 bd(mp(f),0)=0
  83. 830 poke214,bd(mp(f),1):print
  84. 840 poke646,bd(mp(f),3):printtab(bd(mp(f),2))"#$[157][157]%&"
  85. 850 rem -- place --
  86. 860 gosub2570:poke214,bd(hp,1):print
  87. 870 poke646,bd(hp,3):printtab(bd(hp,2))m$(1)
  88. 880 mp(f)=hp:f=0:ifbd(hp,0)thenf=1
  89. 890 bd(hp,0)=1:gosub2620
  90. 900 rem -- reach home? --
  91. 910 ifhp<>57then970
  92. 920 bd(57,0)=0:gosub2800
  93. 930 poke214,bd(57,1):print
  94. 940 poke646,bd(57,3):printtab(bd(57,2))"#$[157][157]%&"
  95. 950 w(pl)=w(pl)+1:ifw(pl)=4then1870
  96. 960 goto480
  97. 970 iff=0then480
  98. 980 rem -- which piece --
  99. 990 fori=1to4
  100. 1000 ifk(i)=kb(hp)thenk(i)=0:i=4
  101. 1010 next
  102. 1020 np(2)=np(2)+1:gosub2710:goto480
  103. 1030 rem -- roll the die --
  104. 1040 poke53269,0:poke53248,42:poke53249,200:poke53264,1:poke53269,1
  105. 1050 geta$:ifa$=chr$(13)or(peek(jy)and16)=.then1090
  106. 1060 ifa$="h"thengosub2460:poke53269,.:gosub4030:gosub2500:poke53269,1
  107. 1070 ifa$="q"thengosub2460:poke53269,.:gosub2310:gosub2500:poke53269,1
  108. 1080 goto1050
  109. 1090 fori=1to4:d=int(rnd(1)*6)+1
  110. 1100 poke214,17:print""
  111. 1110 printtab(34-i)l$d$(d):gosub2660
  112. 1120 next
  113. 1130 fori=1to4:d=int(rnd(1)*6)+1
  114. 1140 poke214,17:print
  115. 1150 printtab(26+i)r$d$(d):gosub2660
  116. 1160 next
  117. 1170 return
  118. 1180 rem -- can you move? --
  119. 1190 f=0:fori=1to4
  120. 1200 ifmp(i)=0andd<>1then1240
  121. 1210 ifmp(i)+d>57then1240
  122. 1220 ifbd(mp(i)+d,0)=0thenf=1:i=4:goto1240
  123. 1230 ifbd(mp(i)+d,0)=2andbd(mp(i)+d,3)<>2thenf=1:i=4
  124. 1240 next
  125. 1250 iff=0thenreturn
  126. 1260 xp=bd(hp,2)*8+32:yp=bd(hp,1)*8+64
  127. 1270 poke53269,0:poke53248,xpand255:poke53249,yp
  128. 1280 ifxp>255thenpoke53264,1:goto1300
  129. 1290 poke53264,0
  130. 1300 poke53269,1:return
  131. 1310 rem -- computer --
  132. 1320 fori=1to4
  133. 1330 x=k(i)+d:mv(i)=0
  134. 1340 ifk(i)=0andd<>1then1420
  135. 1350 ifx>57then1420
  136. 1360 ifbd(kb(x),0)=1thenifbd(kb(x),3)=10thenmv(i)=5:goto1420
  137. 1370 ifx=1andk(i)=0thenifbd(kb(x),0)<>2thenmv(i)=4:goto1420
  138. 1380 ifk(i)=1thenifbd(kb(x),0)=0thenmv(i)=3:goto1420
  139. 1390 ifx=57thenmv(i)=2:goto1420
  140. 1400 ifbd(kb(x),0)=0thenifbd(kb(x),3)=2thenmv(i)=1:goto1420
  141. 1410 ifbd(kb(x),0)=0thenmv(i)=rnd(1)
  142. 1420 next
  143. 1430 f=0:m=0:fori=1to4
  144. 1440 ifmv(i)>mthenm=mv(i):f=i
  145. 1450 next:m=k(f)+d
  146. 1460 iff=0then480
  147. 1470 xp=bd(kb(kp),2)*8+32:yp=bd(kb(kp),1)*8+64
  148. 1480 gosub1270
  149. 1490 rem -- knees moves --
  150. 1500 ifk(f)+d<=kpthen1560
  151. 1510 kp=kp+1:xp=bd(kb(kp),2)*8+32:yp=bd(kb(kp),1)*8+64
  152. 1520 ifxp>255thenpoke53264,1
  153. 1530 poke53248,xpand255:poke53249,yp
  154. 1540 ifxp<256thenpoke53264,0
  155. 1550 goto1500
  156. 1560 ifk(f)+d=kpthen1630
  157. 1570 kp=kp-1:xp=bd(kb(kp),2)*8+32:yp=bd(kb(kp),1)*8+64
  158. 1580 ifxp>255thenpoke53264,1
  159. 1590 poke53248,xpand255:poke53249,yp
  160. 1600 ifxp<256thenpoke53264,0
  161. 1610 goto1560
  162. 1620 rem -- erase knees --
  163. 1630 ifk(f)=0thennp(2)=np(2)-1:goto1690
  164. 1640 bd(kb(k(f)),0)=0
  165. 1650 poke214,bd(kb(k(f)),1):print
  166. 1660 poke646,bd(kb(k(f)),3)
  167. 1670 printtab(bd(kb(k(f)),2))"#$[157][157]%&"
  168. 1680 rem -- place knees --
  169. 1690 gosub2570:poke214,bd(kb(m),1):print
  170. 1700 poke646,bd(kb(m),3):printtab(bd(kb(m),2))m$(2)
  171. 1710 k(f)=k(f)+d:f=0:ifbd(kb(m),0)thenf=1
  172. 1720 bd(kb(m),0)=2:gosub2620
  173. 1730 rem -- reach home? --
  174. 1740 ifkp<>57then1800
  175. 1750 bd(57,0)=0:gosub2800
  176. 1760 poke214,bd(57,1):print
  177. 1770 poke646,bd(57,3):printtab(bd(57,2))"#$[157][157]%&"
  178. 1780 w(pl)=w(pl)+1:ifw(pl)=4then1870
  179. 1790 goto480
  180. 1800 iff=0then480
  181. 1810 rem -- which piece --
  182. 1820 fori=1to4
  183. 1830 ifmp(i)=kb(m)thenmp(i)=0:i=4
  184. 1840 next
  185. 1850 np(1)=np(1)+1:gosub2710:goto480
  186. 1860 rem -- game over --
  187. 1870 gosub2460:fori=.to2:gosub3010:next
  188. 1880 poke53269,0:poke53276,240:poke53264,0:poke53248,172:poke53249,114
  189. 1890 ifpl=2then1920
  190. 1900 fori=.to7:poke51192+i,129+i:next
  191. 1910 poke53291,7:poke53292,2:poke53293,2:poke53294,1:goto1960
  192. 1920 fori=.to7:poke51192+i,137+i:next
  193. 1930 poke53291,8:poke53292,3:poke53293,3:poke53294,1
  194. 1940 poke214,8:print
  195. 1950 printtab(19)"[156][160][160][157][157][170][170]"
  196. 1960 poke53269,255:gosub2950
  197. 1970 poke214,1:print
  198. 1980 fori=1to5:printtab(2)"                                    ":next
  199. 1990 printtab(14)"@@@@@@@@"
  200. 2000 poke55591,2:poke55592,2:poke55595,2:poke55596,2:poke55599,2:poke55600,2
  201. 2010 poke214,16:print
  202. 2020 fori=1to5:printtab(2)"                                    ":next
  203. 2030 printtab(14)"@@@@"
  204. 2040 poke56191,2:poke56192,2:poke56193,2:poke56194,2:poke56195,4:poke56196,4
  205. 2050 poke56197,2:poke56198,2:poke56199,2:poke56200,2
  206. 2060 ifpl=2then2110
  207. 2070 rem -- human win --
  208. 2080 printtab(5)"[156]you have beaten knees calhoon!"
  209. 2090 printtab(9)"way to go, star racer!":goto2140
  210. 2100 rem -- knees win --
  211. 2110 printtab(6)"[156]knees calhoon wins the race!"
  212. 2120 printtab(11)"(but it was close)"
  213. 2130 rem -- play again? --
  214. 2140 poke214,17:print
  215. 2150 printtab(7)"do you want to play again?"
  216. 2160 printtab(15)"(y[156]) or (n[156])"
  217. 2170 geta$:ifa$="n"then2260
  218. 2180 ifa$<>"y"then2170
  219. 2190 poke53269,0:gosub2500
  220. 2200 poke214,10:print
  221. 2210 fori=.to2:printtab(7)"[160][160][160][160][160][160][160][160][160][160][160][160][160][160][160][160][160][160][160][160][160][160][160][160][160][160]":next
  222. 222