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