Zeichensatz UTF-8+Z1013()+CTRL()-ohne Umlaute(äöüß)
18 GOSUB 160
20 DIM B(27),D(4),DA$(3),DI$(6,3),US(4),P(24),PR(6),M$(5)
24 BK$=STRING$(10," "):M$(1)="WERFE DURCH "
26 M$(2)="ZIEHE VON ":M$(3)="ZIEHE VON "
28 M$(5)="ZIEHE VON ":M$(4)="KANN NICHT SETZEN"
30 M$(0)="RAUS VON ":FR$=" NACH "
34 AL$="XWVUTSRQPONMLKJIHGFEDCBA"
36 FOR I=1 TO 12:READ P(I):NEXT I
38 DATA.31,.33,.39,.42,.42,.47,.17,.17,.14,.08,.06,.08
40 FOR I=0 TO 6:READ PR(I):NEXT
42 DATA 0,.03,.11,.25,.44,.69,1
46 FOR I=1 TO 6:FOR J=1 TO 3:READ DI$(I,J):NEXT J:NEXT I
48 DATA "","","","","","","","",""
50 DATA "","","","","","","","",""
90 GOTO 1000
96 REM UNTERPROGRAMME ===============UP
100 RETURN
126 GOSUB 130:GOTO 124
129 REM WIE BITTE ? -----------------UP
130 PRINT INK 2;AT(20,27);"WIE BITTE ?":RETURN
149 REM J/N ABFRAGE -----------------UP
150 PRINT INK 4;AT(22,(34-LEN(KY$)));KY$," ? J"
153 GOSUB 170:PRINT INK 2;AT(22,37);CHR$(T)
154 IF T=74 OR T=13 THEN T=1:PRINT AT(20,27);STRING$(11," "):RETURN
156 IF T=78 THEN T=0:PRINT AT(20,27);STRING$(11," "):RETURN
158 GOSUB 130:PAUSE 10:GOTO 150
159 REM STANDART-WINDOW -------------UP
160 WINDOW:CLS:PRINT AT(0,0);" ":RETURN
169 REM TASTENABFRAGE ---------------UP
170 T$=INKEY$:IF T$<>CHR$(13)THEN 170:ELSE T=13
172 RETURN
200 L$=" ":M$=" ":R$="":LL$=STRING$(14," ")
202 PRINT AT(2,0);"ABCDEF*GHIJKL":X$=" "
204 FOR I=3 TO 10:PRINT AT(I,0);L$,X$,X$,X$,M$,X$,X$,X$,R$:NEXT I
206 FOR I=11 TO 12:PRINT AT(I,0);"",LL$,"",LL$,"":NEXT
208 X$=" ":FOR I=13 TO 20:PRINT AT(I,0);L$,X$,X$,X$,M$,X$,X$,X$,R$:NEXT I
210 PRINT AT(21,0);"XWVUTSRQPONM":RETURN
212 PRINT RIGHT$(" "+STR$(13-I),2)TAB(21)MID$(STR$(I+12),2):RETURN
214 FOR I=0 TO 25:B(I)=0:NEXT I:B(26)=-15:B(27)=15
216 B(1)=2:B(6)=-5:B(8)=-3:B(12)=5
218 B(13)=-5:B(17)=3:B(19)=5:B(24)=-2
220 FOR I=1 TO 24:N=(B(I)):TM=I:FM=27+(N<0)
222 B(I)=0:IF N<>0 THEN FOR J=1 TO ABS(N):GOSUB 312:NEXT J
223 NEXT I
224 WINDOW 22,31,7,31:CLS:RETURN
228 FOR L=27 TO 30:PRINT AT(L,20);BK$:NEXT L
230 RETURN
232 PRINT AT(28,7);MID$(" IHR MEIN ",5+4*NP,8):PRINT AT(30,7);" WURF "
233 PRINT AT(24,7);" "
234 FOR K=23 TO 31:PRINT AT(K,0);" ":NEXT K:LX=23:FOR J=1 TO 2
235 PRINT AT(LX,2);"":FOR K=1 TO 3:PRINT AT(LX+K,2);DI$(D(J),K):NEXT K:LX=27
236 NEXT J:RETURN
238 PP=0:J6=24:IF K<13 THEN J6=K+12
240 FOR I=K TO J6:IF B(I)<0 THEN PP=PP+P(I-K)
242 NEXT I:IF K>14 THEN PP=PP+P(25-K)*2
244 RETURN
246 MS=3:CS=0
248 Q4=8*PR(BH)*(1+PR(BH))
250 Q5=8*PR(BC)*(1+PR(BC))
252 K=P5:GOSUB 238:CZ=PP*(P5+Q4)*A
254 K=P5+RL:GOSUB 238:PZ=PP
256 CW=PZ*(P5+RL+Q4)*A
258 IF B(P5)=2 THEN CS=CS-CZ
260 IF B(P5)=1 AND B(K)>0 THEN CS=CS+CZ:MS=5
262 IF B(K)=-1 THEN CS=CS+25-K+Q5:MS=1:IF K>18 THEN CS=CS-4
264 IF B(K)<>1 THEN 270
266 CS=CS+CW:IF B(P5)>2 THEN MS=2
268 GOTO 276
270 SM=0:J=20:NN=K+R1:IF NN<20 THEN J=NN
272 FOR I=K TO J:IF B(I)=-1 THEN SM=SM+P(I-K)*(25-I)
274 NEXT I:CS=CS-CW+(1-PZ)*SM
276 RETURN
278 BS=-999:BM=4:FM=0:TM=0:TR=TR+1
280 FOR L=24 TO 1 STEP-1:IF B(L)<1 THEN NEXT L:RETURN
282 RL=D(Y):R=L+RL:IF R>24 THEN NEXT L:RETURN
284 IF R<F AND B(R)<>-1 THEN NEXT L:RETURN
286 IF B(R)<-1 THEN NEXT L:RETURN
288 IF G<>1 THEN 296
290 Q=0:L1=L+D(1):L2=L+D(2):IF B(L1)>-2 THEN Q=1
292 IF B(L2)>-2 THEN Q=2
294 IF Q=0 THEN NEXT L:RETURN
296 P5=L:GOSUB 246
298 IF G<>1 THEN 306
300 MS=3:IF B(L1)=-1 THEN Q=1:CS=CS+25-L1:MS=1
302 IF B(L2)=-1 THEN Q=2:CS=CS+25-L2:MS=1
304 K=Q
306 IF CS<BS THEN NEXT L:RETURN
308 BS=CS:FM=L:TM=K:BM=MS
310 NEXT L:RETURN
312 PT=FM:GOSUB 328:P=SGN(B(FM)):GOSUB 328:B(FM)=B(FM)-P
314 IF FM=25 OR FM=0 THEN PRINT AT(Z8,S8);"":GOTO 318
315 D$="":IF(1 AND PT)=1 OR ABS(B(PT))>8 THEN D$=" "
316 IF FM<26 THEN PRINT AT(Z8,S8);D$
318 IF B(TM)<>-P THEN 322
320 PT=-25*(P>0):B(PT)=B(PT)-P:GOSUB 328:P=-P:GOSUB 500:P=-P:B(TM)=0
322 B(TM)=B(TM)+P:PT=TM:IF TM<26 THEN GOSUB 328:GOSUB 500
324 S8=MV+2:MV=MV+1
326 RETURN
328 IF PT>25 THEN RETURN
330 IF PT=0 OR PT=25 THEN 340
332 VT=ABS(B(PT)):IF PT<13 THEN VT=19-VT
334 TB=ABS(12.5-PT)*2+1:IF TB>12 THEN TB=TB+4
336 TB=30-TB
338 GOTO 344
340 VT=-B(PT):IF VT<0 THEN VT=19+VT
342 TB=15
344 Z8=VT+2:S8=TB:RETURN
346 FOR J=1 TO 50:Z$=INKEY$:IF Z$<>""THEN 354
348 NEXT J:PRINT AT(24,S8);" "
350 FOR J=1 TO 50:Z$=INKEY$:IF Z$<>""THEN 354
352 NEXT J:PRINT AT(24,S8);" ":GOTO 346
354 Z=ASC(Z$):ZL=LEN(IN$):IF Z<32 THEN 362
356 IF Z>90 THEN 346
358 IF ZL>30 THEN 346
360 IN$=IN$+Z$:PRINT AT(24,18);IN$:S8=S8+1
362 IF Z=13 THEN PRINT AT(24,S8);" ":RETURN
364 IF Z=8 AND ZL>0 THEN IN$=LEFT$(IN$,ZL-1):PRINT AT(24,S8);" ":S8=S8-1:GOTO 348
366 IF Z=2 THEN PRINT AT(24,18);STRING$(ZL+1," "):IN$="":S8=18
368 GOTO 346
500 IF 2+P=1 THEN PRINT AT(Z8,S8);"":BEEP:RETURN
502 IF 2+P=2 THEN PRINT AT(Z8,S8);"":RETURN
504 IF 2+P=3 THEN PRINT AT(Z8,S8);"":BEEP:RETURN
999 REM HAUPTPROGRAMM ===============HP
1000 CM=24:F=6:S=0:HM=24:HB=0:CB=0:XC=0:XH=0:TT=.5
1001 A=TT:IF RND(1)<.5 THEN F=1
1002 GOSUB 200:GOSUB 214
1004 D(1)=INT(RND(1)*6+1):D(2)=INT(RND(1)*6+1):IF D(1)=D(2)THEN 1004
1006 NP=1:GOSUB 234
1008 IF D(2)>D(1)THEN NP=-1:PRINT AT(24,7);"SIE BEGINNEN"
1010 IF D(2)<D(1)THEN NP=1:PRINT AT(24,7);"ICH BEGINNE"
1014 PAUSE 50:TU=2:GOTO 1022
1016 TU=2:D(1)=INT(RND(1)*6+1):D(2)=INT(RND(1)*6+1):D(3)=D(1)+D(2)
1018 IF D(1)=D(2)THEN D(3)=D(1):D(4)=D(1):TU=4
1022 GOSUB 232:GOSUB 228
1024 MV=0:Y=0:FOR I=1 TO TU:Y=Y+D(I):US(I)=0:NEXT I:IF NP=1 THEN 1182
1026 XH=XH+Y:IN$=""
1028 I=1
1030 IN$=""
1032 IF LEN(IN$)>2 THEN IN$=MID$(IN$,2):GOTO 1036
1034 GOSUB 228:PRINT AT(24,10);"ZUG",I,":":S8=18:SS$=INKEY$:GOSUB 346
1035 IF IN$=""THEN 1138
1036 IF LEN(IN$)>1 THEN 1046
1038 IF IN$>="A"AND IN$<="F"THEN IN$="*"+IN$
1040 IF IN$>="S"AND IN$<="X"THEN IN$=IN$+"-"
1042 IF LEN(IN$)>1 THEN 1046
1044 PRINT AT(23,8);"FALSCHER ZUG":GOTO 1181
1046 IF LEN(IN$)>3 THEN 1044
1048 IF MID$(IN$,2,1)=","THEN IN$=LEFT$(IN$,1)+MID$(IN$,3):GOTO 1048
1050 F$=LEFT$(IN$,1)
1052 IF F$>="A"AND F$<="X"THEN FM=89-ASC(F$):GOTO 1056
1054 FM=25:IF F$<>"*"AND F$<>"-"THEN 1044
1056 T$=MID$(IN$,2,1)
1058 IF T$="*"OR T$="-"THEN TM=0:GOTO 1064
1060 IF T$<"A"OR T$>"X"THEN 1044
1062 TM=89-ASC(T$):N=0:M=FM-TM:K=1:L=0
1064 IF FM=25 AND B(25)=0 THEN PRINT AT(23,8);"KEIN STEIN AUF BAR":GOTO 1181
1066 IF FM<TM THEN PRINT AT(23,8);"RICHTUNG FALSCH":GOTO 1181
1068 IF B(25)<0 AND FM<>25 THEN PRINT AT(23,8);"STEIN EINWERFEN":GOTO 1181
1070 IF B(FM)>=0 THEN PRINT AT(23,8);"KEIN STEIN AUF ",F$:GOTO 1181
1072 IF TM=0 THEN 1113
1074 L=0:FOR J=1 TO TU:IF US(J)THEN K=K+1:GOTO 1080
1076 L=L+1:N=N+D(J):IF N=M THEN 1082
1078 IF D(J)=M THEN K=J:L=1:GOTO 1082
1080 NEXT J:PRINT AT(23,8);M,"GEHT NICHT":GOTO 1181
1082 IF B(TM)>1 THEN PRINT AT(23,8);"FELD ",T$," BESETZT":GOTO 1181
1084 IF L=1 THEN GOSUB 312:US(K)=1:GOTO 1178
1086 IF B(25)<-1 THEN PRINT AT(23,8);"STEIN E EINWERFEN":GOTO 1181
1088 IF TU=4 THEN 1100
1090 IF B(FM-D(1))<=1 THEN M=1:GOTO 1096
1092 IF B(FM-D(2))<=1 THEN M=2:GOTO 1096
1094 PRINT AT(23,8);"FELD IST BESETZT":GOTO 1181
1096 N=TM:TM=FM-D(M):GOSUB 312:FM=TM:TM=N:GOSUB 312:I=I+1
1098 GOTO 1178
1100 FOR N=1 TO L
1102 IF B(FM-D(1)*N)>1 THEN 1094
1104 NEXT N
1106 FOR N=K TO J
1108 TM=FM-D(N):US(N)=1:GOSUB 312
1110 I=I+1:FM=TM:NEXT N
1112 I=I-1:GOTO 1178
1113 FOR K=7 TO 24:IF B(K)<0 THEN PRINT AT(23,8);"RAUS IST NOCH VERBOTEN":GOTO 1181
1114 NEXT K
1116 TM=26:FOR J=1 TO TU:IF US(J)=0 AND FM=D(J)THEN BEEP:GOSUB 312:US(J)=1:GOTO 1178
1118 NEXT J
1120 IF FM=6 THEN 1128
1122 FOR J=6 TO FM+1 STEP-1
1124 IF B(J)<0 THEN PRINT AT(23,8);"RAUS VON ",F$," GEHT NICHT":GOTO 1181
1126 NEXT J
1128 K=0:D(K)=0:FOR J=1 TO TU:IF US(J)=0 AND D(J)>FM AND D(J)>D(K)THEN K=J
1130 NEXT J
1132 IF K=0 THEN PRINT AT(23,8);FM," FELDER GEHT NICHT":GOTO 1181
1134 PRINT AT(23,8);"ICH VERWENDE WURF",D(K):US(K)=1:PAUSE 10
1136 BEEP:GOSUB 312:GOTO 1178
1138 IF B(25)>=0 THEN 1148
1140 FOR J=1 TO 6
1142 IF J=D(TU)AND US(TU)=0 AND B(25-J)<2 THEN 1176
1144 IF J=D(TU-1)AND US(TU-1)=0 AND B(25-J)<2 THEN 1176
1146 NEXT J:GOTO 1180
1148 FOR J=24 TO 2 STEP-1
1150 IF B(J)>=0 THEN 1156
1152 IF J-D(TU-1)>0 THEN IF US(TU-1)=0 AND B(J-D(TU-1))<2 THEN 1176
1154 IF J-D(TU)>0 THEN IF US(TU)=0 AND B(J-D(TU))<2 THEN 1176
1156 NEXT J
1158 FOR J=24 TO 7 STEP-1:IF B(J)<0 THEN 1180
1160 NEXT J
1162 IF US(TU)=0 AND B(D(TU))<0 THEN 1176
1164 IF US(TU-1)=0 AND B(D(TU-1))<0 THEN 1176
1166 IF US(TU)THEN D=D(TU-1):GOTO 1170
1168 D=D(TU):IF US(TU-1)=0 AND D<D(TU-1)THEN D=D(TU-1)
1170 REM
1172 FOR J=1 TO D-1:IF B(J)<0 THEN 1176
1174 NEXT J:GOTO 1180
1176 PRINT AT(23,8);"ZUG IST MOEGLICH":GOTO 1181
1178 I=I+1:IF I<=TU THEN 1030
1180 NP=1:GOTO 1346
1181 FOR L=1 TO 16:BEEP:PAUSE 2:NEXT L:GOSUB 228:GOTO 1030
1182 WINDOW 22,27,7,31:CLS:MO=0:B9=0
1184 XC=XC+Y
1186 K=0
1188 K=K+1:IF B(0)=0 OR K>TU THEN 1200
1190 IF B(D(K))<>-1 THEN 1188
1192 US(K)=1:MO=MO+1
1194 FM=0:TM=D(K):GOSUB 312
1196 PRINT:PRINT "VON BAR UND WERFE DURCH ";MID$(AL$,TM,1);
1198 GOTO 1188
1200 K=0
1202 K=K+1:IF B(0)=0 OR K>TU THEN 1214
1204 IF B(D(K))<0 OR US(K)>0 THEN 1202
1206 US(K)=1:MO=MO+1
1208 FM=0:TM=D(K):GOSUB 312
1210 PRINT:PRINT "EINWURF AUF ",MID$(AL$,TM,1);
1212 GOTO 1202
1214 IF B(0)=0 AND MO<TU THEN 1220
1216 IF MO<TU THEN PRINT:PRINT "KANN NICHT EINWERFEN";
1218 GOTO 1336
1220 IF CM>6 THEN 1258
1222 FOR J=1 TO TU:L=25-D(J):IF B(L)<1 THEN 1226
1224 FM=L:TM=27:GOSUB 312:BEEP:PRINT:PRINT M$(0);MID$(AL$,L,1);:MO=MO+1:GOTO 125
1226 K=6
1228 Y=25-K:IF B(L-K)<1 OR B(Y)<-1 THEN 1236
1230 IF B(Y)=-1 THEN B(Y)=0
1232 FM=L-K:TM=Y:GOSUB 312
1234 PRINT:PRINT M$(3);MID$(AL$,FM,1);FR$;MID$(AL$,Y,1);:GOTO 1250
1236 IF K>1 THEN K=K-1:GOTO 1228
1238 K=1
1240 IF L+K>24 THEN 1248
1242 IF B(L+K)<1 THEN 1248
1244 MO=MO+1:FM=L+K:TM=27:GOSUB 312
1246 BEEP:PRINT:PRINT M$(0);MID$(AL$,FM,1);" MIT WURF";D(J);:GOTO 1250
1248 IF K<6 THEN K=K+1:GOTO 1240
1250 IF B(27)=15 THEN 1346
1252 IF TU=MO THEN 1336
1254 NEXT J
1256 GOTO 1336
1258 IF TU=MO THEN 1336
1260 IF TU-MO<2 THEN 1292
1262 IF HB=0 THEN 1292
1264 J=I
1266 IF B(J)<>-1 THEN 1290
1268 J1=J-D(1):J2=J-D(2):IF J1<1 OR J2<1 THEN 1290
1270 IF D(1)=D(2)AND B(J1)=1 THEN 1290
1272 IF B(J1)<1 OR B(J2)<1 THEN 1290
1274 IF TU=4 THEN 1280
1276 IF J1>18 AND B(J1)=2 THEN 1290
1278 IF J2>18 AND B(J2)=2 THEN 1290
1280 MV=MV-1:TM=J:FM=J1:GOSUB 312:FM=J2:GOSUB 312
1282 PRINT:PRINT M$(1);MID$(AL$,J1,1);" UND ";
1284 PRINT MID$(AL$,J2,1);" NACH ";MID$(AL$,J,1);:MO=MO+2:HB=HB-1
1286 IF TU=4 THEN US(3)=1:US(4)=1
1288 GOTO 1258
1290 IF J<24 THEN J=J+1:GOTO 1266
1292 TR=0:Y=1
1294 IF US(Y)=1 THEN 1332
1296 GOSUB 278
1298 IF Y<>1 OR MO<>0 OR TU=4 OR BM=4 THEN 1310
1300 S1=BS:F1=FM:M1=BM:Y=2:GOSUB 278
1302 S2=BS:F2=FM:M2=BM:Y=3:G=1:GOSUB 278
1304 G=0:IF BS>S1+S2 THEN Y=TM:TM=FM+D(Y):GOTO 1310
1306 IF S2>S1 THEN FM=F2:Y=2:TM=F2+D(Y):BM=M2:GOTO 1310
1308 FM=F1:Y=1:TM=F1+D(Y):BM=M1
1310 IF BM<>4 THEN 1322
1312 IF F<>1 THEN F=1:GOTO 1296
1314 IF TR<TU+4 THEN 1332
1316 FOR J=1 TO 18:IF B(J)>0 OR B9 THEN PRINT:PRINT M$(4);:GOTO 1336
1318 NEXT J:B9=1:GOTO 1222
1320 GOTO 1332
1322 IF BM=1 THEN HB=HB-1
1324 MO=MO+1:US(Y)=1:IF HM<24-CM THEN BM=3:A=0
1326 GOSUB 312
1328 PRINT:PRINT M$(BM);MID$(AL$,FM,1);FR$;MID$(AL$,TM,1);
1330 IF MO=TU THEN 1336
1332 Y=Y+1:IF Y>TU THEN Y=1
1334 GOTO 1294
1336 X$=INKEY$:NP=-1
1337 FOR I=1 TO 25:X$=INKEY$:IF X$=CHR$(13)THEN 1342
1338 NEXT I:PRINT AT(31,7);"BITTE WUERFELN"
1339 FOR I=1 TO 25:X$=INKEY$:IF X$=CHR$(13)THEN 1342
1340 NEXT I:PRINT AT(31,7);" "
1341 GOTO 1337
1342 GOSUB 224
1344 GOTO 1346
1346 IF B(26)=-15 THEN X$="GEWONNEN MIT":X=CP:GOTO 1380
1348 IF B(27)=15 THEN X$="VERLOREN MIT":X=HP:GOTO 1380
1350 HM=0:CM=0:JM=0:HP=0:CP=0:HB=0:CB=0:BC=0:BH=0
1352 FOR I=0 TO 25
1354 IF B(I)<0 THEN HP=HP-B(I)*I:HM=I
1356 IF B(I)>0 THEN CP=CP+B(I)*(25-I):JM=25-I
1358 IF JM>CM THEN CM=JM
1360 IF B(I)=-1 THEN HB=HB+1
1362 IF B(I)=1 THEN CB=CB+1
1364 IF I<7 AND B(I)<-1 THEN BH=BH+1
1366 IF I>18 AND B(I)>1 THEN BC=BC+1
1368 NEXT I
1370 XX=CP:IF HP<XX THEN XX=HP
1372 Y=(CP-HP)/XX:IF Y>.2 THEN S=1:F=6:A=.1
1374 IF Y<.1 THEN S=0:F=1:A=TT
1376 IF S=1 AND HM<6 THEN F=HM
1378 GOTO 1016
1380 GOSUB 228:PRINT AT(21,2);X$,X,"AUGEN DIFFERENZ"
1382 PRINT AT(22,2);"MEINE AUGEN =",XC," IHRE AUGEN =",XH
1384 PRINT AT(23,2);"NOCH EIN SPIEL? J"
1386 X$=INKEY$
1388 X$=INKEY$:IF X$=""THEN 1388
1390 IF X$="J"OR X$=CHR$(13)THEN 1000
1392 IF X$="N"THEN 9000
1394 GOTO 1388
8999 REM ENDE =====================ENDE
9000 GOSUB 160:PRINT INK 3;AT(8,2);"AUF WIEDERSEHEN!":PAUSE 50:T$=INKEY$:CLS