home *** CD-ROM | disk | FTP | other *** search
/ Compute! Gazette 1992 October / 1992-10.d64 / mindboggle (.txt) < prev    next >
Commodore BASIC  |  2022-09-20  |  7KB  |  206 lines

  1. 1 ifa=0thenpoke53265,11:a=1:load"boggle.ml",8,1
  2. 2 poke56578,63:poke56576,196:poke53272,18:poke648,196:gosub96:poke788,52
  3. 3 print"[147]"chr$(14)chr$(8):poke53280,0:poke53281,0:gosub112
  4. 4 ifhs>fhthenfh=hs
  5. 5 print""tab(11)"[159]high score: ";:a$=str$(fh):z=7:gosub204:printc$
  6. 6 printtab(14)"[211][212][213][214][215][216][217][218][219][220][221][255]":printtab(14)"[223][160][161][162][163][164][165][166][167][168][173][174]"
  7. 7 printtab(12)"copyright @ 1992":printtab(12)"[158]compute magazine"
  8. 8 printtab(8)"written by  john cameron":poke53265,27
  9. 9 iffh=0then16
  10. 10 gosub205:a$(0)="yes":a$(1)="no ":yn=0
  11. 11 printleft$(dw$,22)tab(8)"use the same players: [159]"a$(yn)
  12. 12 gosub82:a=yn-(jr=8andyn<1)+(jl=4andyn>0):iffb=0thenyn=a:goto15
  13. 13 ifa=ynthen12
  14. 14 yn=a:goto11
  15. 15 ifyn=0then32
  16. 16 gosub205:pl=0
  17. 17 printleft$(dw$,22)tab(10)"number of players:[159]";pl
  18. 18 gosub82:p=pl-(jr=8andpl<4)+(jl=4andpl>0):iffb=0thenpl=p:goto21
  19. 19 ifp=plthen18
  20. 20 pl=p:goto17
  21. 21 ifpl=0then32
  22. 22 fork=1topl:gosub205:in$="":ct=0
  23. 23 printleft$(dw$,22)tab(4)"enter name of player"k"[157]: ";:gosub25
  24. 24 pl$(k)=left$(in$+"       ",8):next:goto32
  25. 25 print"[159][192]";
  26. 26 geta$:ifa$=""then26
  27. 27 ifa$=chr$(13)andct>0thenprint"[157] ":return
  28. 28 ifa$=chr$(20)andct>0thenct=ct-1:in$=left$(in$,ct):print"[157]"chr$(20);:goto25
  29. 29 if(a$<"a"anda$<>" ")ora$>"z"then26
  30. 30 ct=ct+1:ifct>8thenct=8:goto26
  31. 31 print"[157]"a$;:in$=in$+a$:goto25
  32. 32 gosub205:sk=0
  33. 33 printleft$(dw$,22)tab(5)"enter skill level: [159]";sk$(sk)
  34. 34 gosub82:s=sk-(jr=8andsk<7)+(jl=4andsk>0):iffb=0thensk=s:goto37
  35. 35 ifs=skthen34
  36. 36 sk=s:goto33
  37. 37 gosub205:printleft$(dw$,22)tab(14)"[159]please  wait"
  38. 38 ifpl<4thenfork=pl+1to4:pl$(k)=cp$:next
  39. 39 sc(1)=0:sc(2)=0:sc(3)=0:sc(4)=0
  40. 40 fork=0to18:forl=0to8:di(k,l)=0:bl$(k,l)="":next:next
  41. 41 lm=15+10*sk:fork=1tolm
  42. 42 a=fnrn(18):b=fnrn(8):ifbl$(a,b)<>""then42
  43. 43 bl$(a,b)=pc$(fnrn(3),0)+pc$(fnrn(3),1)+r$+pc$(fnrn(3),2)+pc$(fnrn(3),3)
  44. 44 a$=bl$(a,b)
  45. 45 c=fnrn(18):d=fnrn(8):ifbl$(c,d)<>""then45
  46. 46 bl$(c,d)=a$:mt(c,d,0)=a:mt(c,d,1)=b:mt(a,b,0)=c:mt(a,b,1)=d
  47. 47 mt(a,b,2)=0:mt(c,d,2)=0:next
  48. 48 fork=0to18:forl=0to8
  49. 49 ifbl$(k,l)=""thengosub51:mt(k,l,0)=-1:mt(k,l,2)=0
  50. 50 next:next:goto56
  51. 51 c=fnrn(3)+1:oncgosub52,53,54,55:return
  52. 52 bl$(k,l)=fi$:return
  53. 53 bl$(k,l)=hp$:return
  54. 54 bl$(k,l)=ss$:return
  55. 55 bl$(k,l)=th$:return
  56. 56 print"[147][149]!"b1$"#";:fork=1to18:print"$"spc(38)"%";:next
  57. 57 print"$"b1$"%$[151]"pl$(1)"  "pl$(2)"  "pl$(3)"  "pl$(4)"[149]%";
  58. 58 print"$"b2$"%$"spc(38)"%&"b1$"'"
  59. 59 fork=2to19step2:forl=1to19step2:printleft$(dw$,k)spc(l)vb$
  60. 60 printleft$(dw$,k)spc(38-l)vb$:next:next:qq=fre(0)
  61. 61 printleft$(dw$,23)"";:fork=1to4:a$=str$(sc(k))
  62. 62 z=7:gosub204:b$=" "+c$+" ":printcl$(k)b$;:ifk<4thenprint"  ";
  63. 63 next
  64. 64 printleft$(dw$,25)tab(10)"[159]pairs remaining: ";
  65. 65 a$=str$(lm):z=3:gosub204:printc$"";:hi=-1:mx=ox:my=cy
  66. 66 iflm<1then143
  67. 67 cp=cp+1:ifcp>4thencp=1
  68. 68 gosub86:lp=cp
  69. 69 gosub87:ifpl$(cp)=cp$then164
  70. 70 gosub82
  71. 71 dx=ox-(jr=8andox<18)+(jl=4andox>0):cx=dx
  72. 72 dy=cy-(jd=2andcy<8)+(ju=1andcy>0)
  73. 73 gx=gx-(gxand1):ifdx>14thencx=cx-16:gx=gxor1
  74. 74 ox=dx:cy=dy:iffb=0thengosub87:goto76
  75. 75 goto69
  76. 76 a$=bl$(ox,cy):ifdi(ox,cy)>0anda$<>fb$then69
  77. 77 b$="":ifa$=fi$thenb$=cl$(cp)
  78. 78 zl=-(a$=fi$)-2*(a$=th$)-3*(a$=hp$)-4*(a$=ss$)-5*(a$=fb$)
  79. 79 onspgoto116,119
  80. 80 hi=-1:sp=2:gx=gxor-2*(px>14):goto69
  81. 81 sp=1:gx=gx-(gxand2):pokev+21,gx:goto61
  82. 82 jy=15-(peek(j)and15):ju=jyand1:jd=jyand2:jl=jyand4:jr=jyand8
  83. 83 fb=peek(j)and16
  84. 84 ifju=0andjd=0andjr=0andjl=0andfb=16thena=-(j=56320)+(j=56321):j=j+a:goto82
  85. 85 return
  86. 86 fork=0to7:poke56097+(lp-1)*10+k,11:poke56097+(cp-1)*10+k,1:next:return
  87. 87 z=-(sp=2):pokev+40,cl(5):pokev+39,cl(cp)
  88. 88 pokev,28+16*cx:pokev+16,gx:pokev+1,56+16*cy
  89. 89 ifz=1andox=pxandcy=pythenpokev+2,peek(v):pokev+3,peek(v+1)
  90. 90 pokev+21,1+2*z:return
  91. 91 di(q1,q2)=5:mt(q1,q2,2)=mt(q1,q2,2)+.1
  92. 92 printleft$(dw$,q2*2+2)spc(q1*2+1)b$a$:bl$(q1,q2)=a$:gosub202:return
  93. 93 printleft$(dw$,q2*2+2)spc(q1*2+1)vb$:di(q1,q2)=0:ns=5:gosub200
  94. 94 rv=rv-1:return
  95. 95 a$=fb$:b$=cl$(cp):di(q1,q2)=cp:lm=lm-.5:goto92
  96. 96 dimbl$(18,8),di(18,8),pc$(3,3),mt(18,8,2):so=54272
  97. 97 def fnrn(x)=int((peek(so+27)/256)*(x+1))
  98. 98 def fnp(x)=(peek(so+27)/256)<x
  99. 99 r$="[157][157]":fi$="()"+r$+"*+":hp$="[158];<"+r$+"=>":ss$=",-"+r$+"./":fh=0:hs=0
  100. 100 fb$="_?"+r$+"[192][209]":vb$="[[154]\"+r$+"]^":th$="[155][169][170]"+r$+"[171][172]":cp$="computer"
  101. 101 b1$="":b2$="":fork=1to38:b1$=b1$+chr$(34):b2$=b2$+"[210]":next
  102. 102 dw$="":j=56320
  103. 103 fork=0to3:forl=0to3:pc$(k,l)=chr$(97+4*k+l):nextl,k
  104. 104 fork=0to2:poke49152+k,255:poke49155+k,255:next
  105. 105 fork=49158to49203step3:pokek,224:pokek+1,0:pokek+2,7:next
  106. 106 fork=0to2:poke49206+k,255:poke49209+k,255:poke49212+k,0:next
  107. 107 cl$(1)="":cl$(2)="[159]":cl$(3)="":cl$(4)="[158]"
  108. 108 cl(1)=5:cl(2)=3:cl(3)=2:cl(4)=7:cl(5)=12
  109. 109 data"simple     ","very easy  ","rather easy","almost easy","almost hard"
  110. 110 data"rather hard","very hard  ","difficult  "
  111. 111 fork=0to7:readsk$(k):next:return
  112. 112 v=53248:pokev+21,0:pokev+16,0:pokev+2,28:pokev+3,56
  113. 113 poke51192,0:poke51193,0:cx=0:cy=0:gx=0:cp=0:lp=2:sp=1:ox=0
  114. 114 fork=sotoso+24:pokek,0:next:rv=0:pokeso+15,255:pokeso+18,128
  115. 115 return
  116. 116 px=ox:py=cy:lz=zl:ifzl<5thenq1=ox:q2=cy:gosub91
  117. 117 onzl+1goto80,80,80,118,81,69
  118. 118 sc(cp)=sc(cp)+250:goto81
  119. 119 ifzl<5thenq1=ox:q2=cy:gosub91
  120. 120 onzl+1goto121,130,133,135,136,138
  121. 121 onlz+1goto122,127,125
  122. 122 ifa$<>bl$(px,py)then125
  123. 123 sc(cp)=sc(cp)+100:q1=ox:q2=cy:gosub95
  124. 124 q1=px:q2=py:gosub95:goto81
  125. 125 fork=1to2500:next
  126. 126 q1=ox:q2=cy:gosub93:q1=px:q2=py:gosub93:goto81
  127. 127 fork=0to18:forl=0to8:c$=a$
  128. 128 ifa$=bl$(k,l)thenq1=k:q2=l:gosub95:sc(cp)=sc(cp)+50:a$=c$
  129. 129 nextl,k:goto81
  130. 130 onlz+1goto132,80
  131. 131 goto81
  132. 132 a$=bl$(px,py):goto127
  133. 133 iflz=0then125
  134. 134 goto81
  135. 135 onlz+1goto125,118:goto81
  136. 136 iflz=0then125
  137. 137 goto81
  138. 138 iflz<>2then80
  139. 139 a=peek(55337+ox*2+(cy*2)*40)and15:ifa=cl(cp)then80
  140. 140 lm=lm+.5:q1=ox:q2=cy:gosub95:sc(cp)=sc(cp)+50
  141. 141 fork=1to4:ifa=cl(k)thenb=k:k=5
  142. 142 next:sc(b)=sc(b)-50:goto81
  143. 143 pokev+21,0:print"[147]final results:":print"[149]"b2$
  144. 144 print"[151]name",,"score","[157][157]blocks won"
  145. 145 a(1)=0:a(2)=0:a(3)=0:a(4)=0
  146. 146 forl=0to8:fork=0to18:a=di(k,l):ifa>0anda<5thena(a)=a(a)+1
  147. 147 next:next
  148. 148 fork=1to4:print""pl$(k),cl$(k);:a$=str$(sc(k))
  149. 149 z=7:gosub204:printc$,:a$=str$(a(k)):z=4:gosub204:printc$:next
  150. 150 print"[149]!"left$(b1$,34)"#":fork=1to3:print"$"spc(34)"%":next
  151. 151 print"&"left$(b1$,34)"'"
  152. 152 hs=sc(1):w=1:fork=2to4:ifsc(k)>hsthenhs=sc(k):w=k
  153. 153 next:printleft$(dw$,20)tab(5)"[159]the winner: ";
  154. 154 fork=1to4:ifw=kthennext:goto157
  155. 155 ifsc(k)=hsthena=-k*(a(k)>a(w))-w*(a(w)>a(k))-5*(a(k)=a(w)):w=a
  156. 156 next
  157. 157 ifw=5thenprint"high score is tied":goto159
  158. 158 print"player"w" "pl$(w)
  159. 159 printleft$(dw$,24)tab(8)"[158]press fire to play again"
  160. 160 gosub82:iffb=0then3
  161. 161 goto160
  162. 162 mx=fnrn(18):my=fnrn(8):goto170
  163. 163 nx=fnrn(18):ny=fnrn(8):goto175
  164. 164 onspgoto165,174
  165. 165 ifhi>-1then197
  166. 166 ifmt(mx,my,0)=-1andbl$(mx,my)<>ss$then195
  167. 167 mx=0:my=0:forl=0to8:fork=0to18:a=fnrn(4)
  168. 168 ifmt(k,l,2)>hianddi(k,l)=0and(a=0orrv>160)thenmx=k:my=l
  169. 169 next:next
  170. 170 a=fnrn(1):nx=mt(mx,my,0):ny=mt(mx,my,1):hi=mt(mx,my,2)
  171. 171 ifmt(mx,my,0)>-1thenifnotfnp(mt(nx,ny,2)+sk*.002+rv*.001)anda=0then162
  172. 172 ifdi(mx,my)>0then162
  173. 173 goto197
  174. 174 ifhi>-1then197
  175. 175 onlz+1goto176,180,183
  176. 176 ifnx=-1then163
  177. 177 iffnrn(9)=0then193
  178. 178 ifmt(nx,ny,0)>-1thenifnotfnp(mt(nx,ny,2)+sk*.002+rv*.001)andrv<170then163
  179. 179 goto193
  180. 180 ifnx=-1then163
  181. 181 a=fnrn(2):ifa=0then163
  182. 182 goto193
  183. 183 ifnx=-1then163
  184. 184 a=-(fnrn(2)=0):iflm=(15+10*sk)thenona+1goto163,193
  185. 185 nx=-1:fork=0to18:forl=0to8:a=peek(55337+k*2+(l*2)*40)and15
  186. 186 ifbl$(k,l)=fb$thengosub190:iffl=0thenk=19:l=9
  187. 187 next:next
  188. 188 ifnx=-1thennx=fnrn(18):ny=fnrn(8)
  189. 189 goto194
  190. 190 nx=k:ny=l:fl=0:ifa=cl(cp)thenfl=1:nx=-1:return
  191. 191 b=fnrn(1):ifb>0thenfl=1
  192. 192 return
  193. 193 ifdi(nx,ny)>0then163
  194. 194 hi=5:mx=nx:my=ny:goto197
  195. 195 iflm=(15+10*sk)andbl$(mx,my)=th$then162
  196. 196 goto170
  197. 197 ju=-(my<cy):jd=-2*(my>cy):jr=-8*(mx>ox):jl=-4*(mx<ox)
  198. 198 fb=16:ifox=mxandcy=mythenfb=0
  199. 199 goto71
  200. 200 pokeso+24,15:pokeso+5,9:pokeso+6,0:pokeso,ns:pokeso+1,ns
  201. 201 pokeso+4,33:forsd=1to100:next:pokeso+4,32:ret