home *** CD-ROM | disk | FTP | other *** search
/ Generous Efforts of Many / gemcd.zip / GEM.CD.B.po / GAMES:BASIC.4 / SOLITAIRE.bas < prev    next >
BASIC Source File  |  2010-05-14  |  23KB  |  301 lines

  1. 1  GOTO 8
  2. 2 B =  VAL(B$) +70:D =  ASC( RIGHT$(B$,1)) +2:F =  FN A(A):H =  FN B(A): RETURN 
  3. 3 B =  VAL(B$) +70:D =  ASC( RIGHT$(B$,1)) +2: RETURN 
  4. 4  HCOLOR= 0: FOR I = A% TO 191: HPLOT 190,I TO 242,I: NEXT : HCOLOR= 3: RETURN 
  5. 5 G = F: FOR I = 1 TO  LEN(B$):L$ =  MID$ (B$,I,1): IF L$ = " "  THEN G = G +4: GOTO 7
  6. 6 L =  ASC(L$) -30: DRAW L AT G,H:G = G +7
  7. 7  NEXT : RETURN 
  8. 8  CALL 15360: POKE 232,0: POKE 233,96: SCALE= 1: ROT= 1: HCOLOR= 3: LOMEM: 27000: GOSUB 275: GOTO 46
  9. 9  HOME : PRINT "        SOLITAIRE BY ART CARPET": VTAB 12: HTAB 15: FLASH : PRINT "SHUFFLING": NORMAL : GOSUB 277: HGR2 : HCOLOR= 3: GOTO 63
  10. 10  IF M = 1  THEN 69
  11. 11  GOSUB 4:B$ = " INVALID":F = 190:H = A% +6: GOSUB 5: PRINT "<CTRL-G>": FOR I = 1 TO 100: NEXT : GOTO 69
  12. 12 H$ =  STR$( VAL(H$) +1): IF N = 1  THEN P = P +5:Q = Q +5
  13. 13  RETURN 
  14. 14 G(G(0)) = 0:G(0) = G(0) -1: RETURN 
  15. 15  IF N = 2  THEN B$ = B$(R): RETURN 
  16. 16 B$ = K$(G(G(0))): RETURN 
  17. 17 R = R -1:S = S -1:B$ = B$(R)
  18. 18  IF N = 2  THEN F$ = B$(R): RETURN 
  19. 19 F$ = K$(G(G(0))): RETURN 
  20. 20  HPLOT T,V TO T +16,V TO T +16,V +20 TO T,V +20 TO T,V: RETURN 
  21. 21  GOSUB 2: DRAW D AT A%,A%: DRAW B AT A%,A%: IF   NOT  FN D(A)  THEN  XDRAW B AT A%,A%
  22. 22  RETURN 
  23. 23  GOSUB 2: XDRAW D AT A%,A%: XDRAW B AT A%,A%: RETURN 
  24. 24 B$ = H$: IF  LEN(H$) = 1  THEN B$ = "0" +H$
  25. 25  IF M$ < >H$  THEN X = 157: GOSUB 33:H = 157: GOSUB 5:M$ = H$
  26. 26  IF N = 2  THEN 42
  27. 27 I$ =  STR$(Y):B$ = I$: IF  LEN(I$) = 1  THEN B$ = "0" +I$
  28. 28  IF N$ < >I$  THEN X = 171: GOSUB 33:H = 171: GOSUB 5:N$ = I$
  29. 29  IF N = 2  THEN 44
  30. 30 J$ =  STR$(G(0)):B$ = J$: IF  LEN(J$) = 1  THEN B$ = "0" +J$
  31. 31  IF O$ < >J$  THEN X = 185: GOSUB 33:H = 185: GOSUB 5:O$ = J$
  32. 32  RETURN 
  33. 33  HCOLOR= 0: FOR I = X TO X +6: HPLOT 267,I TO 279,I: NEXT : HCOLOR= 3:F = 267: RETURN 
  34. 34  DRAW 65 AT 237,H
  35. 35  IF  PEEK( -16384) = 155  THEN  POKE  -16368,0: POP : GOTO 46
  36. 36  IF  PEEK( -16384) <193  OR  PEEK( -16384) >202  THEN  XDRAW 1 AT 239,H +3: FOR I = 1 TO 50: NEXT : DRAW 1 AT 239,H +3: FOR I = 1 TO 50: NEXT : GOTO 35
  37. 37 K =  PEEK( -16384): POKE  -16368,0: XDRAW 65 AT 237,H: RETURN 
  38. 38  DRAW 65 AT G +5,H
  39. 39  IF  PEEK( -16384) = 209  AND G < >95  THEN K =  PEEK( -16384): POKE  -16368,0: RETURN 
  40. 40  IF  PEEK( -16384) <193  OR  PEEK( -16384) >208  THEN  XDRAW 1 AT G +7,H +3: FOR I = 1 TO 50: NEXT : DRAW 1 AT G +7,H +3: FOR I = 1 TO 50: NEXT : GOTO 39
  41. 41 K =  PEEK( -16384): POKE  -16368,0: XDRAW 65 AT G +5,H: RETURN 
  42. 42 I$ =  STR$(S -R):B$ = I$: IF  LEN(I$) = 1  THEN B$ = "0" +I$
  43. 43  GOTO 28
  44. 44 J$ =  STR$(R):B$ = J$: IF  LEN(J$) = 1  THEN B$ = "0" +J$
  45. 45  GOTO 31
  46. 46  TEXT : HOME : PRINT : PRINT "A) KLONDIKE (1 AT A TIME, ONCE THRU)": PRINT : PRINT "B) KLONDIKE VAR. (3 AT A TIME, NO LIMIT)": PRINT "C) PICTURE FRAME": PRINT : PRINT "D) PYRAMID": IF A1 +B1 +D1 +E1 = 0  THEN 49
  47. 47  IF N >2  THEN 49
  48. 48  PRINT : PRINT "E) CONTINUE GAME IN PROGRESS": IF  FN F(A) = 52  THEN N = 0: GOTO 49
  49. 49  PRINT : PRINT "---------------------------------------": PRINT "          GAMES  WINS  POINTS  TOTAL": PRINT : PRINT "  GAME A";:I$ =  STR$(B1): HTAB (16 - LEN(I$)): PRINT B1;:I$ =  STR$(F1): HTAB (22 - LEN(I$)): PRINT F1;:I$ =  STR$(P): HTAB (30 - LEN(I$)): PRINT P;:I$ =  STR$(Q): HTAB (37 - LEN(I$)): PRINT Q
  50. 50  PRINT "  GAME B";:I$ =  STR$(A1): HTAB (16 - LEN(I$)): PRINT A1;:I$ =  STR$(G1): HTAB (22 - LEN(I$)): PRINT G1: PRINT "  GAME C";:I$ =  STR$(D1): HTAB (16 - LEN(I$)): PRINT D1;:I$ =  STR$(H1): HTAB (22 - LEN(I$)): PRINT H1: PRINT "  GAME D";:I$ =  STR$(E1): HTAB (16 - LEN(I$)): PRINT E1;:I$ =  STR$(I1): HTAB (22 - LEN(I$)): PRINT I1: PRINT "---------------------------------------": IF N = 1  THEN  POKE 1222,65
  51. 51  IF N = 2  THEN  POKE 1222,66
  52. 52  POKE  -16368,0: PRINT : PRINT "CHOICE ";: GET A$: PRINT A$: IF A$ = "A"  OR A$ = "B"  OR A$ = "C"  OR A$ = "D"  THEN 57
  53. 53  IF B1 +A1 +D1 +E1 = 0  THEN 46
  54. 54  IF  FN F(A) = 52  THEN 46
  55. 55  POKE  -16304,0: POKE  -16299,0: IF N = 1  OR N = 2  THEN 69
  56. 56  GOTO 46
  57. 57 N = 1: IF A$ = "B"  THEN N = 2:A1 = A1 +1
  58. 58  IF A$ = "C"  THEN N = 3:D1 = D1 +1: GOTO 62
  59. 59  IF A$ = "D"  THEN N = 4:E1 = E1 +1: GOTO 62
  60. 60  IF N = 1  THEN P =  -52:Q = Q -52:B1 = B1 +1
  61. 61  POKE  -16368,0: PRINT : PRINT "DO YOU WANT AUTOMATIC FLIPPING? ";: GET A$: PRINT A$:J1 = 0: IF A$ = "Y"  THEN J1 = 1
  62. 62  FOR I = 1 TO  PEEK(79) +1 + VAL(A$):B% =  RND(1): NEXT : GOTO 9
  63. 63  IF N = 3  THEN 177
  64. 64  IF N = 4  THEN 228
  65. 65 B$ = K$(1): GOSUB 2: DRAW D AT 11,0: DRAW B AT 11,0: IF   NOT  FN D(A)  THEN  XDRAW B AT 11,0
  66. 66  FOR I = 1 TO 6:U = I *22:Z = 0: FOR V = 1 TO I: DRAW 84 AT 11 +Z,U:Z = Z +9: NEXT :B$ = P$(I +1,F(I +1) +H(I +1)): GOSUB 2: DRAW D AT 11 +Z,U: DRAW B AT 11 +Z,U: IF   NOT  FN D(A)  THEN  XDRAW B AT 11 +Z,U
  67. 67  NEXT : FOR I = 0 TO 6: DRAW 85 AT 0,C: XDRAW I +35 AT 2,C +7:C = C +22: NEXT : DRAW 85 AT 0,A%: XDRAW 42 AT 2,177: DRAW 85 AT 118,A%: XDRAW 43 AT 120,177: DRAW 66 AT 131,A%: DRAW 85 AT 158,A%: XDRAW 44 AT 160,177: DRAW 42 AT 255,157: DRAW 43 AT 255,171: DRAW 44 AT 255,185:H$ = "00":I$ = "24":J$ = "00": IF N < >2  THEN 69
  68. 68  FOR I = 24 TO 1  STEP  -1:A$(I) = K$(53 -I):B$(I) = "": NEXT :K1 = 24:S = 24:R = 0
  69. 69  GOSUB 283: IF M < >1  THEN 72
  70. 70 L1 = L1 +1: IF L1 >7  THEN L1 = 1
  71. 71  GOTO 74
  72. 72  IF J1 = 1  AND E(L1) = 1  AND H(L1) < >0  THEN  GOSUB 24:Q$ = "":E$ = "": GOTO 74
  73. 73  GOSUB 24: GOSUB 4:Q$ = "":E$ = "":B$ = " PLAY":F = 200:H = A%: GOSUB 5: GOSUB 34: DRAW K -158 AT G +5,H:L1 = K -192: IF E(L1) = 1  AND H(L1) = 0  THEN E(L1) = 0
  74. 74  IF L1 = 8  THEN 10
  75. 75  IF L1 = 9  THEN 91
  76. 76  IF L1 = 10  THEN 97
  77. 77 T = L1:F$ = P$(L1,F(L1) +H(L1)):T = L1: IF F$ = ""  THEN 10
  78. 78 E$ = "": IF F(L1) >1  THEN E$ = P$(L1,1 +H(L1))
  79. 79  IF E(L1) < >1  THEN 82
  80. 80 B$ = F$: GOSUB 2: XDRAW 66 AT F -9,H: DRAW D AT F -9,H: DRAW B AT F -9,H: IF   NOT  FN D(A)  THEN  XDRAW B AT F -9,H
  81. 81 E(L1) = 0:F(L1) = F(L1) +1:H(L1) = H(L1) -1: GOTO 69
  82. 82  IF  VAL(F$) < >1  THEN 125
  83. 83 B$ = F$: GOSUB 2: XDRAW D AT F -18,H: XDRAW B AT F -18,H: DRAW D AT  FN C(A),A%: DRAW B AT  FN C(A),A%: IF   NOT  FN D(A)  THEN  XDRAW B AT  FN C(A),A%
  84. 84 P$(L1,F(L1) +H(L1)) = "": IF E = 2  THEN 86
  85. 85  IF H(L1) >0  THEN  DRAW 66 AT F -27,H
  86. 86 F(L1) = F(L1) -1:G$( FN E(A)) = B$: GOSUB 12: IF E = 2  THEN 89
  87. 87  IF F(L1) = 0  THEN E(L1) = 1
  88. 88  GOTO 69
  89. 89 E = 0: IF F(L1) = 0  AND H(L1) >0  THEN  DRAW 66 AT F -27,H
  90. 90  GOTO 87
  91. 91  IF N = 2  THEN 128
  92. 92 Y = Y -1: IF Y =  -1  THEN Y = 0: GOTO 10
  93. 93  XDRAW 66 AT 131,A%: FOR I = 1 TO 100: NEXT : IF Y < >0  THEN  DRAW 66 AT 131,A%
  94. 94  IF G(0) = 0  THEN 96
  95. 95  GOSUB 15: GOSUB 23
  96. 96 B$ = K$(52 -Y): GOSUB 21:G(0) = G(0) +1:G(G(0)) = 52 -Y: GOTO 69
  97. 97 B% =  RND(1): IF N = 2  THEN 138
  98. 98  IF G(0) = 0  THEN 10
  99. 99  GOSUB 18: IF  VAL(F$) = 1  THEN B$ = F$: GOSUB 23: DRAW D AT  FN C(A),A%: DRAW B AT  FN C(A),A%: IF   NOT  FN D(A)  THEN  XDRAW B AT  FN C(A),A%
  100. 100  IF  VAL(F$) = 1  THEN 110
  101. 101  IF M = 1  THEN M1 = 8: GOTO 103
  102. 102  GOSUB 18:B$ = " TO":F = 200:H = 185: GOSUB 5: GOSUB 34: DRAW K -158 AT G +19,H:M1 = K -192
  103. 103  IF M1 >8  THEN 10
  104. 104  IF E(M1) = 1  AND H(M1) = 0  THEN E(M1) = 0
  105. 105  IF E(M1) = 1  THEN 10
  106. 106  IF M1 = 8  THEN B$ = F$:Q$ = G$( FN E(A)): IF  VAL(Q$) +1 =  VAL(B$)  AND  RIGHT$(Q$,1) =  RIGHT$(B$,1)  THEN 109
  107. 107  IF M1 < >8  THEN 113
  108. 108  GOTO 10
  109. 109 B$ = Q$: GOSUB 2: XDRAW D AT  FN C(A),A%: XDRAW B AT  FN C(A),A%:B$ = F$: GOSUB 23: DRAW D AT  FN C(A),A%: DRAW B AT  FN C(A),A%: IF   NOT  FN D(A)  THEN  XDRAW B AT  FN C(A),A%
  110. 110  IF N = 2  THEN 140
  111. 111  GOSUB 14:G$( FN E(A)) = F$: GOSUB 12: IF G(0) >0  THEN  GOSUB 15: GOSUB 21
  112. 112  GOTO 69
  113. 113  IF F(M1) +H(M1) >0  THEN 119
  114. 114  IF  VAL(F$) < >13  THEN 10
  115. 115 B$ = F$: GOSUB 23:T = M1: DRAW D AT 11,(M1 -1) *22: DRAW B AT 11,(M1 -1) *22: IF   NOT  FN D(A)  THEN  XDRAW B AT 11,(M1 -1) *22
  116. 116  IF N = 2  THEN 142
  117. 117  GOSUB 14: IF G(0) >0  THEN  GOSUB 15: GOSUB 21
  118. 118 F(M1) = 1:P$(M1,1) = F$: GOTO 69
  119. 119 Q$ = P$(M1,H(M1) +F(M1)):B$ = Q$: GOSUB 2:C1 =  FN D(A):B$ = F$:T = L1: GOSUB 2: IF C1 =  FN D(A)  THEN 10
  120. 120  IF  VAL(F$) +1 < > VAL(Q$)  THEN 10
  121. 121  GOSUB 23:T = M1: GOSUB 2: DRAW D AT F,H: DRAW B AT F,H: IF   NOT  FN D(A)  THEN  XDRAW B AT F,H
  122. 122 F(M1) = F(M1) +1:P$(M1,H(M1) +F(M1)) = F$: IF N = 2  THEN  GOSUB 17: GOTO 144
  123. 123  GOSUB 14: IF G(0) >0  THEN  GOSUB 15: GOSUB 21
  124. 124  GOTO 69
  125. 125 N1 = 0: IF  VAL(F$) = 13  THEN N1 = 1: GOTO 146
  126. 126  IF  VAL(E$) = 13  THEN N1 = 2
  127. 127  GOTO 146
  128. 128  IF S <1  THEN 10
  129. 129  IF  VAL(I$) = 0  AND S <4  THEN 10
  130. 130  IF R < >0  THEN  GOSUB 15: GOSUB 23
  131. 131  XDRAW 66 AT 131,A%: IF K1 = 0  THEN 137
  132. 132  IF K1 >2  THEN O1 = 3
  133. 133  IF K1 = 2  THEN O1 = 2
  134. 134  IF K1 = 1  THEN O1 = 1
  135. 135  FOR I = 1 TO O1:R = R +1:B$(R) = A$(K1 +1 -I): NEXT :K1 = K1 -O1: IF R < >S  THEN  FOR I = 1 TO 100: NEXT : DRAW 66 AT 131,A%
  136. 136  GOSUB 15: GOSUB 21: GOTO 69
  137. 137  FOR I = 1 TO R:A$(I) = B$(R +1 -I): NEXT :K1 = R:R = 0: GOTO 132
  138. 138  IF R = 0  THEN 10
  139. 139  GOTO 99
  140. 140 G$( FN E(A)) = F$: GOSUB 12: GOSUB 17: IF R >0  THEN  GOSUB 21
  141. 141  GOTO 69
  142. 142 F(M1) = 1:P$(M1,1) = F$: GOSUB 17: IF R >0  THEN  GOSUB 15: GOSUB 21
  143. 143  GOTO 69
  144. 144  IF R >0  THEN  GOSUB 21
  145. 145  GOTO 69
  146. 146  IF M = 1  THEN M1 = 8: GOTO 148
  147. 147 B$ = " TO":F = 200:H = 185: GOSUB 5: GOSUB 34: DRAW K -158 AT G +19,H:M1 = K -192
  148. 148  IF M1 >7  THEN 173
  149. 149 Q$ = P$(M1,F(M1) +H(M1)):P1 = 0: IF Q$ = ""  AND H(M1) +F(M1) = 0  AND N1 = 1  THEN 155
  150. 150  IF Q$ = ""  AND H(M1) +F(M1) = 0  AND N1 = 2  THEN F$ = E$:B$ = F$:T = L1: GOSUB 2:U = 0:P1 = 1: GOTO 166
  151. 151  IF Q$ = ""  THEN 10
  152. 152  IF E(M1) = 1  AND H(M1) = 0  THEN E(M1) = 0
  153. 153  IF E(M1) = 1  THEN 10
  154. 154  GOTO 156
  155. 155 B$ = F$:T = L1: GOSUB 2: GOTO 159
  156. 156  IF  VAL(F$) +1 < > VAL(Q$)  THEN P1 = 1: GOTO 162
  157. 157  IF E$ < >""  THEN 10
  158. 158 B$ = Q$: GOSUB 2:C1 =  FN D(A):B$ = F$:T = L1: GOSUB 2: IF C1 =  FN D(A)  THEN 10
  159. 159  XDRAW D AT F -18,H: XDRAW B AT F -18,H:P$(L1,F(L1) +H(L1)) = "":F(L1) = F(L1) -1: IF H(L1) >0  THEN  DRAW 66 AT F -27,H:E(L1) = 1
  160. 160 T = M1: GOSUB 2: DRAW D AT F,H: DRAW B AT F,H: IF   NOT  FN D(A)  THEN  XDRAW B AT F,H
  161. 161 P$(M1,F(M1) +H(M1) +1) = F$:F(M1) = F(M1) +1: GOTO 69
  162. 162 U = 0: IF E$ = ""  THEN 10
  163. 163  IF F(L1) = 0  THEN 69
  164. 164 F$ = E$:B$ = Q$: GOSUB 2:C1 =  FN D(A):B$ = F$:T = L1: GOSUB 2: IF C1 =  FN D(A)  THEN 10
  165. 165  IF  VAL(F$) +1 < > VAL(Q$)  THEN 10
  166. 166  GOSUB 300:Q1 = F(L1):U = U +1:F(L1) = U: GOSUB 2: XDRAW D AT F -18,H: XDRAW B AT F -18,H:F(L1) = Q1:O = H(L1): IF P1 = 1  AND H(L1) >0  THEN  DRAW 66 AT F -27,H:E(L1) = 1:P1 = 2
  167. 167 O = O +1: IF P$(L1,O +1) = ""  THEN 169
  168. 168 P$(L1,O) = P$(L1,O +1): GOTO 167
  169. 169 P$(L1,H(L1) +F(L1)) = "":F(L1) = F(L1) -1:T = M1: GOSUB 2: DRAW D AT F,H: DRAW B AT F,H: IF   NOT  FN D(A)  THEN  XDRAW B AT F,H
  170. 170 P$(M1,F(M1) +H(M1) +1) = F$:F(M1) = F(M1) +1: IF F(L1) = 0  AND H(L1) >0  AND P1 < >2  THEN T = L1: GOSUB 2: DRAW 66 AT F -9,H:E(L1) = 1: GOTO 69
  171. 171  IF F(L1) >0  THEN E$ = P$(L1,H(L1) +1):Q$ = P$(M1,F(M1) +H(M1)): GOTO 164
  172. 172  GOTO 69
  173. 173  IF M1 >8  THEN 10
  174. 174 B$ = F$:Q$ = G$( FN E(A)): IF  VAL(Q$) +1 =  VAL(B$)  AND  RIGHT$(Q$,1) =  RIGHT$(B$,1)  THEN 176
  175. 175  GOTO 10
  176. 176 B$ = Q$: GOSUB 2: XDRAW D AT  FN C(A),A%: XDRAW B AT  FN C(A),A%:E = 2: GOTO 83
  177. 177  HGR2 : DRAW 45 AT 5,3: DRAW 51 AT 15,3: DRAW 51 AT 25,3: DRAW 45 AT 35,3: DRAW 44 AT 5,13: DRAW 44 AT 35,13: DRAW 44 AT 5,23: DRAW 44 AT 35,23: DRAW 45 AT 5,33: DRAW 51 AT 15,33: DRAW 51 AT 25,33: DRAW 45 AT 35,33: HPLOT 0,0 TO 44,0 TO 44,43 TO 0,43 TO 0,0:T = 240:V = 3: FOR I = 35 TO 50: DRAW I AT T,V:T = T +10: IF T >270  THEN T = 240:V = V +10
  178. 178  NEXT : HPLOT 235,0 TO 279,0 TO 279,43 TO 235,43 TO 235,0: FOR A = 1 TO 16: GOSUB 220: GOSUB 20:R$(A) = "": NEXT :R1 = 1:S1 = 0: IF A = 2  OR A = 6  OR A = 10  OR A = 14  THEN T1 = 114
  179. 179 B$ = "DISCARDS":F = 0:H = 55: GOSUB 5: HPLOT 0,65 TO 53,65: ROT= 32:T = 279: FOR I = 1 TO 51: DRAW 84 AT T,165: HCOLOR= 0: FOR V = T -8 TO T -4: HPLOT V,145 TO V,166: NEXT : HCOLOR= 3:T = T -5: NEXT : XDRAW 84 AT T,165: DRAW 66 AT T,165: ROT= 0
  180. 180  GOSUB 225: IF U = 0  THEN 204
  181. 181 B$ = K$(R1): GOSUB 3:U1 = R1 *5 +3: XDRAW 66 AT U1,145: DRAW D AT U1,145: DRAW B AT U1,145: IF   NOT  FN D(A)  THEN  XDRAW B AT U1,145
  182. 182  GOTO 198
  183. 183  GOSUB 227:B$ = "POSITION ?":F = 10:H = 180: GOSUB 5: GOSUB 38: DRAW K -158 AT G +5,H:A = K -192:B$ = K$(R1):J1 =  VAL(B$): IF A = 17  THEN 183
  184. 184  IF R$(A) < >""  THEN 214
  185. 185  IF J1 = 13  AND A < >1  AND A < >4  AND A < >13  AND A < >16  THEN 213
  186. 186  IF J1 = 12  AND A < >2  AND A < >3  AND A < >14  AND A < >15  THEN 213
  187. 187  IF J1 = 11  AND A < >5  AND A < >8  AND A < >9  AND A < >12  THEN 213
  188. 188  IF J1 >10  THEN S1 = S1 +J1
  189. 189 R$(A) = B$: IF R1 >52  THEN  END 
  190. 190  GOSUB 220: GOSUB 20:B$ = K$(R1): GOSUB 3:U1 = R1 *5 +3: XDRAW D AT U1,145: XDRAW B AT U1,145: IF R1 < >52  THEN 193
  191. 191  DRAW D AT T1,V1: DRAW B AT T1,V1:U = 0:R1 = R1 +1: IF   NOT  FN D(A)  THEN  XDRAW B AT T1,V1
  192. 192  GOTO 197
  193. 193  DRAW 66 AT U1 +5,145: DRAW D AT T1,V1: DRAW B AT T1,V1:U = U -1:R1 = R1 +1: IF   NOT  FN D(A)  THEN  XDRAW B AT T1,V1
  194. 194  IF U < >0  THEN B$ = K$(R1): GOSUB 3: XDRAW 66 AT U1 +5,145: DRAW D AT U1 +5,145: DRAW B AT U1 +5,145: IF   NOT  FN D(A)  THEN  XDRAW B AT U1 +5,145
  195. 195  IF S1 = 144  THEN 197
  196. 196  IF U = 0  THEN 202
  197. 197  IF S1 = 144  THEN B$ = "CONGRATULATIONS, YOU WON!": GOSUB 227: PRINT "<CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G>":F = 10:H = 174: GOSUB 5:B$ = "PRESS ANY KEY FOR ANOTHER GAME.":F = 10:H = 184: GOSUB 5: GET A$:H1 = H1 +1: GOTO 46
  198. 198  IF  VAL(K$(R1)) = 13  AND R$(1) < >""  AND R$(4) < >""  AND R$(13) < >""  AND R$(16) < >""  THEN 215
  199. 199  IF  VAL(K$(R1)) = 12  AND R$(2) < >""  AND R$(3) < >""  AND R$(14) < >""  AND R$(15) < >""  THEN 215
  200. 200  IF  VAL(K$(R1)) = 11  AND R$(5) < >""  AND R$(8) < >""  AND R$(9) < >""  AND R$(12) < >""  THEN 215
  201. 201  IF U < >0  THEN 183
  202. 202  GOSUB 227:W1 = 0: FOR T = 1 TO 15: FOR V = T +1 TO 16:X1 =  VAL(R$(T)):Y1 =  VAL(R$(V)): IF X1 +Y1 = 10  OR X1 = 10  OR Y1 = 10  THEN W1 = 1
  203. 203  NEXT : NEXT : IF W1 = 0  THEN 215
  204. 204 B$ = "CARD TO REMOVE (TYPE 'Q' IF NONE) ?": GOSUB 227:F = 10:H = 174: GOSUB 5: GOSUB 38: DRAW K -158 AT G +5,H:A = K -192: IF A = 17  THEN 180
  205. 205  IF  VAL(R$(A)) >10  THEN 216
  206. 206  IF  VAL(R$(A)) = 10  THEN  GOSUB 212: GOTO 204
  207. 207 B$ = "SECOND CARD ?":F = 10:H = 184: GOSUB 5: GOSUB 38: DRAW K -158 AT G +5,H:Z1 = K -192: IF  VAL(R$(Z1)) >10  THEN 216
  208. 208  IF  VAL(R$(Z1)) = 10  THEN 217
  209. 209  IF  VAL(R$(Z1)) + VAL(R$(A)) < >10  THEN 217
  210. 210  IF R$(Z1) = R$(A)  THEN B$ = "CAN'T USE SAME CARD!": GOTO 218
  211. 211  GOSUB 212:A = Z1: GOSUB 212: GOTO 204
  212. 212 B$ = R$(A):R$(A) = "": GOSUB 3: GOSUB 220: XDRAW D AT T,V: XDRAW B AT T,V: GOSUB 20: XDRAW 66 AT 15,70: FOR I = 1 TO 100: NEXT : DRAW 66 AT 15,70: RETURN 
  213. 213 B$ = "SORRY, INVALID MOVE!": GOTO 219
  214. 214 B$ = "SORRY, SPACE OCCUPIED!": GOTO 219
  215. 215  GOSUB 227:B$ = "SORRY, YOU HAVE NO MOVE!":F = 10:H = 175: PRINT "<CTRL-G><CTRL-G><CTRL-G>": GOSUB 5:B$ = "PRESS ANY KEY FOR ANOTHER GAME.":F = 10:H = 184: GOSUB 5: GET A$:S1 = 144: GOTO 46
  216. 216 B$ = "CANNOT REMOVE A FACE CARD!": GOTO 218
  217. 217 B$ = "CARDS MUST TOTAL 10 POINTS!": GOTO 218
  218. 218  GOSUB 227: PRINT "<CTRL-G>":F = 10:H = 180: GOSUB 5: FOR I = 1 TO 1000: NEXT : GOTO 204
  219. 219  GOSUB 227: PRINT "<CTRL-G>":F = 10:H = 180: GOSUB 5: FOR I = 1 TO 1000: NEXT : GOTO 183
  220. 220 V1 = 115: IF A <13  THEN V1 = 80: IF A <9  THEN V1 = 45: IF A <5  THEN V1 = 10
  221. 221 T1 = 184: IF A = 1  OR A = 5  OR A = 9  OR A = 13  THEN T1 = 79
  222. 222  IF A = 2  OR A = 6  OR A = 10  OR A = 14  THEN T1 = 114
  223. 223  IF A = 3  OR A = 7  OR A = 11  OR A = 15  THEN T1 = 149
  224. 224 T = T1:V = V1: RETURN 
  225. 225 U = 0: FOR I = 1 TO 16: IF R$(I) = ""  THEN U = U +1
  226. 226  NEXT : RETURN 
  227. 227  HCOLOR= 0: FOR I = 174 TO 191: HPLOT 10,I TO 260,I: NEXT : HCOLOR= 3: RETURN 
  228. 228  HGR2 :W = 1:U = 1:T = 171:V = 0:B$ = K$(1): GOSUB 3: DRAW D AT T,V: DRAW B AT T,V: IF   NOT  FN D(A)  THEN  XDRAW B AT T,V
  229. 229  FOR Z = 158 TO 93  STEP  -13:V = V +21:U = U +1:T = Z: FOR J = 1 TO U:W = W +1:B$ = K$(W): GOSUB 3: DRAW D AT T,V: DRAW B AT T,V: IF   NOT  FN D(A)  THEN  XDRAW B AT T,V
  230. 230 T = T +26: NEXT : NEXT :A2 = 130:B2 = 29: FOR I = 150 TO 160: HPLOT 93,I TO 265,I: NEXT : FOR I = 0 TO 12: XDRAW I +35 AT I *13 +99,152: NEXT : FOR I = 1 TO 7: FOR V = 1 TO 7:S$(I,V) = "": NEXT :B$ = "PRESS 'ESC' TO END":F = 123:H = 164: GOSUB 5: HPLOT 119,161 TO 119,173 TO 241,173 TO 241,161: FOR V = 0 TO 10: HPLOT 0,V TO 16,V: HPLOT 48,V TO 64,V: NEXT : XDRAW 48 AT 6,2: XDRAW 49 AT 54,2
  231. 231  ROT= 0:V = 15: FOR I = 1 TO 23: DRAW 66 AT 0,V: HCOLOR= 0: FOR U = V +5 TO V +20: HPLOT 0,U TO 21,U: NEXT : HCOLOR= 3:V = V +5: NEXT : DRAW 66 AT 0,V:B$ = "DISCARDS":F = 30:H = 65: GOSUB 5: HPLOT 30,75 TO 83,75
  232. 232  IF D2 = 0  THEN B$ = "CONGRATULATIONS, YOU DID IT!": GOSUB 227:F = 0:H = 174: PRINT "<CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G>": GOSUB 5:B$ = "PRESS ANY KEY FOR ANOTHER GAME":F = 0:H = 184: GOSUB 5:I1 = I1 +1:N = 0: GET A$: GOTO 46
  233. 233 B$ = "MOVE ?":F = 79:H = 184: GOSUB 227: GOSUB 5: GOSUB 257: DRAW K -158 AT G +5,H:A = K -192: IF A = 14  THEN  GOSUB 261: GOTO 233
  234. 234  IF A < >15  THEN 238
  235. 235  IF G(0) = 0  THEN  GOSUB 273: GOTO 232
  236. 236 B$ = K$(G(G(0))): IF  VAL(B$) < >13  THEN T$ = B$:C2 = A: GOTO 242
  237. 237  GOSUB 266: GOTO 232
  238. 238 C1 = 0: FOR I = 7 TO 1  STEP  -1: IF I(I,A) < >0  THEN C1 = I:I = 1
  239. 239  NEXT : IF C1 = 0  THEN  GOSUB 273: GOTO 232
  240. 240  IF I(C1 +1,A -1) +I(C1 +1,A +1) < >0  THEN  GOSUB 271: GOTO 232
  241. 241 T$ = K$(I(C1,A)):C2 = A:E2 = C1: IF  VAL(T$) = 13  THEN B$ = T$: GOSUB 268: GOTO 232
  242. 242 B$ = "AND ?":F = 150:H = 184: GOSUB 5: GOSUB 257: DRAW K -158 AT G +5,H:A = K -192: IF A = 14  THEN  GOTO 274
  243. 243  IF A < >15  THEN 249
  244. 244  IF A = C2  THEN  GOTO 274
  245. 245  IF G(0) = 0  THEN  GOSUB 273: GOTO 232
  246. 246 B$ = K$(G(G(0))): IF  VAL(B$) = 13  THEN  GOSUB 272: GOTO 232
  247. 247  IF  VAL(B$) + VAL(T$) < >13  THEN  GOSUB 272: GOTO 232
  248. 248  GOSUB 266:B$ = T$:A = C2:C1 = E2: GOSUB 268: GOTO 232
  249. 249 C1 = 0: FOR I = 7 TO 1  STEP  -1: IF I(I,A) < >0  THEN C1 = I:I = 1
  250. 250  NEXT : IF C1 = 0  THEN  GOSUB 273: GOTO 232
  251. 251  IF I(C1 +1,A -1) +I(C1 +1,A +1) < >0  THEN  GOSUB 271: GOTO 232
  252. 252 B$ = K$(I(C1,A)): IF  VAL(B$) = 13  THEN  GOSUB 272: GOTO 232
  253. 253  IF  VAL(B$) + VAL(T$) < >13  THEN  GOSUB 272: GOTO 232
  254. 254  IF C2 = 15  THEN 256
  255. 255  GOSUB 268:B$ = T$:A = C2:C1 = E2: GOSUB 268: GOTO 232
  256. 256  GOSUB 268:B$ = T$: GOSUB 266: GOTO 232
  257. 257  DRAW 65 AT G +5,H
  258. 258  IF  PEEK( -16384) = 155  THEN  POKE  -16368,0: POP : GOTO 46
  259. 259  IF  PEEK( -16384) <193  OR  PEEK( -16384) >207  THEN  XDRAW 1 AT G +7,H +3: FOR I = 1 TO 50: NEXT : DRAW 1 AT G +7,H +3: FOR I = 1 TO 50: NEXT : GOTO 258
  260. 260 K =  PEEK( -16384): POKE  -16368,0: XDRAW 65 AT G +5,H: RETURN 
  261. 261  IF A2 <15  THEN B$ = "NO CARDS LEFT!":F = 79:H = 184: GOSUB 227: PRINT "<CTRL-G>": GOSUB 5: FOR I = 1 TO 500: NEXT : RETURN 
  262. 262  XDRAW 66 AT 0,A2: IF G(0) >0  THEN B$ = K$(G(G(0))): GOSUB 3: XDRAW D AT 48,15: XDRAW B AT 48,15
  263. 263 B$ = K$(B2): GOSUB 3: DRAW D AT 48,15: DRAW B AT 48,15: IF   NOT  FN D(A)  THEN  XDRAW B AT 48,15
  264. 264 A2 = A2 -5: IF A2 >14  THEN  DRAW 66 AT 0,A2
  265. 265 G(0) = G(0) +1:G(G(0)) = B2:B2 = B2 +1: RETURN 
  266. 266  GOSUB 3: XDRAW D AT 48,15: XDRAW B AT 48,15:G(G(0)) = 0:G(0) = G(0) -1: XDRAW 66 AT 48,80: FOR I = 1 TO 50: NEXT : DRAW 66 AT 48,80: IF G(0) >0  THEN B$ = K$(G(G(0))): GOSUB 3: DRAW D AT 48,15: DRAW B AT 48,15: IF   NOT  FN D(A)  THEN  XDRAW B AT 48,15
  267. 267  RETURN 
  268. 268  GOSUB 3: XDRAW D AT D(A),J(C1): XDRAW B AT D(A),J(C1): XDRAW 66 AT 48,80: FOR I = 1 TO 50: NEXT : DRAW 66 AT 48,80:I(C1,A) = 0:D2 = D2 -1:F2 = 0: FOR I = 7 TO 1  STEP  -1: IF I(I,A) < >0  THEN F2 = I
  269. 269  NEXT : IF F2 = 0  THEN  HCOLOR= 0: HPLOT D(A) +8,0 TO D(A) +8,149: HCOLOR= 3: RETURN 
  270. 270  FOR I = J(C1) -21 TO 149  STEP 4: HPLOT D(A) +8,I: NEXT : RETURN 
  271. 271 B$ = "CARD IS BLOCKED!":F = 79:H = 184: GOSUB 227: PRINT "<CTRL-G>": GOSUB 5: FOR I = 1 TO 500: NEXT : RETURN 
  272. 272 B$ = "CARDS MUST TOTAL 13 POINTS!":F = 79:H = 184: GOSUB 227: PRINT "<CTRL-G>": GOSUB 5: FOR I = 1 TO 500: NEXT : RETURN 
  273. 273 B$ = "NO CARD AT THAT LOCATION!":F = 79:H = 184: GOSUB 227: PRINT "<CTRL-G>": GOSUB 5: FOR I = 1 TO 500: NEXT : RETURN 
  274. 274 B$ = "INVALID COMBINATION": GOSUB 227:F = 79:H = 184: PRINT "<CTRL-G>": GOSUB 5: FOR I = 1 TO 500: NEXT : GOTO 232
  275. 275  DIM C$(52),K$(52),D(52),P$(7,19),G(30),A$(24),B$(24),R$(16),I(8,14):C% = 174: DEF  FN A(A) = F(T) *18 +H(T) *9 +11: DEF  FN B(A) = (T -1) *22: DEF  FN C(A) = ( ASC( RIGHT$(B$,1)) -65) *24 +15: DEF  FN D(A) =  ABS(D/2 - INT(D/2)): DEF  FN E(A) = ( ASC( RIGHT$(B$,1)) -64):M = 0: DEF  FN F(A) =  VAL(G$(1)) + VAL(G$(2)) + VAL(G$(3)) + VAL(G$(4))
  276. 276  FOR I = 1 TO 13:C$(I) =  STR$(I) +"A":C$(I +13) =  STR$(I) +"B":C$(I +26) =  STR$(I) +"C":C$(I +39) =  STR$(I) +"D": NEXT : RETURN 
  277. 277  FOR I = 0 TO 7:E(I) = 0:F(I) = 0:H(I) = 0: NEXT :N$ = "0":O$ = "0": FOR I = 1 TO 4:G$(I) = "": NEXT :M = 0:C = 0:G = 0: FOR I = 0 TO 30:G(I) = 0: NEXT : FOR I = 1 TO 7: FOR V = 1 TO 18:P$(I,V) = "": NEXT : NEXT :I =  FRE(0): FOR I = 1 TO 1 + PEEK(79):B% =  RND(1): NEXT : FOR I = 1 TO 52:D(I) = 0: NEXT :A% = 171
  278. 278  FOR T = 1 TO 52:B% =  RND(1) *52 +1:M$ = C$(B%):C$(B%) = C$(T):C$(T) = M$: NEXT : FOR T = 1 TO 52:K$(T) = C$(T): NEXT 
  279. 279 M$ = "0": IF N >2  THEN 281
  280. 280  FOR I = 1 TO 7:P$(I,1) = K$(I):F(I) = 1:H(I) = I -1: NEXT : FOR I = 2 TO 7:P$(I,2) = K$(I +6): NEXT : FOR I = 3 TO 7:P$(I,3) = K$(I +11): NEXT : FOR I = 4 TO 7:P$(I,4) = K$(I +15): NEXT : FOR I = 5 TO 7:P$(I,5) = K$(I +18): NEXT : FOR I = 6 TO 7:P$(I,6) = K$(I +20): NEXT :P$(7,7) = K$(28):Y = 24:T = 0: RETURN 
  281. 281  IF N = 3  THEN  RETURN 
  282. 282 T = 93: FOR I = 1 TO 13:D(I) = T:T = T +13: NEXT :T = 0: FOR I = 1 TO 7:J(I) = T:T = T +21: NEXT :U = 8: FOR T = 1 TO 7:U = U -1: FOR V = 0 TO T -1:G = G +1:I(T,U +(V *2)) = G: NEXT : NEXT :D2 = 28: RETURN 
  283. 283  IF  FN F(A) = 52  THEN  POP : GOTO 294
  284. 284  IF M = 1  THEN  RETURN 
  285. 285  IF N < >2  THEN 289
  286. 286  IF S < >0  THEN  RETURN 
  287. 287  IF R < >0  THEN  RETURN 
  288. 288  GOTO 291
  289. 289  IF Y < >0  THEN  RETURN 
  290. 290  IF G(0) >0  THEN  RETURN 
  291. 291 G2 = 0: FOR I = 1 TO 7: IF H(I) = 0  THEN G2 = G2 +1
  292. 292  NEXT : IF G2 < >7  THEN  RETURN 
  293. 293 M = 1: RETURN 
  294. 294 H$ = "52":Y = 0:G(0) = 0:R = 0:S = 0: GOSUB 24: PRINT "<CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G>":B$ = "CONGRATULATIONS!":F = 100:H = 80: GOSUB 5:B$ = "YOU DID IT!":F = 115:H = 100: GOSUB 5: IF N = 1  THEN P = P +(52 - VAL(H$)) *5:F1 = F1 +1:Q = Q +(52 - VAL(H$)) *5
  295. 295  IF N = 2  THEN G1 = G1 +1
  296. 296 B$ = "PLEASE PRESS ANY KEY":F = 86:H = 120: GOSUB 5: POKE  -16368,0: GET A$: GOTO 46
  297. 300  IF F(L1) <2  THEN  RETURN 
  298. 301  POP :H = (L1 -1) *22:F = H(L1) *9 +11:HU = 0:HL = H +20: FOR ZZ = F TO F +(F(L1) *18) -36  STEP 18:HU = HU +1: HCOLOR= 0: FOR ZA = ZZ -2 *HU TO ZZ +16: HPLOT ZA,H TO ZA,HL: NEXT : HCOLOR= 3: IF P1 = 1  AND ZZ = F  AND H(L1) >0  THEN  DRAW 66 AT ZZ -9,H:E(L1) = 1:P1 = 2
  299. 302  HPLOT ZA,H TO ZA -1,H TO ZA -1,HL TO ZA,HL: NEXT : HCOLOR= 0: FOR HU = ZZ -(F(L1) *2) -2 TO ZZ +17: HPLOT HU,H TO HU,HL: NEXT : HCOLOR= 3
  300. 303 T = M1: FOR ZZ = 1 TO F(L1):B$ = P$(L1,H(L1) +ZZ): GOSUB 2:F(M1) = F(M1) +1:P$(M1,H(M1) +F(M1)) = B$: DRAW D AT F,H: DRAW B AT F,H: IF   NOT  FN D(A)  THEN  XDRAW B AT F,H
  301. 304  NEXT : FOR ZZ = 1 TO F(L1):P$(L1,H(L1) +ZZ) = "": NEXT :F(L1) = 0: GOTO 69