85 HOME : VTAB 12: HTAB 5: PRINT "Junior Three Software Presents": FOR N = 1 TO 1000: NEXT
86 HOME
90 GR : POKE -16302,0
93 CALL -1998
94 COLOR= 9
95 FOR N = 4 TO 35: READ ST,EN: IF ST = 999 THEN 107
97 IF N = 12 OR N = 13 OR N = 22 OR N = 23 THEN 105
100 VLIN ST,EN AT N
105 NEXT
107 FOR N = 27 TO 30: VLIN 4,14 AT N: NEXT
112 DATA 4,44,4,44,34,44,34,44,34,44,34,44,4,44,4,44
114 DATA 4,44, 4,44, 4,44,4,44,4,14,15,24,25,34,35,44,4,44,4,44
116 DATA 4,44, 4,44, 4,44, 4,44,4,44,34,44,34,44,34,44,34,44,4,44,4,44,999,999
117 REM 1812 OVERTURE + &"TONE"
118 CALL PEEK(175) +256 * PEEK(176) -46
119 FOR I = 1 TO 229: READ P: READ L: IF LP < >P THEN & "TONE",0,4
120 & "TONE",P,2 *L:LP = P: NEXT : DATA 0,50,170,2,170,2,127,4,113,4,101,4,113,4,127,4,113,4,101,6,0,4,127,6,0,4,127,24,0,8,170,2,170,2,127,4,113,4,101,4,113,4,127,4,113,4,101,6,0,4,127,6,0,4,127,24,0,8
121 DATA 152,2,152,2,113,4,101,4,113,4,152,4,191,4,152,4,113,4,152,4,191,4,152,4,113,24,0,4,170,2,170,2,127,4,113,4,127,4,170,4,202,4,170,4,127,4,170,4,202,4,170,4,127,24,0,4
122 DATA 0,3,152,3,152,3,152,3,127,4,0,4,152,4,0,16,170,3,170,3,170,3,135,4,0,4,170,4,0,16,170,3,170,3,170,3,143,4,0,4,152,4,0,4,127,4,0,4,135,4,0,4,113,4,0,4,127,4,0,4,85,6,90,6,95,6,101,6,107,6,113,6,120,6,127,6,135,6,143,6,152,6,161,6
123 DATA 170,6,0,14,161,6,0,14,152,6,0,14,135,6,0,14,127,4,0,4,170,2,170,2,170,2,113,4,0,4,135,4,0,4,127,4,0,4,170,2,170,2,170,2,113,4,0,3,135,4,0,3,127,4,0,3,135,4,0,3,127,4,0,3,135,4,0,3,127,4,0,3,135,4,0,3,127,4,0,3,135,4,0,3,127,4,0,3
124 DATA 113,4,0,3,101,4,0,3,113,4,0,3,101,4,0,3,113,4,0,3,101,4,0,3,113,4,0,3,101,4,0,3,85,4,0,3,85,4,0,3,85,4,0,3,85,4,0,3,85,4,0,3,85,4,0,3,85,4,0,3,63,4
125 DATA 85,2,85,2,63,4,56,4,50,4,56,4,63,4,56,4,50,4,85,2,85,2,101,4,85,4,63,4,85,4,101,4,85,4,63,4,170,2,170,2,127,4,113,4,101,4,113,4,127,4,113,4,101,4,170,2,170,2,202,4,170,4,127,4,170,4,202,4,170,4,127,12,0,10
126 DATA 255,14,0,4,255,2,202,18,0,4,170,18,0,4,127,28,0,14,101,28,0,14,255,28,0,14,127,28,0,14,255,4,255,70,0,50
127 TEXT : HOME : FOR N = 1 TO 13: READ L$: PRINT L$: NEXT
128 DATA ***************************************,* *,* === U N O === *
129 DATA * *,"* by John G. Thomas *",* *
130 DATA ***************************************,,,,,"press <RETURN> for directions - any","other key to begin game"
131 PRINT : PRINT : PRINT "Make sure the Caps Lock is down!": PRINT : GET B$: IF B$ < > CHR$(13) THEN 200
133 HOME : HTAB 15: PRINT "DIRECTIONS": PRINT
135 FOR N = 1 TO 26: READ L$: PRINT L$: IF N = 6 OR N = 13 OR N = 26 THEN PRINT : PRINT "Press any key to continue. ";: GET L$: HOME
136 NEXT
137 DATA "UNO is a card game that may be played bya number of players. This version pits you against the Apple computer in a two-player game. When UNO is played by two,"
138 DATA "a REVERSE card is the same as a SKIP. Otherwise, regular rules apply:",,"1. Each player is dealt 7 cards. One card is placed face up. This is the 'top card' that the players must match."
139 DATA ,"2. Each player discards in turn, match- ing the top card's color or number (or word in the case of SKIP, REVERSE, or DRAW TWO). Player must draw a card if nomatching card is held. This card is thenplayable."
140 DATA "3. Discarding SKIP, REVERSE, DRAW TWO orWILD DRAW FOUR all cause the other player to lose a turn and this player continues until discarding a number card.",
141 DATA "4. When the human plays a WILD card, he inputs a new color at the prompt at the top of the screen. The first letter of the color will suffice.",
142 DATA "5. Play continues until a player has onecard left. At this point, he warns the other player by signaling 'UNO.' If a player fails to warn, the other player may signal 'UNO' causing the errant"
143 DATA "player to draw two extra cards.",
144 DATA "6. The winner of a hand is the first to discard all his cards. He receives the points of the other player's cards. Scoring is as follows:",,
145 DATA "-Number cards are worth face value",
146 DATA "-SKIP, REVERSE, and DRAW TWO are worth 20 points each",
147 DATA "-WILD DRAW FOUR and WILD cards are worth 50 points each",,
148 DATA "Refer to the rules packed with the card game for any rules not covered here. Enjoy, human!",,
190 :
195 REM *** RANDOMIZE ***<CTRL-J>
198 :
199 REM *** RANDOMIZE ***<CTRL-J>
200 HOME : VTAB 12: PRINT "Cut the deck. Press any number or letter key.": PRINT : PRINT : PRINT : GET B$
205 PRINT : PRINT "Thanks."
210 FOR N = 1 TO ASC(B$):N1 = RND(1): NEXT
220 FOR N = 1 TO 700: NEXT
230 HOME : VTAB 8: PRINT "One more thing.": PRINT : PRINT : PRINT "Do you want a smart computer to play against?": PRINT : PRINT : PRINT "Choose:": PRINT
240 PRINT " 1> regular computer": PRINT " 2> slightly brighter than the average bear": PRINT : PRINT : PRINT "Press 1 or 2 ";: GET B$
245 IF B$ <"1" OR B$ >"2" THEN PRINT CHR$(7); CHR$(7);: GOTO 230
250 L1 = VAL(B$) -1
299 REM *** SHUFFLE ********<CTRL-J>
300 TEXT : HOME : VTAB 12: HTAB 15: PRINT "SHUFFLING..."
492 IF LEFT$(TC$,1) = "W" THEN VTAB 6: HTAB 1: CALL -868: PRINT "TOP CARD IS WILD. COLOR? ";: FLASH : PRINT "->";: NORMAL : INPUT "";NC$: HTAB 1: CALL -868:L$ = LEFT$(NC$,1): IF L$ < >"B" AND L$ < >"G" AND L$ < >"R" AND L$ < >"Y" THEN PRINT "<CTRL-G><CTRL-G>": GOTO 492
493 IF R$ = "O" THEN FOR N3 = 1 TO 2: PRINT CHR$(7);: GOSUB 5000: NEXT : VTAB 6: HTAB 1: INVERSE : PRINT "YOU DREW TWO.": NORMAL : FOR N3 = 1 TO 1500: NEXT : GOTO 600
494 IF R$ = "P" THEN FOR N3 = 1 TO 2: PRINT CHR$(7);: NEXT : VTAB 6: HTAB 1: INVERSE : PRINT "YOU GOT SKIPPED.": NORMAL : FOR N3 = 1 TO 1500: NEXT : GOTO 600
495 IF R$ = "E" THEN FOR N3 = 1 TO 2: PRINT CHR$(7);: NEXT : VTAB 6: HTAB 1: INVERSE : PRINT "REVERSE! YOU GOT SKIPPED.": NORMAL : FOR N3 = 1 TO 1500: NEXT : GOTO 600
496 IF TC$ = "W" THEN VTAB 6: HTAB 1: PRINT "YOUR TURN."
499 REM *** MY TURN ***<CTRL-J>
500 GOSUB 3000: IF MC = 0 OR AC = 0 THEN 12000
510 IF PEEK( -16384) <128 THEN 500
520 K$ = CHR$( PEEK( -16384) -128)
530 POKE -16368,0: REM CLEAR STROBE
540 FOR N1 = 1 TO LEN(CH$)
550 IF K$ = MID$ (CH$,N1,1) THEN 570
560 NEXT : GOTO 500
570 ON N1 GOSUB 9000,9200,9400,9600,9800,9700
580 IF NOT D THEN 500
585 REM
590 REM **** COMPUTER'S TURN **
595 REM
600 IF AC = 0 OR MC = 0 THEN 12000
605 F = 0:OK = 0:D = 0: VTAB 6: HTAB 1: CALL -868: PRINT "MY TURN. THINKING..."
610 IF MU THEN GOSUB 9900
620 IF L1 THEN GOSUB 12280
625 FOR N3 = 1 TO 1000: NEXT
627 W = 0:W4 = 0: REM NO WILD CARDS
630 FOR AA = 1 TO AC
640 L$ = LEFT$(A$(AA),1):R$ = RIGHT$(A$(AA),1)
650 IF A$(AA) = "WILD" THEN W = AA
655 IF A$(AA) = "WILD DRAW FOUR" THEN W4 = AA
657 IF NC$ = "" THEN NC$ = N4$
660 IF ASC(L$) = ASC(NC$) THEN 700
665 IF R$ = RIGHT$(TC$,1) THEN 700
670 NEXT AA
674 N4 = 0
675 FOR N3 = 1 TO AC: IF LEFT$(A$(N3),1) < >"W" THEN N4 = N3: NEXT
676 IF LEFT$(A$(N4),1) = "B" THEN N4$ = "BLUE"
677 IF LEFT$(A$(N4),1) = "G" THEN N4$ = "GREEN"
678 IF LEFT$(A$(N4),1) = "R" THEN N4$ = "RED"
679 IF LEFT$(A$(N4),1) = "Y" THEN N4$ = "YELLOW"
680 IF F AND W = 0 AND W4 = 0 THEN 2000
685 IF W = 0 AND W4 = 0 THEN GOSUB 6000:F = 1: GOTO 630
687 IF W THEN AA = W:NC$ = N4$: GOTO 700
690 IF W4 THEN AA = W4:NC$ = N4$:R$ = "R": GOTO 700
695 REM
696 REM ** COMPUTER DISCARDS ***<CTRL-J>
700 TC$ = A$(AA)
710 FOR N3 = AA TO AC +1: REM SLIDE CARDS UP LIST
720 A$(N3) = A$(N3 +1)
730 NEXT
735 FOR N3 = 1 TO 1500: NEXT
740 AC = AC -1: IF AC = 0 AND TC$ = "WILD DRAW FOUR" THEN FOR N5 = 1 TO 4: GOSUB 5000: NEXT : GOSUB 8075: GOTO 2000
745 IF AC = 0 AND R$ = "O" THEN GOSUB 5000: GOSUB 5000: GOSUB 8075: GOTO 2000
747 IF AC = 0 THEN GOSUB 8075: GOTO 2000
750 IF R$ < >"R" AND R$ < >"O" AND R$ < >"P" AND R$ < >"E" THEN GOSUB 8075: GOTO 2000
760 IF R$ = "R" THEN FOR N3 = 1 TO 4: PRINT CHR$(7);: GOSUB 5000: NEXT : GOSUB 12230: VTAB 6: HTAB 1: CALL -868: INVERSE : PRINT "YOU DREW FOUR.": NORMAL : FOR N3 = 1 TO 1500: NEXT : GOTO 627
765 IF R$ = "O" THEN FOR N3 = 1 TO 2: PRINT CHR$(7);: GOSUB 5000: NEXT : GOSUB 12210: VTAB 6: HTAB 1: CALL -868: INVERSE : PRINT "YOU DREW TWO.": NORMAL : FOR N3 = 1 TO 1500: NEXT : GOTO 627
770 IF R$ = "P" THEN GOSUB 12210: VTAB 6: HTAB 1: CALL -868: INVERSE : PRINT "YOU GOT SKIPPED.": NORMAL : FOR N3 = 1 TO 1500: NEXT : GOTO 627
775 IF R$ = "E" THEN GOSUB 12210: VTAB 6: HTAB 1: CALL -868: INVERSE : PRINT "REVERSE. YOU GOT SKIPPED.": NORMAL : FOR N3 = 1 TO 1500: NEXT : GOTO 627
9010 CC = CC +1: IF CC = MC +1 THEN CC = 1:VT = 8:HT = 1
9020 VTAB VT: HTAB HT: INVERSE : PRINT M$(CC): NORMAL
9030 RETURN
9180 REM
9190 REM *** UNO! ***<CTRL-J>
9200 VTAB 1: HTAB 14: FLASH : PRINT "*** U N O ***": NORMAL
9205 PRINT CHR$(7); CHR$(7);
9210 IF AU THEN AU = 0: GOSUB 6000: GOSUB 6000
9220 IF MU THEN MU = 0
9230 FOR N2 = 1 TO 1500: NEXT
9240 VTAB 1: HTAB 14: PRINT "*** U N O ***"
9245 UN = 0
9250 RETURN
9300 REM
9310 REM *** MY NEW CARD ***
9320 REM
9400 GOSUB 5000
9405 AU = 0
9410 GOSUB 7000
9415 OK = 1
9420 GOSUB 8087
9425 CC = 1:VT = 8:HT = 1
9430 RETURN
9590 REM
9595 REM *** <E>ND TURN ***<CTRL-J>
9600 IF OK THEN D = 1: RETURN
9610 VTAB 6: HTAB 1: CALL -868: FOR N3 = 1 TO 3: PRINT CHR$(7);: NEXT : PRINT "YOUR TURN ISN'T OVER YET!!"
9620 FOR N3 = 1 TO 1500: NEXT : VTAB 6: HTAB 1: CALL -868: RETURN
9690 REM A CHEATER CALLS<CTRL-J>
9700 HOME
9710 FOR N1 = 1 TO 14
9720 PRINT A$(N1)
9730 IF N1 = AC THEN 9750
9740 NEXT
9750 IF AC <15 THEN GET B$: GOSUB 8100: RETURN
9760 FOR N1 = 15 TO 28
9770 VTAB N1 -7: HTAB 20: PRINT A$(N1)
9775 IF N1 = AC THEN GET B$: GOSUB 8100: RETURN
9780 NEXT
9785 GET B$: GOSUB 8100: RETURN
9790 REM
9793 REM *** <RETURN> PRESSED **
9795 REM
9800 IF TC$ = "WILD" AND LEFT$(M$(CC),1) = LEFT$(NC$,1) THEN 9802
9801 IF LEN(TC$) < >14 AND LEFT$(M$(CC),1) < >"W" AND LEFT$(M$(CC),1) < > LEFT$(TC$,1) AND RIGHT$(M$(CC),1) < > RIGHT$(TC$,1) THEN VTAB 6: HTAB 1: CALL -868: PRINT "<CTRL-O><CTRL-G><CTRL-O><CTRL-G><CTRL-O><CTRL-G>YOUR CARD MUST MATCH THE TOP CARD!!!": RETURN
9802 AU = 0:OK = 0: VTAB 6: HTAB 1: CALL -868
9803 R$ = RIGHT$(M$(CC),1): IF R$ < >"R" AND R$ < >"O" AND R$ < >"P" AND R$ < >"E" THEN D = 1
9804 IF R$ = "R" OR R$ = "O" OR R$ = "P" OR R$ = "E" THEN VTAB 6: HTAB 1: CALL -868: PRINT "STILL YOUR TURN."
9805 IF LEN(M$(CC)) = 4 THEN VTAB 6: HTAB 1: CALL -868: PRINT CHR$(7); CHR$(7);: PRINT "A WILD CARD. WHAT COLOR NOW? ";: FLASH : PRINT "->";: NORMAL : INPUT "";NC$: VTAB 6: HTAB 1: CALL -868:L$ = LEFT$(NC$,1): IF L$ < >"B" AND L$ < >"G" AND L$ < >"R" AND L$ < >"Y" THEN 9805
9807 IF R$ = "O" THEN GOSUB 6000: GOSUB 6000: GOSUB 8075
9808 IF R$ = "R" THEN VTAB 6: HTAB 1: CALL -868: PRINT "DRAW FOUR??? OH NO!!": FOR N5 = 1 TO 4: GOSUB 6000: NEXT : GOSUB 8075
9810 TC$ = M$(CC):M$(CC) = "ZZZ"
9815 CC = 1:VT = 8:HT = 1
9820 GOSUB 7000:MC = MC -1
9830 GOSUB 8087
9835 IF MC = 1 THEN MU = 1
9840 RETURN
9880 REM
9890 REM * COMPUTR CHK 4 UNO **<CTRL-J>
9900 N3 = 0
9905 N2 = ( INT( RND(1) *4) +1) *11: IF L1 THEN N2 = N2 *3
9910 N3 = N3 +1
9920 IF N3 = N2 THEN MU = 0: GOTO 9970
9930 IF PEEK( -16384) <128 THEN 9910: REM NO KEYPRESS
9940 K$ = CHR$( PEEK( -16384) -128)
9950 IF K$ = "U" THEN GOSUB 9200: POKE -16368,0: RETURN
9960 GOTO 9910
9970 VTAB 1: HTAB 14: FLASH : PRINT "*** U N O ***": VTAB 6: HTAB 1: CALL -868: PRINT "GOTCHA!!"