-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy path06_Yahtzee.bc2
352 lines (351 loc) · 10.6 KB
/
06_Yahtzee.bc2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
1000 A=2000:GOTO20:REM ** YAHTZEE **
1010 GOSUB100
1020 PRINT"This is an electronic YAHTZEE."
1030 PRINT"You may throw the dice a maximum of "
1040 PRINT"three times just as in "
1050 PRINT"the <real> Yahtzee."
1060 PRINT:PRINT"You get a bonus of 35 points"
1070 PRINT"if you score more than 63 points"
1080 PRINT"in the left-hand column (this appears"
1090 PRINT"automatically). You receive 100 extra"
1100 PRINT"points for each extra YAHTZEE."
1110 PRINT:PRINT"WARNING!"
1120 PRINT"You DO NOT have to press <RETURN> (or"
1130 PRINT"whatever it's called on your machine)."
1140 PRINT"So be careful which key you press."
1150 PRINT"There is no second chance!"
1160 PRINT"The Chip-Shop crew have done this to"
1170 PRINT"speed up the game."
1180 PRINT:PRINT"To continue, press <SPACEBAR> ";
1190 GOSUB210:IFIN$<>" " THEN1190
1200 REM
1210 REM
1220 REM SWITCH THE CURSOR OFF
1230 REM HERE IF POSSIBLE
1240 RC=175
1250 DIMW$(6),A$(6),D$(15)
1260 DIMN(13),NN(7),W(6),A(13)
1270 PR=0:BO=0:GOSUB100
1280 AA=0:BB=0:CC=0:DD=0:EE=0:FF=0:GG=0
1290 M7=0:M8=0:M9=0:MA=0:MB=0:MC=0:MD=0
1300 N1=0:N2=0:N3=0:N4=0:N5=0:N6=0
1310 N7=0:N8=0:N9=0:NA=0:NB=0:NC=0:ND=0
1320 A$(1)=" "
1330 A$(2)="* "
1340 A$(3)=" * "
1350 A$(4)=" *"
1360 A$(5)="* *"
1370 REM
1380 HO=12:VE=1:GOSUB110:PRINT"Y A H T Z E E"
1390 HO=11:VE=23:GOSUB110:PRINT"Record ";RC;" points";
1400 HO=0:VE=10:GOSUB110
1410 PRINT"*** Press <SPACEBAR> to start *** ";
1420 GOSUB210:IFIN$<>" " THEN1420
1430 HO=0:VE=10:GOSUB110
1440 PRINT" "
1450 REM FIRST THROW
1460 GOSUB2000
1470 FORK=1 TO2
1480 HO=0:VE=10:GOSUB110
1490 PRINT"How many shall I throw again (0-5) ? ";
1500 GOSUB210:IFASC(IN$)<48 ORASC(IN$)>53 THEN1500
1510 GOSUB110:PRINT" "
1520 H=VAL(IN$):IFH=0 THENK=2:GOTO1720
1530 IFH>0 THENHO=0:VE=8:GOSUB110:PRINT"(";H;")"
1540 IFH=5 THENW(1)=1:W(2)=2:W(3)=3:W(4)=4:W(5)=5
1550 IFH=5 THENGOSUB2000:GOTO1720
1560 HO=7:VE=10:GOSUB110
1570 PRINT"Which die (1-5) ?";
1580 FORX=1 TOH
1590 GOSUB210:W$(X)=IN$
1600 IFASC(IN$)<49 ORASC(IN$)>53 THEN1590
1610 W(X)=VAL(W$(X))
1620 HO=7+6*(W(X)-1):VE=8:GOSUB110:PRINTW$(X)
1630 NEXTX
1640 REM
1650 FORX=1 TOH
1660 IFW(X)=1 THENHO=6:GOSUB2300
1670 IFW(X)=2 THENHO=12:GOSUB2300
1680 IFW(X)=3 THENHO=18:GOSUB2300
1690 IFW(X)=4 THENHO=24:GOSUB2300
1700 IFW(X)=5 THENHO=30:GOSUB2300
1710 NEXTX
1720 HO=0:VE=8:GOSUB110
1730 PRINT" "
1740 NEXTK
1750 GOSUB4000
1760 IFIN$="1" THENGOSUB5000
1770 IFIN$="2" THENGOSUB5500
1780 IFIN$="3" THENGOSUB6000
1790 IFIN$="4" THENGOSUB6500
1800 IFIN$="5" THENGOSUB7000
1810 IFIN$="6" THENGOSUB7500
1820 IFIN$="D" ORIN$="d" THENGOSUB8000
1830 IFIN$="V" ORIN$="v" THENGOSUB8500
1840 IFIN$="K" ORIN$="k" THENGOSUB9000
1850 IFIN$="G" ORIN$="g" THENGOSUB9500
1860 IFIN$="F" ORIN$="f" THENGOSUB10000
1870 IFIN$="Y" ORIN$="y" THENGOSUB10500
1880 IFIN$="C" ORIN$="c" THENGOSUB11000
1890 IFAA+BB+CC+DD+EE+FF>=63 THENBO=35
1900 IFBO=35 THENHO=14:VE=19:GOSUB110:PRINTBO
1910 TL=0
1920 IFN1=1 ANDN2=1 ANDN3=1 ANDN4=1 THENTL=TL+1
1930 IFN5=1 ANDN6=1 ANDN7=1 ANDN8=1 THENTL=TL+1
1940 IFN9=1 ANDNA=1 ANDNB=1 ANDNC=1 THENTL=TL+1
1950 IFND=1 THENTL=TL+1
1960 IFTL=4 THEN1980
1970 GOTO1460
1980 GOSUB12000
1990 END
2000 REM FIVE DICE THROW
2010 REM
2020 FORWS=1 TO15 STEP3
2030 GOSUB260:GOSUB3000
2040 NEXTWS
2050 N=0
2060 FORHO=6 TO30 STEP6
2070 FORVE=4 TO6
2080 N=N+1:GOSUB110:PRINTD$(N)
2090 NEXTVE:NEXTHO
2100 RETURN
2300 REM X DICE AGAIN
2310 GOSUB260
2320 WS=W(X)*3-2
2330 GOSUB3000
2340 WS=W(X)*3-3
2350 FORVE=4 TO6:WS=WS+1:GOSUB110:PRINTD$(WS)
2360 NEXTVE:RETURN
3000 REM ROLLING OF THE DOUBLE
3010 IFRV>1/6 THEN3030
3015 A(WS)=1
3020 D$(WS)=A$(1):D$(WS+1)=A$(3):D$(WS+2)=A$(1):GOTO3150
3030 IFRV>2/6 THEN3050
3035 A(WS)=2
3040 D$(WS)=A$(4):D$(WS+1)=A$(1):D$(WS+2)=A$(2):GOTO3150
3050 IFRV>3/6 THEN3070
3055 A(WS)=3
3060 D$(WS)=A$(2):D$(WS+1)=A$(3):D$(WS+2)=A$(4):GOTO3150
3070 IFRV>4/6 THEN3090
3075 A(WS)=4
3080 D$(WS)=A$(5):D$(WS+1)=A$(1):D$(WS+2)=A$(5):GOTO3150
3090 IFRV>5/6 THEN3110
3095 A(WS)=5
3100 D$(WS)=A$(5):D$(WS+1)=A$(3):D$(WS+2)=A$(5):GOTO3150
3110 D$(WS)=A$(5):D$(WS+1)=A$(5):D$(WS+2)=A$(5)
3115 A(WS)=6
3150 A=A(1):B=A(4):C=A(7):D=A(10):E=A(13):RETURN
4000 HO=4:VE=10:GOSUB110
4010 PRINT"Where will you fill in the score ? "
4020 HO=0:VE=13:GOSUB110:PRINT"(1) Ones"
4030 HO=0:VE=14:GOSUB110:PRINT"(2) Twos"
4040 HO=0:VE=15:GOSUB110:PRINT"(3) Threes"
4050 HO=0:VE=16:GOSUB110:PRINT"(4) Fours"
4060 HO=0:VE=17:GOSUB110:PRINT"(5) Fives"
4070 HO=0:VE=18:GOSUB110:PRINT"(6) Sixes "
4080 HO=0:VE=19:GOSUB110:PRINT" Bonus"
4090 HO=18:VE=13:GOSUB110:PRINT"(D) Three the same"
4100 HO=18:VE=14:GOSUB110:PRINT"(V) Four the same"
4110 HO=18:VE=15:GOSUB110:PRINT"(K) Small Street"
4120 HO=18:VE=16:GOSUB110:PRINT"(G) Large Street"
4130 HO=18:VE=17:GOSUB110:PRINT"(F) Full house"
4140 HO=18:VE=18:GOSUB110:PRINT"(Y) Yahtzee"
4150 HO=18:VE=19:GOSUB110:PRINT"(C) Choice"
4160 GOSUB210:TE=0
4170 IFIN$<>"1" ANDIN$<>"2" ANDIN$<>"3" THENTE=TE+1
4180 IFIN$<>"4" ANDIN$<>"5" ANDIN$<>"6" THENTE=TE+1
4190 IFIN$<>"D" ANDIN$<>"V" ANDIN$<>"K" THENTE=TE+1
4200 IFIN$<>"G" ANDIN$<>"F" ANDIN$<>"Y" THENTE=TE+1
4210 IFIN$<>"C" THENTE=TE+1
4220 IFTE=5 THEN4160
4230 RETURN
5000 REM ONES
5010 IFN1=1 THEN1750
5020 IFA=B ANDB=C ANDC=D ANDD=E THENPR=PR+1
5030 IFA=1 THENAA=AA+1
5040 IFB=1 THENAA=AA+1
5050 IFC=1 THENAA=AA+1
5060 IFD=1 THENAA=AA+1
5070 IFE=1 THENAA=AA+1
5080 HO=14:VE=13:GOSUB110:PRINTAA
5090 N1=1
5100 RETURN
5500 REM TWOS
5510 IFN2=1 THEN1750
5520 IFA=B ANDB=C ANDC=D ANDD=E THENPR=PR+1
5530 IFA=2 THENBB=BB+2
5540 IFB=2 THENBB=BB+2
5550 IFC=2 THENBB=BB+2
5560 IFD=2 THENBB=BB+2
5570 IFE=2 THENBB=BB+2
5580 HO=14:VE=14:GOSUB110:PRINTBB
5590 N2=1
5600 RETURN
6000 REM THREES
6010 IFN3=1 THEN1750
6020 IFA=B ANDB=C ANDC=D ANDD=E THENPR=PR+1
6030 IFA=3 THENCC=CC+3
6040 IFB=3 THENCC=CC+3
6050 IFC=3 THENCC=CC+3
6060 IFD=3 THENCC=CC+3
6070 IFE=3 THENCC=CC+3
6080 HO=14:VE=15:GOSUB110:PRINTCC
6090 N3=1
6100 RETURN
6500 REM FOURS
6510 IFN4=1 THEN1750
6520 IFA=B ANDB=C ANDC=D ANDD=E THENPR=PR+1
6530 IFA=4 THENDD=DD+4
6540 IFB=4 THENDD=DD+4
6550 IFC=4 THENDD=DD+4
6560 IFD=4 THENDD=DD+4
6570 IFE=4 THENDD=DD+4
6580 HO=14:VE=16:GOSUB110:PRINTDD
6590 N4=1
6600 RETURN
7000 REM FIVES
7010 IFN5=1 THEN1750
7020 IFA=B ANDB=C ANDC=D ANDD=E THENPR=PR+1
7030 IFA=5 THENEE=EE+5
7040 IFB=5 THENEE=EE+5
7050 IFC=5 THENEE=EE+5
7060 IFD=5 THENEE=EE+5
7070 IFE=5 THENEE=EE+5
7080 HO=14:VE=17:GOSUB110:PRINTEE
7090 N5=1
7100 RETURN
7500 REM SIXES
7510 IFN6=1 THEN1750
7520 IFA=B ANDB=C ANDC=D ANDD=E THENPR=PR+1
7530 IFA=6 THENFF=FF+6
7540 IFB=6 THENFF=FF+6
7550 IFC=6 THENFF=FF+6
7560 IFD=6 THENFF=FF+6
7570 IFE=6 THENFF=FF+6
7580 HO=14:VE=18:GOSUB110:PRINTFF
7590 N6=1
7600 RETURN
8000 REM THREE THE SAME
8010 NN(1)=0:NN(2)=0:NN(3)=0:NN(4)=0:NN(5)=0:NN(6)=0
8020 IFN7=1 THEN1750
8030 IFA=B ANDB=C ANDC=D ANDD=E THENPR=PR+1
8040 FORI=1 TO6:GOSUB13000:NEXTI
8050 TR=0
8060 IFNN(1)<3 ANDNN(2)<3 ANDNN(3)<3 THENTR=TR+1
8070 IFNN(4)<3 ANDNN(5)<3 ANDNN(6)<3 THENTR=TR+1
8080 IFTR<2 THENM7=A+B+C+D+E
8090 HO=37:VE=13:GOSUB110:PRINTM7
8100 N7=1
8110 RETURN
8500 REM FOUR THE SAME
8510 NN(1)=0:NN(2)=0:NN(3)=0:NN(4)=0:NN(5)=0:NN(6)=0
8520 IFN8=1 THEN1750
8530 IFA=B ANDB=C ANDC=D ANDD=E THENPR=PR+1
8540 FORI=1 TO6:GOSUB13000:NEXTI
8550 TR=0
8560 IFNN(1)<4 ANDNN(2)<4 ANDNN(3)<4 THENTR=TR+1
8570 IFNN(4)<4 ANDNN(5)<4 ANDNN(6)<4 THENTR=TR+1
8580 IFTR<2 THENM8=A+B+C+D+E
8590 HO=37:VE=14:GOSUB110:PRINTM8
8600 N8=1
8610 RETURN
9000 REM SMALL STREET
9010 NN(1)=0:NN(2)=0:NN(3)=0:NN(4)=0:NN(5)=0:NN(6)=0
9020 IFN9=1 THEN1750
9030 IFA=B ANDB=C ANDC=D ANDD=E THENPR=PR+1:M9=30
9040 FORI=1 TO6:GOSUB13000:NEXTI
9050 TR=0
9060 IFNN(1)>=1 ANDNN(2)>=1 THENTR=TR+1
9070 IFNN(3)>=1 ANDNN(4)>=1 THENTR=TR+1
9080 IFTR=2 THENM9=30
9090 TR=0
9100 IFNN(2)>=1 ANDNN(3)>=1 THENTR=TR+1
9110 IFNN(4)>=1 ANDNN(5)>=1 THENTR=TR+1
9120 IFTR=2 THENM9=30
9130 TR=0
9140 IFNN(3)>=1 ANDNN(4)>=1 THENTR=TR+1
9150 IFNN(5)>=1 ANDNN(6)>=1 THENTR=TR+1
9160 IFTR=2 THENM9=30
9170 HO=37:VE=15:GOSUB110:PRINTM9
9180 N9=1
9190 RETURN
9500 REM LARGE STREET
9510 NN(1)=0:NN(2)=0:NN(3)=0:NN(4)=0:NN(5)=0:NN(6)=0
9520 IFNA=1 THEN1750
9530 IFA=B ANDB=C ANDC=D ANDD=E THENPR=PR+1:MA=40
9540 FORI=1 TO6:GOSUB13000:NEXTI
9550 TR=0
9560 IFNN(1)>=1 ANDNN(2)>=1 ANDNN(3)>=1 THENTR=TR+1
9570 IFNN(4)>=1 ANDNN(5)>=1 THENTR=TR+1
9580 IFTR=2 THENMA=40
9590 TR=0
9600 IFNN(2)>=1 ANDNN(3)>=1 ANDNN(4)>=1 THENTR=TR+1
9610 IFNN(5)>=1 ANDNN(6)>=1 THENTR=TR+1
9620 IFTR=2 THENMA=40
9630 HO=37:VE=16:GOSUB110:PRINTMA
9640 NA=1
9650 RETURN
10000 REM FULL HOUSE
10010 NN(1)=0:NN(2)=0:NN(3)=0:NN(4)=0:NN(5)=0:NN(6)=0
10020 IFNB=1 THEN1750
10030 IFA=B ANDB=C ANDC=D ANDD=E THENPR=PR+1
10040 FORI=1 TO6:GOSUB13000:NEXTI
10050 TR=0:TS=0
10060 FORI=1 TO6:IFNN(I)=3 THENTR=1
10065 NEXTI
10070 FORI=1 TO6:IFNN(I)=2 THENTS=1
10075 NEXTI
10080 IFTR=1 ANDTS=1 THENMB=25
10090 HO=37:VE=17:GOSUB110:PRINTMB
10100 NB=1
10110 RETURN
10500 REM FIVE THE SAME
10510 IFNC=1 THEN1750
10520 IFA=B ANDB=C ANDC=D ANDD=E THENMC=50
10530 HO=37:VE=18:GOSUB110:PRINTMC
10540 NC=1
10550 RETURN
11000 REM CHOICE
11010 IFND=1 THEN1750
11020 IFA=B ANDB=C ANDC=D ANDD=E THENPR=PR+1
11030 MD=A+B+C+D+E
11040 HO=37:VE=19:GOSUB110:PRINTMD
11050 ND=1
11060 RETURN
12000 REM END
12010 GG=AA+BB+CC+DD+EE+FF+BO+M7+M8+M9
12020 GG=GG+MA+MB+MC+MD
12025 IFMC=50 THENGG=GG+PR*100
12030 IFNOT(MC=50 ANDPR>0) THEN12050
12040 HO=11:VE=21:GOSUB110:PRINT"Bonus ";PR*100;" points"
12050 HO=11:VE=22:GOSUB110:PRINT"Total ";GG;" points"
12060 IFGG>RC THENRC=GG
12070 HO=0:VE=10:GOSUB110
12080 PRINT" Another game (Y/N) ? ";
12090 GOSUB210:IFIN$="Y" ORIN$="y" THEN1270
12100 GOSUB100
12110 HO=0:VE=10:GOSUB110
12120 PRINT"Chip Shop wishing you happy computing."
12130 RETURN
13000 IFA=I THENNN(I)=NN(I)+1
13010 IFB=I THENNN(I)=NN(I)+1
13020 IFC=I THENNN(I)=NN(I)+1
13030 IFD=I THENNN(I)=NN(I)+1
13040 IFE=I THENNN(I)=NN(I)+1
13050 RETURN
30000 REM *****************************
30010 REM * *
30020 REM * YAHTZEE *
30030 REM * *
30040 REM * written by *
30050 REM * *
30060 REM * Richard van Straten *
30070 REM * P. Soutmanlaan 63 *
30080 REM * 1701 MB Heerhoguwaard *
30090 REM * The Netherlands *
30100 REM * Translated by *
30110 REM * Jonathan Marks *
30120 REM * Hilversum *
30130 REM * January 1984 *
30140 REM * *
30150 REM *****************************