home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib31b.dsk / LEARN.THE.USA.bas < prev    next >
BASIC Source File  |  2023-02-26  |  13KB  |  166 lines

  1. 10  REM  **********************
  2. 20  REM  *   LEARN.THE.USA    *
  3. 30  REM  *   BY LARRY SAGE    *
  4. 40  REM  * COPYRIGHT (C) 1987 *
  5. 50  REM  * BY MICROSPARC, INC *
  6. 60  REM  * CONCORD, MA  01742 *
  7. 70  REM  **********************
  8. 80  IF  PEEK(104) = 64  THEN 110
  9. 90  POKE 103,1: POKE 104,64: POKE 16384,0
  10. 100  HOME : VTAB 12: PRINT "RELOCATING THE PROGRAM": PRINT  CHR$(4)"RUN LEARN.THE.USA"
  11. 110  GOTO 680
  12. 120  HTAB (41 - LEN(A$))/2: PRINT A$: RETURN 
  13. 130  VTAB 23: HTAB 1: CALL  -868: INVERSE : PRINT "PRESS RETURN";: NORMAL : PRINT " TO CONTINUE ";: GET T$: PRINT 
  14. 140  RETURN 
  15. 150 TT = TT +1: IF TT = 15  THEN 600
  16. 160  IF TT = 1  THEN 180
  17. 170  XDRAW 1 AT A%(I,1),A%(I,2)
  18. 180 I =  INT( RND(1) *48 +1): IF E%(I) = 1  THEN 180
  19. 190 E%(I) = 1: ROT= 0
  20. 200  IF I = 6  THEN  ROT= 16
  21. 210  IF I = 27  OR I = 43  THEN  ROT= 48
  22. 220  XDRAW 1 AT A%(I,1),A%(I,2)
  23. 230  IF  PEEK(780) = 1  THEN 450
  24. 240  HOME : VTAB 21: INVERSE : IF Q = 1  THEN  PRINT " NAME THE STATE ";: HTAB 24: PRINT " SCORE = ";ZZ: NORMAL 
  25. 250  IF Q = 2  THEN  PRINT " NAME THE CAPITAL";: HTAB 24: PRINT " SCORE = ";ZZ: NORMAL 
  26. 260  VTAB 24: HTAB 5: PRINT "TYPE ANSWER - THEN PRESS RETURN";
  27. 270 AN$ = ""
  28. 280  VTAB 22: HTAB 2:L = 17: FOR FI = 1 TO L: PRINT  CHR$(95);: NEXT : FOR FI = 1 TO L: PRINT  CHR$(8);: NEXT 
  29. 290  GET X$: IF  ASC(X$) = 27  THEN  CLEAR : TEXT : HOME : VTAB 5: HTAB 6: PRINT "ONE MOMENT PLEASE...":CL = 1: GOTO 700
  30. 300  IF X$ > = "A"  AND X$ < = "Z"  OR X$ =  CHR$(32)  OR X$ = "."  THEN 380
  31. 310  IF X$ < > CHR$(8)  THEN 350
  32. 320  IF AN$ = ""  THEN  PRINT BL$;: GOTO 290
  33. 330  IF  LEN(AN$) = 1  THEN AN$ = "": PRINT BS$;: GOTO 290
  34. 340 AN$ =  LEFT$(AN$, LEN(AN$) -1): PRINT BS$;: GOTO 290
  35. 350  IF X$ =  CHR$(13)  AND  LEN(AN$) = 0  THEN  PRINT BL$;: GOTO 290
  36. 360  IF X$ =  CHR$(13)  THEN 400
  37. 370  PRINT BL$;: GOTO 290
  38. 380  PRINT X$;:AN$ = AN$ +X$: IF  LEN(AN$) = L  THEN 400
  39. 390  GOTO 290
  40. 400  VTAB 22: HTAB 2 + LEN(AN$): CALL  -868
  41. 410  IF AN$ = A$(I,Q)  THEN  VTAB 22: HTAB 24: INVERSE : PRINT "CORRECT": VTAB 24: HTAB 1: CALL  -868: HTAB 7: PRINT "PRESS RETURN";: NORMAL : PRINT " TO CONTINUE ";:ZZ = ZZ +100: GOTO 430
  42. 420  VTAB 22: HTAB 24: INVERSE : PRINT "INCORRECT": VTAB 23: HTAB 24: FLASH : PRINT A$(I,Q): INVERSE : VTAB 24: HTAB 1: CALL  -868: HTAB 6: PRINT "PRESS RETURN";: NORMAL : PRINT " TO CONTINUE ";:F%(I) = 1
  43. 430  GET T$: PRINT 
  44. 440  GOTO 150
  45. 450 IA =  INT( RND(1) *48 +1): IF IA = I  THEN 450
  46. 460 IB =  INT( RND(1) *48 +1): IF IB = IA  OR IB = I  THEN 460
  47. 470 IC =  INT( RND(1) *48 +1): IF IC = I  OR IC = IA  OR IC = IB  THEN 470
  48. 480  HOME : POKE 1616,1: POKE 1636,2: POKE 1744,3: POKE 1764,4:QR =  INT( RND(1) *4 +1): ON QR GOTO 490,500,510,520
  49. 490  VTAB 21: HTAB 3: PRINT A$(I,Q);: HTAB 23: PRINT A$(IA,Q): VTAB 22: HTAB 3: PRINT A$(IB,Q);: HTAB 23: PRINT A$(IC,Q):V1 = 21:H1 = 3:E$ = "A": GOTO 530
  50. 500  VTAB 21: HTAB 3: PRINT A$(IA,Q);: HTAB 23: PRINT A$(I,Q): VTAB 22: HTAB 3: PRINT A$(IB,Q);: HTAB 23: PRINT A$(IC,Q):V1 = 21:H1 = 23:E$ = "B": GOTO 530
  51. 510  VTAB 21: HTAB 3: PRINT A$(IA,Q);: HTAB 23: PRINT A$(IB,Q): VTAB 22: HTAB 3: PRINT A$(I,Q);: HTAB 23: PRINT A$(IC,Q):V1 = 22:H1 = 3:E$ = "C": GOTO 530
  52. 520  VTAB 21: HTAB 3: PRINT A$(IA,Q);: HTAB 23: PRINT A$(IB,Q): VTAB 22: HTAB 3: PRINT A$(IC,Q);: HTAB 23: PRINT A$(I,Q):V1 = 22:H1 = 23:E$ = "D"
  53. 530  VTAB 23: HTAB 15: PRINT "SCORE = ";: INVERSE : PRINT ZZ: VTAB 23: HTAB 3: PRINT "HERE ->";: NORMAL : PRINT " ";: PRINT  CHR$(95);: PRINT  CHR$(8);
  54. 540  GET T$: IF  ASC(T$) = 27  THEN  CLEAR : TEXT : HOME : VTAB 5: HTAB 6: PRINT "ONE MOMENT PLEASE...":CL = 1: GOTO 700
  55. 550  IF T$ <"A"  OR T$ >"D"  THEN  PRINT BL$;: GOTO 540
  56. 560  PRINT T$: IF T$ = E$  THEN  VTAB 23: HTAB 31: INVERSE : PRINT "CORRECT": VTAB 24: HTAB 1: CALL  -868: HTAB 7: PRINT "PRESS RETURN";: NORMAL : PRINT " TO CONTINUE ";:ZZ = ZZ +100: GOTO 580
  57. 570  VTAB 23: HTAB 31: INVERSE : PRINT "INCORRECT": VTAB V1: HTAB H1: FLASH : PRINT A$(I,Q): INVERSE : VTAB 24: HTAB 1: CALL  -868: HTAB 6: PRINT "PRESS RETURN";: NORMAL : PRINT " TO CONTINUE ";:F%(I) = 1
  58. 580  GET T$: PRINT 
  59. 590  GOTO 150
  60. 600  TEXT : HOME : HTAB 10: INVERSE : PRINT "FINAL RESULTS = "ZZ: PRINT : NORMAL : VTAB 3: HTAB 10: PRINT "YOU MISSED:": VTAB 5
  61. 610 FF = 0: FOR I = 0 TO 48
  62. 620  IF F%(I) = 0  THEN 640
  63. 630  HTAB 11: PRINT "  "A$(I,Q):FF = 1
  64. 640  NEXT : IF FF = 0  THEN  HTAB 11: PRINT "NONE"
  65. 650  VTAB 23: HTAB 4: PRINT "WISH TO PLAY AGAIN? ";: INVERSE : PRINT "(Y/N)";: NORMAL : PRINT " ";: GET T$: IF T$ < >"Y"  AND T$ < >"N"  THEN  PRINT BL$;: GOTO 650
  66. 660  IF T$ = "N"  THEN  END 
  67. 670  CLEAR :CL = 1: HOME : VTAB 8: HTAB 4: PRINT "ONE MOMENT PLEASE...": GOTO 700
  68. 680  HOME : VTAB 12: PRINT "LOADING THE SHAPE TABLE": ONERR  GOTO 1640
  69. 690  PRINT  CHR$(4)"BLOAD USA.SHAPES": POKE 232,64: POKE 233,31: ROT= 0: SCALE= 1: POKE 216,0
  70. 700  DIM A%(48,2),A$(48,2),E%(48),F%(48):BL$ =  CHR$(7):BS$ =  CHR$(8) + CHR$(95) + CHR$(8)
  71. 710  FOR I = 1 TO 48: FOR J = 1 TO 2: READ A$(I,J): NEXT : FOR J = 1 TO 2: READ A%(I,J): NEXT : NEXT 
  72. 720  IF CL  THEN 760
  73. 730  HOME : VTAB 10:A$ = "LEARN THE U.S.A.": GOSUB 120: VTAB 12:A$ = "BY LARRY SAGE": GOSUB 120: VTAB 14:A$ = "* COPYRIGHT 1987 BY MicroSPARC, INC. *": GOSUB 120: VTAB 18:A$ = "BE SURE CAPS LOCK KEY IS DOWN": GOSUB 120
  74. 740  VTAB 23:A$ = " PRESS RETURN TO CONTINUE": INVERSE : GOSUB 120: NORMAL 
  75. 750  VTAB 23: HTAB 33: GET T$: PRINT 
  76. 760  TEXT : HOME : INVERSE :A$ = " SELECT GAME TYPE ": GOSUB 120: VTAB 3: HTAB 2: PRINT "A";: NORMAL : PRINT ". MULTIPLE CHOICE": PRINT : HTAB 7: PRINT "COMPUTER LISTS FOUR ";: INVERSE : PRINT "STATES";: NORMAL : PRINT ". YOU": HTAB 7: PRINT "TYPE LETTER OF THE CORRECT ONE."
  77. 770  VTAB 8: HTAB 2: INVERSE : PRINT "B";: NORMAL : PRINT ". TYPE FULL NAME": VTAB 10: HTAB 7: PRINT "YOU TYPE THE COMPLETE NAME": HTAB 7: PRINT "OF EACH ";: INVERSE : PRINT "STATE";: NORMAL : PRINT " SHOWN."
  78. 780  INVERSE : VTAB 13: HTAB 2: PRINT "C";: NORMAL : PRINT ". MULTIPLE CHOICE": PRINT : HTAB 7: PRINT "COMPUTER LISTS FOUR ";: INVERSE : PRINT "CAPITALS";: NORMAL : PRINT ". YOU": HTAB 7: PRINT "TYPE LETTER OF THE CORRECT ONE."
  79. 790  VTAB 18: HTAB 2: INVERSE : PRINT "D";: NORMAL : PRINT ". TYPE FULL NAME": VTAB 20: HTAB 7: PRINT "YOU TYPE THE COMPLETE NAME": HTAB 7: PRINT "OF EACH ";: INVERSE : PRINT "CAPITAL";: NORMAL : PRINT " SHOWN."
  80. 800  VTAB 23: HTAB 6: PRINT "YOUR CHOICE (ESC TO QUIT):";: PRINT  CHR$(95);: PRINT  CHR$(8);
  81. 810  GET T$: ON T$ =  CHR$(27) GOTO 1660: IF T$ <"A"  OR T$ >"D"  THEN  PRINT BL$;: GOTO 810
  82. 820  IF T$ = "A"  THEN  POKE 780,1:Q = 1: GOTO 920
  83. 830  IF T$ = "C"  THEN  POKE 780,1:Q = 2: GOTO 950
  84. 840  POKE 780,0: IF T$ = "B"  THEN Q = 1: GOTO 860
  85. 850 Q = 2: GOTO 890
  86. 860  HOME : VTAB 5: HTAB 3: PRINT "YOU WILL SEE A MAP OF THE CONTINENTAL": PRINT : PRINT "UNITED STATES WITH AN ARROW INSIDE A"
  87. 870  PRINT : PRINT "STATE OR POINTING INSIDE A STATE. WRITE THE": PRINT : PRINT "NAME OF THIS STATE. BE SURE TO SPELL IT": PRINT : PRINT "CORRECTLY."
  88. 880  GOSUB 130: GOTO 970
  89. 890  HOME : VTAB 5: HTAB 3: PRINT "YOU WILL SEE A MAP OF THE CONTINENTAL": PRINT : PRINT "UNITED STATES WITH AN ARROW INSIDE"
  90. 900  PRINT : PRINT "A STATE OR POINTING AT A STATE. TYPE": PRINT : PRINT "THE NAME OF THE STATE'S CAPITAL. BE": PRINT : PRINT "SURE TO SPELL IT CORRECTLY."
  91. 910  GOSUB 130: GOTO 970
  92. 920  HOME : VTAB 6: HTAB 3: PRINT "YOU WILL SEE A MAP OF THE CONTINENTAL": PRINT : PRINT "UNITED STATES WITH AN ARROW INSIDE A"
  93. 930  PRINT : PRINT "STATE OR POINTING AT A STATE. THE COM-": PRINT : PRINT "PUTER WILL LIST FOUR STATES. YOU WILL": PRINT : PRINT "TYPE THE ";: INVERSE : PRINT "LETTER";: NORMAL : PRINT "OF THE STATE INDICATED."
  94. 940  GOSUB 130: GOTO 980
  95. 950  HOME : VTAB 6: HTAB 3: PRINT "YOU WILL SEE A MAP OF THE CONTINENTAL": PRINT : PRINT "UNITED STATES WITH AN ARROW INSIDE A"
  96. 960  PRINT : PRINT "STATE OR POINTING AT A STATE. THE COM-": PRINT : PRINT "PUTER WILL LIST FOUR CAPITALS. YOU WILL": PRINT : PRINT "TYPE THE ";: INVERSE : PRINT "LETTER";: NORMAL : PRINT "OF THE CAPITAL OF": PRINT : PRINT "THE STATE INDICATED.": GOSUB 130: GOTO 980
  97. 970  HOME : INVERSE : VTAB 3:A$ = " BACKSPACE ": GOSUB 120: NORMAL :A$ = " <-- ": GOSUB 120: PRINT :A$ = "KEY WITH LEFT POINTING ARROW": GOSUB 120: PRINT :A$ = "WILL ERASE AN ERROR": GOSUB 120: GOSUB 130
  98. 980  HOME : VTAB 3: INVERSE :A$ = "REMEMBER": GOSUB 120: NORMAL : PRINT :A$ = " LOOK FOR THE ARROW ": GOSUB 120
  99. 990  IF Q = 2  THEN A$ = "AND THEN NAME THE CAPITAL": GOSUB 120
  100. 1000  GOSUB 130
  101. 1010  REM  USA.SHAPES,A$8000,L23;
  102. 1020  HOME : HGR : HCOLOR= 7: HPLOT 0,0 TO 279,0 TO 279,159 TO 0,159 TO 0,0
  103. 1030  HPLOT 259,10 TO 257,25 TO 261,35 TO 273,22 TO 274,19 TO 268,17 TO 265,8 TO 259,10
  104. 1040  HPLOT 256,25 TO 254,27 TO 252,40 TO 260,38 TO 262,35
  105. 1050  HPLOT 254,27 TO 248,29 TO 250,41 TO 252,40
  106. 1060  HPLOT 250,40 TO 251,45 TO 259,44 TO 261,47 TO 263,47 TO 260,38
  107. 1070  HPLOT 251,45 TO 252,50 TO 260,48: HPLOT 256,45 TO 256,48
  108. 1080  HPLOT 248,29 TO 240,31 TO 235,41 TO 223,43 TO 225,45 TO 225,47 TO 221,49 TO 221,51 TO 243,48 TO 252,52 TO 252,50
  109. 1090  HPLOT 253,52 TO 251,57 TO 253,63 TO 248,65 TO 245,62 TO 247,58 TO 245,50
  110. 1100  HPLOT 221,49 TO 219,50 TO 219,52 TO 221,63 TO 245,61
  111. 1110  HPLOT 247,63 TO 250,69 TO 246,69 TO 245,63
  112. 1120  HPLOT 248,69 TO 250,71 TO 247,72 TO 237,67 TO 225,67 TO 225,64
  113. 1130  HPLOT 219,61 TO 213,69 TO 211,75 TO 213,80 TO 217,81 TO 225,79 TO 227,73 TO 230,71 TO 235,68
  114. 1140  HPLOT 215,80 TO 210,87 TO 247,80 TO 243,71
  115. 1150  HPLOT 220,86 TO 211,92 TO 205,98 TO 216,95 TO 229,94 TO 240,100 TO 249,88 TO 247,80
  116. 1160  HPLOT 211,96 TO 228,111 TO 242,99
  117. 1170  HPLOT 228,111 TO 228,122 TO 209,122 TO 206,121 TO 206,116 TO 207,112 TO 200,99 TO 207,97
  118. 1180  HPLOT 228,122 TO 241,143 TO 241,150 TO 237,151 TO 222,138 TO 222,134 TO 213,126 TO 195,126 TO 195,123 TO 207,121
  119. 1190  HPLOT 195,126 TO 190,126 TO 188,99 TO 200,98
  120. 1200  HPLOT 190,126 TO 182,127 TO 180,124 TO 170,124 TO 173,119 TO 171,112 TO 176,100 TO 188,99
  121. 1210  HPLOT 176,100 TO 180,90 TO 210,87
  122. 1220  HPLOT 180,90 TO 180,87 TO 186,83 TO 193,83 TO 200,75 TO 212,77
  123. 1230  HPLOT 200,75 TO 197,57 TO 204,55 TO 210,57 TO 217,53 TO 219,50
  124. 1240  HPLOT 197,57 TO 185,60 TO 188,73 TO 186,82
  125. 1250  HPLOT 204,56 TO 206,48 TO 204,42 TO 202,45 TO 200,36 TO 192,36 TO 190,40 TO 190,46 TO 192,54 TO 189,58
  126. 1260  HPLOT 180,87 TO 174,81 TO 174,78 TO 169,67 TO 169,64 TO 170,61 TO 171,56 TO 183,54 TO 185,60
  127. 1270  HPLOT 183,60 TO 181,37 TO 179,34 TO 167,30 TO 159,32 TO 157,42 TO 165,49 TO 171,56
  128. 1280  HPLOT 182,127 TO 180,130 TO 185,135 TO 172,133 TO 171,132 TO 160,132 TO 162,124 TO 160,120 TO 157,113 TO 172,112
  129. 1290  HPLOT 157,113 TO 157,110 TO 155,110 TO 152,92 TO 178,90
  130. 1300  HPLOT 152,92 TO 150,73 TO 146,68 TO 167,68
  131. 1310  HPLOT 146,68 TO 142,55 TO 142,50 TO 167,50
  132. 1320  HPLOT 142,50 TO 138,18 TO 147,18 TO 169,22 TO 160,31
  133. 1330  HPLOT 138,18 TO 110,18 TO 109,35 TO 140,35
  134. 1340  HPLOT 109,35 TO 108,52 TO 140,55
  135. 1350  HPLOT 108,53 TO 107,63 TO 116,64 TO 116,71 TO 149,71
  136. 1360  HPLOT 116,71 TO 117,89 TO 153,89
  137. 1370  HPLOT 117,89 TO 110,89 TO 110,93 TO 126,93 TO 126,104 TO 140,108 TO 154,108
  138. 1380  HPLOT 110,93 TO 109,120 TO 90,120 TO 97,127 TO 97,131 TO 107,137 TO 110,132 TO 115,131 TO 128,150 TO 140,155 TO 141,144 TO 160,132
  139. 1390  HPLOT 90,120 TO 80,120 TO 80,122 TO 77,122 TO 79,88 TO 110,89
  140. 1400  HPLOT 79,88 TO 81,64 TO 108,65
  141. 1410  HPLOT 81,64 TO 73,63 TO 73,38 TO 109,40
  142. 1420  HPLOT 73,40 TO 67,40 TO 61,33 TO 61,23 TO 56,20 TO 54,15 TO 110,19
  143. 1430  HPLOT 77,120 TO 65,120 TO 46,112 TO 51,103 TO 49,94 TO 55,86 TO 80,88
  144. 1440  HPLOT 55,86 TO 57,56 TO 73,56
  145. 1450  HPLOT 56,56 TO 43,54 TO 47,35 TO 45,30 TO 46,15 TO 53,15
  146. 1460  HPLOT 43,54 TO 5,52: HPLOT 24,53 TO 21,72 TO 50,96
  147. 1470  HPLOT 5,52 TO 13,27 TO 19,27 TO 19,32 TO 46,30
  148. 1480  HPLOT 13,27 TO 9,18 TO 14,19 TO 14,21 TO 19,21 TO 17,13 TO 45,15
  149. 1490  HPLOT 46,112 TO 35,110 TO 30,105 TO 18,100 TO 4,80 TO 6,52
  150. 1500  HPLOT 169,31 TO 175,24 TO 175,27 TO 182,27 TO 192,25 TO 198,30 TO 187,32 TO 182,35: GOTO 150
  151. 1510  DATA  ALABAMA,MONTGOMERY,197,109,ARIZONA,PHOENIX,63,100,ARKANSAS,LITTLE ROCK,161,100
  152. 1520  DATA  CALIFORNIA,SACRAMENTO,29,92,COLORADO,DENVER,97,74,CONNECTICUT,HARTFORD,256,56,DELAWARE,DOVER,254,67
  153. 1530  DATA  FLORIDA,TALLAHASSEE,222,128,GEORGIA,ATLANTA,217,113,IDAHO,BOISE,55,45
  154. 1540  DATA  ILLINOIS,SPRINGFIELD,177,70,INDIANA,INDIANAPOLIS,192,70,IOWA,DES MOINES,155,58,KANSAS,TOPEKA,130,79
  155. 1550  DATA  KENTUCKY,FRANKFORT,199,84,LOUISIANA,BATON ROUGE,170,128,MAINE,AUGUSTA,263,21,MARYLAND,ANNAPOLIS,240,65
  156. 1560  DATA  MASSACHUSETTS,BOSTON,266,42,MICHIGAN,LANSING,196,48,MINNESOTA,ST. PAUL,150,32,MISSISSIPPI,JACKSON,182,109
  157. 1570  DATA  MISSOURI,JEFFERSON CITY,161,81,MONTANA,HELENA,86,28,NEBRASKA,LINCOLN,124,63,NEVADA,CARSON CITY,42,70
  158. 1580  DATA  NEW HAMPSHIRE,CONCORD,255,20,NEW JERSEY,TRENTON,257,58,NEW MEXICO,SANTA FE,92,98,NEW YORK,ALBANY,242,41
  159. 1590  DATA  NORTH CAROLINA,RALEIGH,233,91,NORTH DAKOTA,BISMARCK,124,26,OHIO,COLUMBUS,207,63,OKLAHOMA,OKLAHOMA CITY,136,96
  160. 1600  DATA  SOUTH CAROLINA,COLUMBIA,227,100,PENNSYLVANIA,HARRISBURG,235,56,RHODE ISLAND,PROVIDENCE,264,50,OREGON,SALEM,29,42
  161. 1610  DATA  SOUTH DAKOTA,PIERRE,124,43,TENNESEE,NASHVILLE,195,94,TEXAS,AUSTIN,130,120,UTAH,SALT LAKE CITY,66,75
  162. 1620  DATA  VERMONT,MONTPELIER,250,23,VIRGINIA,RICHMOND,234,77,WASHINGTON,OLYMPIA,29,22,WEST VIRGINIA,CHARLESTON,221,72
  163. 1630  DATA  WISCONSIN,MADISON,171,42,WYOMING,CHEYENNE,90,49
  164. 1640 E =  PEEK(222):EL =  PEEK(218) +256 * PEEK(219): IF E = 6  THEN  HOME : VTAB 12: PRINT "USA.SHAPES NOT ON THIS DISK": VTAB 22: HTAB 1: PRINT "ESC TO QUIT, RETURN TO TRY AGAIN";: GET Z$: ON Z$ < > CHR$(27) GOTO 680: GOTO 1660
  165. 1650  HOME : VTAB 12: PRINT "ERROR "E" IN LINE "EL
  166. 1660  END