mirror of
https://github.com/DutchMaker/Apple-1-Mini.git
synced 2024-10-31 19:04:44 +00:00
195 lines
4.8 KiB
Plaintext
195 lines
4.8 KiB
Plaintext
HIMEM=8192
|
|
1 REM LARRY NELSON - FROM 1977
|
|
10 DIM D(5),C(14),A$(5)
|
|
20 PRINT "YAHTZEE FOR APPLE 1"
|
|
30 INPUT "INSTRUCTIONS Y/N",A$
|
|
40 IF A$="Y" THEN GOSUB 1000
|
|
50 FOR I=1 TO 13:C(I)=-1:NEXT I
|
|
55 C(14)=0
|
|
60 FOR J=1TO 13
|
|
70 FOR I=1 TO 5
|
|
80 D(I)=RND(6)+1
|
|
85 NEXT I
|
|
90 GOSUB 2000
|
|
100 FOR K=2 TO 1 STEP -1
|
|
110 PRINT K;:PRINT" ROLL";:IF K>1 THEN PRINT"S";
|
|
120 PRINT " LEFT."
|
|
130 INPUT"DISCARD",B
|
|
140 IF B<1 OR B>6 THEN 200
|
|
150 L=1
|
|
160 IF D(L)=B THEN D(L)=0
|
|
165 IF D(L)=0 THEN L=5
|
|
170 L=L+1
|
|
180 IF L<6 THEN 160
|
|
190 GOTO 130
|
|
200 FOR I=1 TO 5
|
|
210 IF D(I)>0 THEN 240
|
|
220 D(I)=RND(6)+1
|
|
240 NEXT I
|
|
250 GOSUB 2000
|
|
255 NEXT K
|
|
260 INPUT "SCORE WHAT CATEGORY",B
|
|
270 IF B<1 THEN 340
|
|
280 IFB>13 THEN 340
|
|
290 IF C(B)#-1 THEN 340
|
|
300 GOSUB 3000
|
|
310 NEXT J
|
|
320 PRINT "CONGRATULATIONS - YOU SCORED ";T+U+G
|
|
330 END
|
|
340 PRINT "YOU CAN'T DO THAT!"
|
|
350 GOTO 260
|
|
1000 REM INSTRUCTIONS
|
|
1010 PRINT "THIS GAME IS PLAYED JUST LIKE THE"
|
|
1020 PRINT "ORIGINAL GAME OF 'YAHTZEE'. THE COMPUTER"
|
|
1030 PRINT "WILL ROLL THE DICE AND KEEP THE SCORE."
|
|
1040 PRINT "YOU MAY DISCARD ANY OR ALL DICE BEFORE"
|
|
1050 PRINT "RE-ROLLING. JUST TYPE THE VALUE OF"
|
|
1060 PRINT "A DIE YOU WANT TO DISCARD."
|
|
1070 PRINT "TYPING A NUMBER BELOW 1 OR ABOVE 6 WILL START THE RE-ROLL."
|
|
1080 INPUT "CONTINUE",A$
|
|
1999 RETURN
|
|
2000 REM DRAW SCORECARD AND DICE
|
|
2010 PRINT"1-ACES";:IF C(1) =-1 THEN 2020
|
|
2015 TAB12:PRINT C(1);
|
|
2020 TAB 20:PRINT "7-3 OF A KIND";:IF C(7)=-1 THEN 2030
|
|
2025 TAB 35:PRINT C(7);
|
|
2030 PRINT:PRINT "2-TWOS";:IF C(2)=-1 THEN 2040
|
|
2035 TAB 12:PRINT C(2);
|
|
2040 TAB 20:PRINT "8-4 OF A KIND";:IF C(8)=-1 THEN2050
|
|
2045 TAB 35:PRINT C(8);
|
|
2050 PRINT:PRINT"3-THREES";:IF C(3)=-1 THEN 2060
|
|
2055 TAB12:PRINT C(3);
|
|
2060 TAB 20:PRINT "9-FULL HOUSE";:IF C(9)=-1 THEN 2070
|
|
2065 TAB35:PRINT C(9);
|
|
2070 PRINT:PRINT "4-FOURS";:IF C(4)=-1 THEN 2080
|
|
2075 TAB 12:PRINT C(4);
|
|
2080 TAB 20:PRINT "10-SM.STRGHT.";:IF C(10)=-1 THEN 2090
|
|
2085 TAB 35:PRINT C(10);
|
|
2090 PRINT:PRINT "5-FIVES";:IF C(5)=-1 THEN 2100
|
|
2095 TAB 12:PRINT C(5);
|
|
2100 TAB 20:PRINT "11-LG.STRGHT.";:IF C(11)=-1 THEN 2110
|
|
2105 TAB 35:PRINT C(11);
|
|
2110 PRINT:PRINT"6-SIXES";:IF C(6)=-1 THEN 2120
|
|
2115 TAB 12:PRINT C(6);
|
|
2120 TAB 20:PRINT "12-YAHTZEE";:IF C(12)=-1 THEN 2130
|
|
2125 TAB 35:PRINT C(12);
|
|
2130 PRINT:T=0
|
|
2140 FOR I=1 TO 6
|
|
2150 IF C(I)>-1 THEN T=T+C(I)
|
|
2160 NEXT I
|
|
2170 PRINT "SUB-TOTAL";:TAB 12:PRINT T;
|
|
2180 TAB 20:PRINT"13-CHANCE";:IF C(13)=-1 THEN 2185
|
|
2182 TAB 35:PRINT C(13);
|
|
2185 PRINT:PRINT "BONUS";:IF T<65 THEN 2200
|
|
2190 U=35:TAB 12:PRINT 35;
|
|
2200 TAB20:PRINT "YAHTZEE BONUS";:IF C(14)=0 THEN 2205
|
|
2202 TAB35:PRINT C(14)
|
|
2205 PRINT
|
|
2210 G=0: FOR I=7 TO 14
|
|
2220 IF C(I)>-1 THEN G=G+C(I)
|
|
2230 NEXT I
|
|
2240 PRINT "UPPER";:TAB 12:PRINT T+U;
|
|
2250 TAB 20:PRINT "LOWER";:TAB 35:PRINT G
|
|
2260 TAB 20:PRINT "TOTAL";
|
|
2270 TAB 35:PRINT T+U+G
|
|
2300 A$="-----"
|
|
2310 PRINT A$,A$,A$,A$,A$
|
|
2320 FOR I=1 TO 5
|
|
2325 TAB I*8-7
|
|
2330 IF D(I)=1 THEN PRINT "! !";
|
|
2340 IF D(I)=2 OR D(I)= 3 THEN PRINT "!* !";
|
|
2350 IF D(I)>3 THEN PRINT "!* *!";
|
|
2360 NEXT I:PRINT
|
|
2370 FOR I=1 TO 5
|
|
2375 TAB I*8-7
|
|
2380 IF D(I)MOD 2 THEN PRINT "! * !";
|
|
2390 IF D(I)=2 OR D(I)=4 THEN PRINT "! !";
|
|
2400 IF D(I)=6 THEN PRINT "!* *!";
|
|
2410 NEXT I:PRINT
|
|
2420 FOR I= 1 TO 5
|
|
2425 TAB I*8-7
|
|
2430 IF D(I)>3 THEN PRINT "!* *!";
|
|
2440 IF D(I)=2 OR D(I)=3 THEN PRINT "! *!";
|
|
2450 IF D(I)=1 THEN PRINT "! !";
|
|
2460 NEXT I:PRINT
|
|
2470 PRINT A$,A$,A$,A$,A$
|
|
2480 RETURN
|
|
3000 REM SCORE CATEGORY E IS POINTER FOR SCORE & P IS SCORE RETURNED
|
|
3010 E=100*B+3000
|
|
3020 P=0:S=0
|
|
3030 GOSUB E
|
|
3040 C(B) = P
|
|
3050 IF C(12)<50 THEN 3099
|
|
3060 P=0:GOSUB 4200
|
|
3070 IF P=0 THEN 3099
|
|
3080 IF C(14)<0 THEN C(14)=0
|
|
3090 C(14)=C(14)+100
|
|
3099 RETURN
|
|
3100 REM ONES
|
|
3200 REM TWOS
|
|
3300 REM THREES
|
|
3400 REM FOURS
|
|
3500 REM FIVES
|
|
3600 REM SIXES
|
|
3610 FOR I=1 TO 5
|
|
3620 IF D(I)=B THEN P=P+B
|
|
3630 NEXT I
|
|
3640 RETURN
|
|
3700 REM 3 OF A KIND
|
|
3710 F=0
|
|
3720 GOSUB 4400
|
|
3730 FOR I=1 TO 3
|
|
3740 IF D(I)=D(I+2) THEN F=1
|
|
3750 NEXT I
|
|
3770 IF F=1 THEN 4300
|
|
3780 RETURN
|
|
3800 REM 4 OF A KIND
|
|
3810 GOSUB 4400
|
|
3820 IF D(1)=D(4) THEN 4300
|
|
3830 IF D(2)=D(5) THEN 4300
|
|
3840 RETURN
|
|
3900 REM FULL HOUSE
|
|
3910 GOSUB 4400
|
|
3920 IF (D(1)#D(2)) OR (D(4)#D(5)) THEN 3940
|
|
3930 IF (D(3) = D(1)) OR (D(3) = D(5)) THEN P=25
|
|
3940 RETURN
|
|
4000 REM SMALL STRAIGHT
|
|
4010 GOSUB 4400
|
|
4020 FOR I=1 TO 4
|
|
4030 IF D(I)=3 THEN T1=1
|
|
4040 IF D(I+1)=4 THEN T2=1
|
|
4050 IF D(I)+1=D(I+1) THEN P1=P1+1
|
|
4060 NEXT I
|
|
4070 IF C(12)>0 THEN GOSUB 4230
|
|
4080 P1=P1*T1*T2: IF P1>0 OR P=50 THEN P=30
|
|
4090 RETURN
|
|
4100 REM LARGE STRAIGHT
|
|
4110 GOSUB 4400
|
|
4120 FORI=1 TO 4
|
|
4130 IF D(I)+1=D(I+1) THEN T3=T3+1
|
|
4140 NEXT I
|
|
4150 IF C(12)>0 THEN GOSUB 4230
|
|
4160 IF P=50 OR T3=4 THEN P=40
|
|
4170 RETURN
|
|
4200 REM YAHTZEE
|
|
4210 P=0
|
|
4220 GOSUB 4400
|
|
4230 IF D(1)=D(5) THEN P=50
|
|
4240 RETURN
|
|
4300 REM CHANCE
|
|
4310 FOR I=1 TO 5
|
|
4320 P=P+D(I)
|
|
4330 NEXT I
|
|
4340 RETURN
|
|
4400 REM SORT
|
|
4410 FOR H=1 TO 4
|
|
4420 FOR I=1 TO 4
|
|
4430 IF D(I)<= D(I+1) THEN 4470
|
|
4440 S=D(I)
|
|
4450 D(I)=D(I+1)
|
|
4460 D(I+1)=S
|
|
4470 NEXT I
|
|
4480 NEXT H
|
|
4490 RETURN
|
|
|