yahtzee_sss.tap
yahtzee_sss.z80
Zeichensatz UTF-8+Z1013()+CTRL()-ohne Umlaute(äöüß)

 6900 OUT 136,8:RESTORE 6900:GOTO 6908
 6902 PRINT AT(23,31);">ENTER<"
 6904 B$=INKEY$:IF B$=CHR$(13)THEN RETURN
 6906 GOTO 6904
 6908 WINDOW:CLS
 6910 FOR I=1 TO 12:READ A$
 6912 PRINT TAB((40-LEN(A$))/2);A$:NEXT I
 6914 DATA "Y A H T Z E E","","",""
 6916 DATA "DAS GESELLSCHAFTSSPIEL FUER DIE","","","GANZE FAMILIE","","","",""
 6918 INPUT "WUENSCHEN SIE SPIELREGELN  J/(N)  ";B$:IF B$="N"OR B$="n"THEN 7004
 6920 CLS:PRINT AT(10,12);"SPIELREGELN":PRINT AT(11,12);"" 
 6922 PRINT AT(0,0);" ":GOSUB 6902:CLS
 6924 PRINT "Jedes Spiel besteht aus 13 Runden. Jeder"
 6926 PRINT "Spieler kann in einer Runde max 3mal ":PRINT
 6928 PRINT "wuerfeln. Jede der Wurfmoeglichkeit":PRINT
 6930 PRINT "wird nur einmal verwendet.":PRINT
 6932 PRINT "Die Wurfmoeglichkeiten sind in Teil 1":PRINT
 6934 PRINT "und Teil 2 aufgeteilt, wobei jede nur":PRINT
 6936 PRINT "einmal verwendet werden darf. Im":PRINT
 6938 PRINT "Endergebnis des Spielers zaehlen ":PRINT
 6940 PRINT "Punkte des Teiles 2 nur, wenn alle":PRINT
 6942 PRINT "Moeglichkeiten vom Teil 1 mit Punkten":PRINT
 6944 PRINT "belegt wurden.":PRINT AT(21,0);" ":GOSUB 6902:CLS
 6946 PRINT "Wurfmoeglichkeiten"
 6948 PRINT "Teil 1"TAB(23)"Punkte":PRINT STRING$(38,"")
 6950 PRINT "  EINER"TAB(19)"Nur 1er zaehlen" 
 6952 PRINT "  ZWEIER"TAB(19)"Nur 2er zaehlen"
 6954 PRINT "  DREIER"TAB(19)"Nur 3er zaehlen" 
 6956 PRINT "  VIERER"TAB(19)"Nur 4er zaehlen"
 6958 PRINT "  FUENFER"TAB(19)"Nur 5er zaehlen"
 6960 PRINT "  SECHSER"TAB(19)"Nur 6er zaehlen"
 6962 PRINT:PRINT "Zusatzpunkte : Bei Summe >=63 dann"
 6964 PRINT TAB(15)"35 Zusatzpunkte":PRINT AT(12,0);" ":GOSUB 6902:CLS          
 6966 PRINT "Wurfmoeglichkeiten":PRINT "Teil 2"TAB(23)"Punkte"
 6968 PRINT STRING$(38,""):PRINT
 6970 PRINT " DREIERPASCH"TAB(18)"3x gleiche Augenzahl":PRINT TAB(18)"zaehlt"  
 6972 PRINT " VIERERPASCH"TAB(18)"4x gleiche Augenzahl":PRINT TAB(18)"zaehlt"  
 6974 PRINT " FULL HOUSE"TAB(18)"3und2x gleiche Augen-"  
 6976 PRINT TAB(18)"zahl"SPC(6)"= 25 Punkte" 
 6978 PRINT " KLEINE STRASSE"TAB(18)"Von 1 - 5 = 30 Punkte"  
 6980 PRINT " GROSSE STRASSE"TAB(18)"Von 2 - 6 = 40 Punkte"  
 6982 PRINT " YAHTZEE"TAB(18)"5x gleiche Augen-"
 6984 PRINT TAB(18)"zahl"SPC(6)"= 50 Punkte"
 6986 PRINT " CHANCE"TAB(18)"alle Augen zaehlen":PRINT 
 6988 PRINT "Zusatzpunkte : Bei Summe >=63 dann"
 6990 PRINT TAB(15)"100 Zusatzpunkte":PRINT AT(18,0);" ":GOSUB 6902:CLS
 6992 PRINT "HINWEIS : Ist gewuerfelter Wert zu"
 6994 PRINT TAB(10)"niedrig, kann man z.B. YAHTZEE"; 
 6996 PRINT SPC(10)"(schwer zu wuerfeln)":PRINT TAB(10)"mit '0' belegen.":PRINT
 6998 PRINT:PRINT:PRINT "Sieger ist derjenige Spieler mit der":PRINT
 7000 PRINT "hoechsten Punktzahl."
 7002 PRINT AT(10,0);" ":PRINT AT(17,8);"UND NUN VIEL SPASS !!!":GOSUB 6902
 7004 CLS:PRINT "Wieviel Spieler wollen":PRINT:INPUT "mitspielen ? ";M:PRINT 
 7006:IF M<1 THEN 7004 ELSE PRINT TAB(120)"Wieviel Spiele wollen"
 7008 PRINT:INPUT "Sie spielen ? ";R:IF R<1 THEN 7006 ELSE CLS
 7010 DIM MN$(M):DIM S$(16):DIM W(M,13):DIM S(13):DIM UH(M):DIM SG(M):DIM OH(M)
 7012 S$(1)=" EINER":S$(2)=" ZWEIER"
 7014 S$(3)=" DREIER":S$(4)=" VIERER"
 7016 S$(5)=" FUENFER":S$(6)=" SECHSER"
 7018 S$(7)=" DREIERPASCH":S$(8)=" VIERERPASCH"
 7020 S$(9)=" FULL HOUSE":S$(10)=" KLEINE STRASSE"
 7022 S$(11)=" GROSSE STRASSE":S$(12)=" YAHTZEE"
 7024 S$(13)=" CHANCE":S$(14)=" Teil 1:":S$(15)=" Teil 2:"
 7026 S$(16)=" Summe:"
 7028 PRINT TAB(120)"DARF ICH UM IHRE NAMEN BITTEN,":PRINT 
 7030 FOR Z=1 TO M
 7032 PRINT:PRINT "SPIELER";Z;":";:INPUT "";MN$(Z)
 7034 NEXT Z
 7036 CLS:PRINT AT(10,10);"DAS WUERFELN BEGINNT !":PRINT AT(0,0);" ":PAUSE 16
 7038 CLS:WINDOW 0,5,0,39
 7040 PRINT:PRINT "  ";:FOR I=1 TO 5:PRINT "   ";:NEXT I 
 7042 FOR I=1 TO 30:PRINT ""SPC(3);:NEXT I
 7044 FOR I=1 TO 5:PRINT ""SPC(3);:NEXT I:PRINT AT(5,2);" ":IF Q1=1 THEN 7048
 7046 FOR E=1 TO R
 7048 FOR Z=1 TO M:FOR C=1 TO 13:W(Z,C)=-1
 7050 NEXT C:UH(Z)=0:OH(Z)=0:NEXT Z
 7052 FOR C=1 TO 13
 7054 FOR Z=1 TO M
 7056 Y=-5077:P=32:FOR I=1 TO 5
 7058 POKE Y,P:H=Y+2:POKE H,P:H=Y+40:POKE H,P:H=Y+41:POKE H,P:H=Y+42
 7060 POKE H,P:H=Y+80:POKE H,P:H=Y+82:POKE H,P:Y=Y+8:NEXT I
 7062 WINDOW 5,23,0,39:CLS:Y=-5077:P=42:PRINT AT(5,0);" "
 7064 PRINT " Spiel"E;"Runde";C;"FUER ";MN$(Z)
 7066 PRINT S$(14);OH(Z)TAB(13)S$(15);UX(Z)TAB(27)S$(16);SG(Z)
 7068 IF T=2 THEN WINDOW 8,23,0,39:GOTO 7096
 7070 PRINT AT(14,2);"Teil 1 :":PRINT AT(14,17);"Teil 2 :"
 7072 WINDOW 16,23,0,15:CLS
 7074 FOR H=1 TO 6
 7076 IF W(Z,H)<>-1 THEN 7080
 7078 PRINT TAB(1)S$(H)
 7080 NEXT H
 7082 WINDOW 16,23,16,39:CLS
 7084 FOR H=7 TO 13
 7086 IF W(Z,H)<>-1 THEN 7090
 7088 PRINT S$(H)
 7090 NEXT H
 7092 FOR I=16 TO 23
 7094 PRINT AT(I,16);" ":NEXT I
 7096 FOR I=1 TO 5
 7098 IF O(I)>0 THEN X(I)=O(I):GOTO 7106
 7100 X(I)=INT(RND(1)*10)
 7102 IF X(I)<1 OR X(I)>6 THEN 7100
 7104 CI=INT(RND(1)*10):IF CI<1 OR CI>26 THEN 7104 ELSE PAUSE CI 
 7106 U=0:IF X(I)=1 THEN 7108 ELSE 7110
 7108 H=Y+41:POKE H,P:GOTO 7132
 7110 IF X(I)=2 THEN 7112 ELSE 7114
 7112 H=Y+2:POKE H,P:H=Y+80:POKE H,P:GOTO 7132
 7114 IF X(I)=3 THEN 7116 ELSE 7118
 7116 H=Y+2:POKE H,P:H=Y+41:POKE H,P:H=Y+80:POKE H,P:GOTO 7132
 7118 IF X(I)=4 THEN 7120 ELSE 7122
 7120 H=Y:POKE H,P:H=Y+2:POKE H,P:H=Y+80:POKE H,P:H=Y+82:POKE H,P:GOTO 7132
 7122 IF X(I)=5 THEN 7124 ELSE 7128
 7124 H=Y:POKE H,P:H=Y+2:POKE H,P:H=Y+41:POKE H,P:H=Y+80:POKE H,P:H=Y+82:POKE H,P
 7126 GOTO 7132
 7128 H=Y:POKE H,P:H=Y+2:POKE H,P:H=Y+40:POKE H,P
 7130 H=Y+42:POKE H,P:H=Y+80:POKE H,P:H=Y+82:POKE H,P
 7132 Y=Y+8:NEXT I:IF T=2 THEN 7186 ELSE T=T+1
 7134 FOR K=1 TO 5
 7136 IF O(K)=0 THEN D(K)=K:GOTO 7140
 7138 D(K)=0
 7140 NEXT K
 7142 S=1:WINDOW 8,13,2,39:CLS
 7144 FOR I=1 TO 5
 7146 IF O(I)=0 THEN PRINT TAB(S)D(I);
 7148 S=S+8:F$="":NEXT I:PRINT AT(9,33);"":PRINT AT(10,33);"":PRINT
 7150 PRINT AT(10,39);"":PRINT AT(11,33);""
 7152 PRINT AT(12,2);"Alle : >6<":PRINT AT(12,15);"Alle doch nochmal : >7<"
 7154 PRINT:PRINT "Welche Wuerfel bleiben stehen?";:INPUT " ";F$
 7156 WINDOW 8,23,0,39:CLS
 7158 FOR K=1 TO 5
 7160 F$(K)=MID$(F$,K,1):NEXT K
 7162 IF VAL(F$(1))<>7 THEN 7166
 7164 FOR G=1 TO 5:O(G)=0:NEXT G
 7166 FOR K=1 TO 5
 7168 I=VAL(F$(K))
 7170 IF I=1 AND O(I)=0 THEN O(I)=X(I)
 7172 IF I=2 AND O(I)=0 THEN O(I)=X(I)
 7174 IF I=3 AND O(I)=0 THEN O(I)=X(I)
 7176 IF I=4 AND O(I)=0 THEN O(I)=X(I)
 7178 IF I=5 AND O(I)=0 THEN O(I)=X(I)
 7180 IF I=6 THEN 7186
 7182 NEXT K
 7184 GOTO 7056
 7186 FOR G=1 TO 5
 7188 O(G)=0:T=0:NEXT G
 7190 FOR H=1 TO 13:S(H)=0:NEXT H:F1=0:F2=0:F3=0:F4=0:F5=0:F6=0:L1=0
 7192 S(13)=X(1)+X(2)+X(3)+X(4)+X(5)
 7194 FOR I=1 TO 5
 7196 IF X(I)=1 THEN S(1)=S(1)+1:F1=1
 7198 IF X(I)=2 THEN S(2)=S(2)+2:F2=2
 7200 IF X(I)=3 THEN S(3)=S(3)+3:F3=3
 7202 IF X(I)=4 THEN S(4)=S(4)+4:F4=4
 7204 IF X(I)=5 THEN S(5)=S(5)+5:F5=5
 7206 IF X(I)=6 THEN S(6)=S(6)+6:F6=6
 7208 NEXT I
 7210 KL=3
 7212 H=0:K=0:HV=0
 7214 FOR J=1 TO 6
 7216 FOR I=1 TO 5
 7218 IF X(I)=J THEN HV=HV+J:K=K+1
 7220 NEXT I
 7222 IF K<>KL THEN HV=0:K=0:GOTO 7232
 7224 IF KL=4 THEN 7228
 7226 S(7)=HV:KL=4:GOTO 7212
 7228 IF K<>KL THEN HV=0:K=0:GOTO 7232
 7230 S(8)=HV:GOTO 7236
 7232 NEXT J
 7234 IF KL=3 THEN KL=4:GOTO 7212
 7236 IF(F1=1 AND F2=2 AND F3=3 AND F4=4 AND F5=5)THEN 7244
 7238 IF(F2=2 AND F3=3 AND F4=4 AND F5=5 AND F6=6)THEN 7242
 7240 GOTO 7246
 7242 S(11)=40:GOTO 7246
 7244 S(10)=30
 7246 IF(S(3)=0 AND S(4)=0 AND S(5)=0 AND S(6)=0)AND(S(1)=2 OR S(2)=4)THEN S(9)=25
 7248 IF(S(2)=0 AND S(4)=0 AND S(5)=0 AND S(6)=0)AND(S(1)=2 OR S(3)=6)THEN S(9)=25
 7250 IF(S(2)=0 AND S(3)=0 AND S(5)=0 AND S(6)=0)AND(S(1)=2 OR S(4)=8)THEN S(9)=25
 7252 IF(S(2)=0 AND S(3)=0 AND S(4)=0 AND S(6)=0)AND(S(1)=2 OR S(5)=10)THEN S(9)=25
 7254 IF(S(2)=0 AND S(3)=0 AND S(4)=0 AND S(5)=0)AND(S(1)=2 OR S(6)=12)THEN S(9)=25
 7256 IF(S(1)=0 AND S(4)=0 AND S(5)=0 AND S(6)=0)AND(S(2)=4 OR S(3)=6)THEN S(9)=25
 7258 IF(S(1)=0 AND S(3)=0 AND S(5)=0 AND S(6)=0)AND(S(2)=4 OR S(4)=8)THEN S(9)=25
 7260 IF(S(1)=0 AND S(3)=0 AND S(4)=0 AND S(6)=0)AND(S(2)=4 OR S(5)=10)THEN S(9)=25
 7262 IF(S(1)=0 AND S(3)=0 AND S(4)=0 AND S(5)=0)AND(S(2)=4 OR S(6)=12)THEN S(9)=25
 7264 IF(S(1)=0 AND S(2)=0 AND S(5)=0 AND S(6)=0)AND(S(3)=6 OR S(4)=8)THEN S(9)=25
 7266 IF(S(1)=0 AND S(2)=0 AND S(4)=0 AND S(6)=0)AND(S(3)=6 OR S(5)=10)THEN S(9)=25
 7268 IF(S(1)=0 AND S(2)=0 AND S(4)=0 AND S(5)=0)AND(S(3)=6 OR S(6)=12)THEN S(9)=25
 7270 IF(S(1)=0 AND S(2)=0 AND S(3)=0 AND S(6)=0)AND(S(4)=8 OR S(5)=10)THEN S(9)=25
 7272 IF(S(1)=0 AND S(2)=0 AND S(3)=0 AND S(5)=0)AND(S(4)=8 OR S(6)=12)THEN S(9)=25
 7274 IF(S(1)=0 AND S(2)=0 AND S(3)=0 AND S(4)=0)AND(S(5)=10 OR S(6)=12)THEN S(9)=25
 7276 IF(S(2)=0 AND S(3)=0 AND S(4)=0 AND S(5)=0 AND S(6)=0)THEN S(12)=50:L1=50 
 7278 IF(S(1)=0 AND S(3)=0 AND S(4)=0 AND S(5)=0 AND S(6)=0)THEN S(12)=50:L1=50
 7280 IF(S(1)=0 AND S(2)=0 AND S(4)=0 AND S(5)=0 AND S(6)=0)THEN S(12)=50:L1=50
 7282 IF(S(1)=0 AND S(2)=0 AND S(3)=0 AND S(5)=0 AND S(6)=0)THEN S(12)=50:L1=50
 7284 IF(S(1)=0 AND S(2)=0 AND S(3)=0 AND S(4)=0 AND S(6)=0)THEN S(12)=50:L1=50
 7286 IF(S(1)=0 AND S(2)=0 AND S(3)=0 AND S(4)=0 AND S(5)=0)THEN S(12)=50:L1=50
 7288 L=0:IF L1=50 THEN S(7)=0:S(8)=0
 7290 IF S(9)=25 THEN S(7)=0
 7292 FOR H=1 TO 13
 7294 IF H=1 THEN PRINT S$(14);
 7296 IF H=7 THEN PRINT:PRINT S$(15);
 7298 IF W(Z,H)<>-1 THEN 7302
 7300 PRINT TAB(8)S$(H)TAB(24)"(";H;")"TAB(30)" :";S(H)
 7302 NEXT H:FOR I=5 TO 23:PRINT AT(I,0);" ":NEXT I
 7304 WINDOW 23,23,0,39:INPUT " KENNZAHL :";H:IF H<0 OR H>13 THEN 7304
 7306 IF W(Z,H)><-1 THEN 7304 ELSE WINDOW 5,23,0,39:PRINT AT(5,0);" "
 7308 FOR L=1 TO 13:IF L=H AND W(Z,L)=-1 THEN W(Z,L)=W(Z,L)+1+S(L):GOTO 7312
 7310 NEXT L
 7312 IF L>6 THEN 7314 ELSE OH(Z)=OH(Z)+W(Z,L):GOTO 7316
 7314 UX(Z)=UX(Z)+W(Z,L)
 7316 IF C<13 THEN 7332
 7318 IF OH(Z)>=63 THEN OH(Z)=OH(Z)+35
 7320 IF UX(Z)>=63 THEN UX(Z)=UX(Z)+100
 7322 FOR L=1 TO 6
 7324 IF W(Z,L)>0 THEN Q=Q+1
 7326 NEXT L
 7328 IF Q=6 THEN UH(Z)=UX(Z)
 7330 SG(Z)=SG(Z)+OH(Z)+UH(Z):Q=0:UX(Z)=0
 7332 NEXT Z:NEXT C:CLS:PRINT " ERGEBNIS NACH";E;" SPIELEN : "
 7334 FOR Z=1 TO M
 7336 PRINT:PRINT " "MN$(Z),S$(14);OH(Z)TAB(53)S$(15);UH(Z)
 7338 PRINT TAB(14)S$(16);SG(Z)
 7340 IF Z<=2 THEN 7344 ELSE 7342
 7342 FOR I=5 TO 23:PRINT AT(I,0);" ":NEXT I:PAUSE 180:CLS
 7344 NEXT Z:PRINT AT(10,0);" ":PAUSE 180:NEXT E 
 7346 WINDOW:CLS:PRINT " ENDERGEBNIS :":PRINT:PRINT
 7348 FOR Z=1 TO M
 7350 PRINT " "MN$(Z)TAB(20)S$(16);SG(Z)
 7352 B=B+1:IF B=9 THEN PAUSE 360:CLS:B=0
 7354 PRINT:NEXT Z
 7356 FOR I=0 TO 23
 7358 PRINT AT(I,0);" ":NEXT I:PAUSE 360
 7360 CLS:PRINT TAB(160)"":INPUT "Moechten Sie noch ein Spiel (J)/N ?";P$
 7362 IF P$="J"OR P$="j"THEN R=R+1:EH=E:FOR E=EH TO R:Q1=1:GOTO 7038
 7364 WINDOW:CLS:PRINT AT(10,10);"Auf Wiedersehen":PRINT AT(0,0);" "
 7366 PAUSE 60:CLS:END