-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy path26L_Multi-Mastermind.bc2
326 lines (325 loc) · 11.5 KB
/
26L_Multi-Mastermind.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
1000 GOSUB3500:GOTO20:REM MULTI-MASTERMIND
1010 S=0:N1$="Multi-Mastermind":GOSUB3500
1020 DIMS$(NR)
1030 DIMS(10),T(10)
1040 DIMG(SP,2)
1790 M=0:CT=6:CN=2
1800 GOTO4000
2000 GOSUB100:N$=N1$:VE=0:GOSUB3000
2010 N$=N2$:VE=2:GOSUB3000:RETURN
2100 GOSUB100:N$=N1$:VE=0:GOSUB3000:RETURN
2200 REM CONTROLE GETAL
2210 IFQ$="" THENM=1:GOTO2410
2220 IFLEFT$(Q$,1)="0" THENM=1:GOTO2500
2230 FORI=1 TOLEN(Q$)
2240 IFASC(MID$(Q$,I,1))<48 THENM=1
2250 IFASC(MID$(Q$,I,1))>57 THENM=1
2260 NEXTI:IFM=1 THEN2420
2270 FORI=1 TOLEN(Q$)-1:FORJ=I+1 TOLEN(Q$)
2280 IFMID$(Q$,I,1)=MID$(Q$,J,1) THENM=1
2290 NEXTJ:NEXTI:IFM=1 THEN2440
2300 RETURN
2400 REM FOUTMELDINGEN
2410 GOSUB250:PRINT"Dit hoort er ook bij!":GOTO4400
2420 GOSUB250
2430 PRINT"Alleen cijfers in het getal!":GOTO4400
2440 GOSUB250:PRINT"Geen DUBBELE cijfers!":GOTO4400
2450 GOSUB250:PRINT"Maximaal 10 cijfers!":GOTO4400
2460 GOSUB250:PRINT"Moet ";Q;" cijfers zijn!":GOTO4400
2500 GOSUB250:GOSUB2630:GOTO4400
2600 REM MELDINGEN
2610 PRINT"Het getal mag bestaan uit alle cijfers:"
2620 PRINT" 1,2,3,4,5,6,7,8,9 en 0":RETURN
2630 PRINT"Het cijfer '0' mag nooit vooraan staan."
2640 RETURN
2650 PRINT"Een cijfer mag maar EEN keer voorkomen."
2660 RETURN
2670 PRINT"Het aantal cijfers is vrij verkiesbaar."
2680 RETURN
3000 REM KOPPEN CENTREREN
3010 X=LEN(N$):HO=INT((40-X)/2)
3020 GOSUB110:PRINTN$
3030 IFM=5 THENM=0:RETURN
3040 VE=VE+1:GOSUB110
3050 REM STREEP ER ONDER
3060 X$="":FORK=1 TOX:X$=X$+"-":NEXTK
3070 PRINTX$:RETURN
3100 GOSUB250:HO=0:VE=23:GOSUB110
3110 PRINT"Druk een toets in ...";
3120 GOSUB210:PRINT:RETURN
3150 GOSUB250:HO=0:VE=23:GOSUB110
3160 PRINT"T=Terug/S=Stoppen/V=Verder ...";
3170 GOSUB210:PRINT:RETURN
3200 GOSUB250:HO=0:VE=23:GOSUB110
3210 PRINT"T=Terug/S=Stoppen ...";
3220 GOSUB210:PRINT:RETURN
3500 REM BEREKENING A IN CLEAR A
3510 RESTORE:READNR:READSP
3520 A=(23+3)*NR:REM SCHATTINGEN PER SPEL
3530 RETURN
4000 N2$="Hoofd-Menu":GOSUB2000:PRINT:TT=0
4010 PRINT" 1=uitleg":PRINT
4020 PRINT" 2=het spel Multi-Mastermind":PRINT:PRINT
4040 GOSUB250:PRINT"Uw keuze: ";:GOSUB210:PRINTIN$
4050 W=VAL(IN$):IF(W<1) OR(W>2) THEN4000
4060 ONW GOTO9000,5000
4400 REM CORRECTIE
4410 FORK=1 TO1000:NEXTK:T1=VE:GOSUB120:T2=VE
4420 HO=0:FORK=T1 TOT2:VE=K:GOSUB110
4430 GOSUB4450:NEXTK:RETURN
4450 PRINT" ":RETURN
4600 REM BOVENKANT SCHERM
4610 HO=0:FORK=2 TO11:VE=K:GOSUB110
4620 GOSUB4450:NEXTK:RETURN
4800 REM ONDERKANT SCHERM
4810 HO=0:FORK=15 TO20:VE=K:GOSUB110
4820 GOSUB4450:NEXTK:RETURN
5000 GOSUB2100:PRINT
5010 PRINT" 1=tegen de computer":PRINT
5020 PRINT" 2=met een tegenstander":PRINT
5030 GOSUB250:PRINT"Uw keuze: ";:GOSUB210:PRINTIN$
5040 W=VAL(IN$):IF(W<1) OR(W>2) THEN5000
5050 FORI=1 TO10:S(I)=0:NEXTI:CO=0
5060 FORI=1 TONR:S$(I)="":NEXTI:N=0:TT=0
5070 IFW=1 THENCO=1:GOSUB5200:GOTO6000
5080 IFW=2 THENCO=2:GOSUB5600:GOTO6000
5200 N2$="Tegen de computer":GOSUB2000:PRINT
5210 GOSUB250:HO=0:VE=6:GOSUB110
5220 PRINT"Uit hoeveel cijfers moet het getal"
5230 PRINT"bestaan? (1-10): ";:INPUTQ$
5240 IFQ$="" THENGOSUB2410:GOTO5210
5250 Q=VAL(Q$):IF(Q<1) OR(Q>10) THEN5200
5260 GOSUB260:S(1)=INT(12*RV)
5270 IF(S(1)<1) OR(S(1)>9) THEN5260
5280 IFQ=1 THENRETURN
5290 FORI=2 TOQ
5300 GOSUB260:S(I)=INT(12*RV)
5310 IFS(I)>9 THEN5300
5320 M=0:FORJ=1 TOI-1:IFM=1 THEN5340
5330 IFS(I)=S(J) THENM=1
5340 NEXTJ:IFM=1 THENM=0:GOTO5300
5350 NEXTI:RETURN
5600 N2$="Met een tegenstander":GOSUB2000:PRINT
5610 PRINT"Vraag een tegenstander om (ongezien"
5620 PRINT"voor U) een GEHEEL POSITIEF getal in te"
5630 PRINT"brengen.":PRINT
5640 GOSUB2610:PRINT:GOSUB2630:GOSUB2650
5650 GOSUB2670:PRINT
5660 PRINT"Breng nu het getal in en toets RETURN:"
5700 GOSUB250:HO=0:VE=18:GOSUB110:INPUTQ$
5710 GOSUB2200:IFM=1 THENM=0:GOTO5700
5720 Q=LEN(Q$):IFQ>10 THENGOSUB2450:GOTO5700
5730 FORI=1 TOQ:S(I)=VAL(MID$(Q$,I,1))
5740 NEXTI:RETURN
6000 N$="Raden van het getal":GOSUB100:M=5
6010 VE=0:GOSUB3000:X=39:GOSUB3050
6020 HO=0:VE=12:GOSUB110:PRINTX$:SR=Q:GOSUB300
6030 N$="het getal bestaat uit "+SR$+" cijfers"
6040 M=5:VE=13:GOSUB3000:PRINTX$
6050 HO=16:VE=21:GOSUB110:PRINT"? = HELP"
6060 IFN=0 THEN6100
6070 IFN<11 THENGOSUB6200:GOTO6100
6080 HO=7:VE=1:FORI=N-9 TON
6090 VE=VE+1:GOSUB110:PRINTS$(I):NEXTI
6100 GOSUB250:HO=0:VE=16:GOSUB110
6110 PRINT"Uw schatting: ";:INPUTQ$
6120 IFLEFT$(Q$,1)="?" THENGOSUB8000:GOTO6000
6130 R=LEN(Q$):IFR<>Q THENGOSUB2460:GOTO6100
6140 GOSUB2200:IFM=1 THENM=0:GOTO6100
6150 FORI=1 TOR:T(I)=VAL(MID$(Q$,I,1))
6160 NEXTI:GOTO6400
6200 HO=7:VE=1:FORI=1 TON
6210 VE=VE+1:GOSUB110:PRINTS$(I):NEXTI:RETURN
6400 REM ANALYSE
6410 T1=0:T2=0:FORI=1 TOQ
6420 IFS(I)=T(I) THENT1=T1+1
6430 FORJ=1 TOQ
6440 IFS(I)=T(J) THENT2=T2+1
6450 NEXTJ:NEXTI
6460 SR=T1:GOSUB300:X$="N.R = "+SR$
6470 SR=T2-T1:GOSUB300:X$=X$+"."+SR$
6480 N$="Resultaat ..: "+X$
6490 GOSUB250:HO=0:VE=18:GOSUB110:PRINTN$
6500 FORK=1 TO1000:NEXTK:GOSUB270:GOSUB4600
6510 GOSUB4800:IF(N+1)>NR THENGOSUB6600
6520 IFLEN(Q$)<10 THENQ$=" "+Q$:GOTO6520
6530 Q$=Q$+" "+X$:N=N+1:TT=TT+1:S$(N)=Q$
6540 IFT1=Q THEN6800
6550 Q$="":GOTO6060
6600 REM (N+1) > NR
6610 FORI=1 TON-1:S$(I)=S$(I+1):NEXTI
6620 S$(N)="":N=N-1:RETURN
6700 REM (S+1) > SP
6710 FORI=1 TOS-1:FORJ=0 TO2
6720 G(I,J)=G(I+1,J):NEXTJ:NEXTI
6730 FORJ=0 TO2:G(S,J)=0:NEXTJ:S=S-1:RETURN
6800 REM TABEL BIJWERKEN
6810 IF(S+1)>SP THENGOSUB6700
6820 S=S+1:G(S,0)=TT:G(S,1)=Q:G(S,2)=CO
6830 GOSUB2000:GOSUB250:SR=TT:GOSUB300
6840 N$="U hebt het getal geraden":VE=6:GOSUB3000
6850 N$="in "+SR$+" beurten.":VE=9:GOSUB3000
6860 GOSUB250:HO=0:VE=14:GOSUB110
6870 PRINT"Wilt U nog eens spelen? (J/N): ";
6880 GOSUB210:PRINTIN$
6890 IF(IN$="J") OR(IN$="j") THEN5000
7000 N2$="Eind-Uitslag":GOSUB2100:PRINT
7010 PRINT"U speelde tegen de computer:":GOSUB7600
7020 A=1:GOSUB7200:GOSUB3100
7030 GOSUB2100:PRINT
7040 PRINT"U speelde met een tegenstander:"
7050 GOSUB7600:A=2:GOSUB7200
7060 GOSUB3200
7070 IF(IN$="T") OR(IN$="t") THEN7000
7080 IF(IN$="S") OR(IN$="s") THEN7100
7090 GOTO7060
7100 GOSUB2100:FORK=1 TO3:GOSUB250:NEXTK
7110 HO=0:VE=12:GOSUB110
7120 PRINT"Wilt U echt stoppen? (J/N): ";
7130 GOSUB210:PRINTIN$
7140 IF(IN$="J") OR(IN$="j") THEN10000
7150 IF(IN$="N") OR(IN$="n") THEN5000
7160 GOTO7100
7200 TT=0:FORI=1 TO10
7210 T=0:T1=0:FORJ=1 TOS
7220 IF(G(J,1)=I) AND(G(J,2)=A) THENGOSUB7400
7230 NEXTJ:IFT=0 THEN7250
7240 GOSUB7800
7250 NEXTI:IFTT=0 THENI=0:GOSUB7800
7260 PRINT"--------------------------------------"
7270 RETURN
7400 T=T+1:T1=T1+G(J,0):TT=TT+1:RETURN
7600 PRINT"--------------------------------------"
7610 PRINT"aantal ! aantal ! aantal !"
7620 PRINT"spellen ! cijfers ! beurten ! gemidd."
7630 PRINT"--------------------------------------"
7640 RETURN
7800 SR=T:GOSUB300:L=5:GOSUB7900:L$=SR$
7810 SR=I:GOSUB300:L=10:GOSUB7900:L$=L$+SR$
7820 SR=T1:GOSUB300:L=11:GOSUB7900:L$=L$+SR$
7830 IFT1=0 THENSR=0:GOTO7850
7840 SR=T1/T
7850 GOSUB310:L=11:GOSUB7900:L$=L$+SR$:PRINTL$
7860 RETURN
7900 IFLEN(SR$)<L THENSR$=" "+SR$:GOTO7900
7910 RETURN
8000 N$="Lijsten":BL=0:C=1:BT=INT(N/17)
8010 IF17*BT<>N THENBT=BT+1
8020 GOSUB8600:A=C:IFN=0 THEN8800
8030 D=C+16:IFD>N THEND=N
8040 FORI=C TOD
8050 L$=" "+S$(I):PRINTL$
8060 NEXTI:GOSUB3050:C=I
8070 GOSUB3150
8080 IF(IN$="S") OR(IN$="s") THENRETURN
8090 IF(IN$="T") OR(IN$="t") THEN8200
8100 IF(IN$="V") OR(IN$="v") THEN8300
8110 GOTO8070
8200 REM VORIG BLAD
8210 C=A-17
8220 IFC<0 THENC=1:BL=0:GOTO8020
8230 BL=BL-2:GOTO8020
8300 REM VOLGEND BLAD
8310 IFC>N THENC=A:BL=BL-1
8320 GOTO8020
8600 GOSUB100:BL=BL+1:SR=BL:GOSUB300:L$=SR$
8610 SR=BT:GOSUB300:L$="blad:"+L$+" van:"+SR$
8620 IFLEN(L$)<(39-LEN(N$)) THEN8660
8630 L$=N$+L$:PRINTL$:X=39:GOSUB3050
8640 PRINT" schatting resultaat":GOSUB3050
8650 RETURN
8660 L$=" "+L$:GOTO8620
8800 FORK=1 TO3:GOSUB250:NEXTK:HO=6:VE=12
8810 GOSUB110:PRINT"Geen posten in het bestand!"
8820 HO=0:VE=21:GOSUB110:PRINTX$:GOSUB3100
8830 RETURN
9000 N2$="Uitleg":GOSUB2000:PRINT
9010 PRINT"Het spel MULTI-MASTERMIND kan worden"
9020 PRINT"gespeeld:":PRINT
9030 PRINT" - tegen de computer,"
9040 PRINT" - met een tegenstander die (ongezien"
9050 PRINT" voor U) een getal inbrengt.":PRINT
9060 PRINT"In beide gevallen gaat het om het raden"
9070 PRINT"van een getal.":PRINT
9080 GOSUB2610:PRINT:GOSUB2630:GOSUB2650:GOSUB2670
9090 GOSUB3100:GOSUB2000:PRINT
9100 PRINT"Speelt U tegen de computer, dan geeft U"
9110 PRINT"het aantal cijfers op waaruit het getal"
9120 PRINT"mag bestaan (max.10 cijfers).":PRINT
9130 PRINT"De computer genereert dan een getal"
9140 PRINT"bestaande uit dat aantal verschillende"
9150 PRINT"cijfers.":PRINT
9160 PRINT"Speelt U met een tegenstander, dan"
9170 PRINT"vraagt U hem/haar om (ongezien voor U)"
9180 PRINT"een getal in te brengen dat aan de"
9190 PRINT"gestelde eisen voldoet.":PRINT
9200 PRINT"Daarna probeert U het getal te raden.":PRINT
9210 PRINT"Na het inbrengen van een getal steeds"
9220 PRINT"de toets 'RETURN' indrukken!"
9230 GOSUB3100:GOSUB2000:PRINT
9240 PRINT"Het antwoord van de computer is steeds"
9250 PRINT"in de vorm: 'N.R' - totdat U het getal"
9260 PRINT"hebt geraden.":PRINT
9270 PRINT"De betekenis van 'N.R' is:":PRINT
9280 PRINT" N = aantal cijfers dat in het getal"
9290 PRINT" voorkomt en op de juiste plaats"
9300 PRINT" staat."
9310 PRINT" R = aantal cijfers dat in het getal"
9320 PRINT" voorkomt en NIET op de juiste"
9330 PRINT" plaats staat.":PRINT
9340 PRINT"De cijfers 'N' zijn niet begrepen in de"
9350 PRINT"cijfers 'R' en andersom."
9360 GOSUB3100:GOSUB2000:PRINT
9370 PRINT"Het scherm van de computer fungeert ook"
9380 PRINT"als kladblok."
9390 PRINT"Max. 10 van de laatste schattingen"
9400 PRINT"met de antwoorden verschijnen steeds op"
9410 PRINT"het scherm.":PRINT
9420 PRINT"En komt U er helemaal niet meer uit,"
9430 PRINT"dan is er nog de HELP-toets.":PRINT
9440 PRINT"Met een '?' als eerste INPUT-karakter"
9450 PRINT"krijgt U het gehele bestand van"
9460 PRINT"schattingen en antwoorden.":PRINT
9470 PRINT"De grootte van dat bestand kan door U"
9480 PRINT"worden aangepast aan de grootte van uw"
9490 PRINT"computer. (DATA-regel 25000: ";NR;")"
9500 GOSUB3100:GOSUB2000:PRINT
9510 PRINT"Met een aantal computers in een kring"
9520 PRINT"maakt U er een gezelschapsspel van.":PRINT
9530 PRINT"U bespreekt vooraf uit hoeveel cijfers"
9540 PRINT"het getal moet bestaan.":PRINT
9550 PRINT"Elk van de spelers brengt dan een getal"
9560 PRINT"in in een andere dan zijn eigen"
9570 PRINT"computer en drukt de RETURN-toets in."
9580 PRINT"Iedere speler probeert dan het getal in"
9590 PRINT"zijn eigen computer te vinden.":PRINT
9600 PRINT"Tussendoor kan een spel tegen de"
9610 PRINT"computer worden gespeeld.":PRINT
9620 PRINT"Na afloop krijgt U de eind-uitslag naar"
9630 PRINT"iedere spel-categorie."
9640 GOSUB3100:GOTO4000
10000 GOSUB2100:FORK=1 TO3:GOSUB250:NEXTK
10010 N$="Tot de volgende keer!"
10020 VE=12:GOSUB3000:END
25000 DATA50
25010 DATA100
25020 REM RESP AANTAL POSTEN PER SPEL
25030 REM AANTAL SPELLEN
30000 REM
30010 REM HOBBYSCOOP-BASICODE2
30020 REM * *
30030 REM * MULTI-MASTERMIND *
30040 REM *
30050 REM P INGEZONDEN DOOR
30060 REM O 1
30070 REM S B.P.M.RINTJEMA 2
30080 REM T TUINSTRAAT 13 0
30090 REM B 5802 AD VENRAY 0
30100 REM U
30110 REM S EIGEN ONTWERP *
30120 REM FEBR.1986 *
30130 REM * APPLE IIE *
30140 REM * *
30150 REM **** HILVERSUM *****
30160 REM
30170 REM COPYRIGHT (C) NOS - HILVERSUM