home *** CD-ROM | disk | FTP | other *** search
/ The CIA World Factbook 1992 / k3bimage.iso / sel / 01 / 0103 / lemonade.bas (.txt) next >
Encoding:
GW-BASIC  |  1991-12-02  |  5.4 KB  |  172 lines

  1. 5  'Lemonade By Scott Ashcraft 7/25/84;
  2. 10  DIM W1(7),W2(7),W0$(7),WF(6),DF(7)
  3. 20  GOSUB 1010:KEY OFF
  4. 30  RANDOMIZE TIMER
  5. 40  REM set prices and max sales
  6. 50  COLOR 14,0:CLS:D=1000:PL=75 :PS=106:PC=98:MAX=100
  7. 60  F=14:B=0:S=0:L=0:C=0:S1=0:L1=0:C1=0
  8. 70  W$="Sunny        Partly CloudyCloudy       Rainy        cloudy       Partly Cloudy"
  9. 80  GOSUB 1180
  10. 90  COLOR 3,0:GOSUB 820:GOSUB 900
  11. 100  REM do weeks
  12. 110  FOR WK=1 TO 10
  13. 120  TEMP=60+5*INT(10*RND)
  14. 130  COLOR 2,0:LOCATE 3,70:PRINT WK
  15. 140  WTHR=1+13*INT(6*RND):LOCATE ,45:PRINT MID$(W$,WTHR,13);
  16. 150  LOCATE ,60:PRINT TEMP;CHR$(248);"  "
  17. 160  COLOR F,B:LOCATE 13,42:PRINT"Purchases:";
  18. 170  GOSUB 740:GOSUB 580:GOSUB 630:GOSUB 680
  19. 180  GOSUB 740:LOCATE 19,1:PRINT"Do you want to make any changes (enter number)?"
  20. 190  LOCATE ,10:PRINT"0 - no changes"
  21. 200  LOCATE ,10:PRINT"1 - change sugar"
  22. 210  LOCATE ,10:PRINT"2 - change lemonade"
  23. 220  LOCATE ,10:PRINT"3 - change cups"
  24. 230  LOCATE ,8:INPUT;I
  25. 240  LOCATE 19,1:PRINT SPACE$(75):PRINT SPACE$(75):PRINT SPACE$(75)
  26. 250  PRINT SPACE$(75):PRINT SPACE$(75):PRINT SPACE$(75);
  27. 260  IF I=0 THEN 320
  28. 270  ON I GOTO 290,300,310
  29. 280  BEEP:GOTO 180
  30. 290  D=D+PS*S1:GOSUB 940:GOSUB 580:GOTO 180
  31. 300  D=D+PL*L1:GOSUB 940:GOSUB 630:GOTO 180
  32. 310  D=D+PC*C1:GOSUB 940:GOSUB 680:GOTO 180
  33. 320  GOSUB 780:GOSUB 900:IF AMT<>0 THEN 340
  34. 330  COLOR 4,0:BEEP:LOCATE 24,1:PRINT"You have no supplies!!!";:GOTO 160
  35. 340  GOSUB 740:INPUT"How much will you charge for lemonade (1 - 99) ",PR
  36. 350  IF PR>0 AND PR<100 THEN 370
  37. 360  COLOR 4,0:BEEP:PRINT"enter a number between 1 and 99!!!";:COLOR F,B:GOTO 340
  38. 370  GOSUB 990:COLOR 0,7:LOCATE 14,10:PRINT"           ";
  39. 380  LOCATE 14,11:PRINT PR;"cents";
  40. 390  REM do each day
  41. 400  FOR DAY=1 TO 7:GOSUB 1400:COLOR 0,0:GOSUB 740:COLOR 9,0:PRINT W0$(DAY)
  42. 410  COLOR 0,0:FOR J=13 TO 4 STEP -1:LOCATE J,33:PRINT B$;:NEXT J
  43. 420  COLOR 4,0:J=13:K=55
  44. 430  LOCATE J,33:PRINT B$;:J=J-1:K=K+5:IF K<W1(DAY) THEN 430
  45. 440  GOSUB 1490:GOSUB 1670
  46. 450  FOR I=1 TO SALES:COLOR 14,0
  47. 460  LOCATE 23,20:PRINT"Sales ==> ";I
  48. 470  D=D+PR:C=C-1:L=L-10:S=S-4:GOSUB 900
  49. 480  IF AMT<>0 THEN 510
  50. 490  I=SALES:DAY=7:LOCATE 24,1:COLOR 4,0
  51. 500  BEEP:PRINT"You ran out of supplies!!!";
  52. 510  NEXT I:NEXT DAY
  53. 520  NEXT WK
  54. 530  LOCATE 24,40:COLOR 4,0:PRINT"Do you want to play again (y/n)?";
  55. 540  A$=INKEY$:IF A$="" THEN 540
  56. 550  IF LEFT$(A$,1)="y" OR LEFT$(A$,1)="Y" THEN 50
  57. 560  IF LEFT$(A$,1)<>"n" AND LEFT$(A$,1)<>"N" THEN 540
  58. 570  RUN"menu.pgm":GOSUB 1130:END
  59. 580  GOSUB 740:PRINT"How much sugar do you want ($ ";
  60. 590  PRINT USING "#.##";PS/100;:INPUT" / lb.) ",S1
  61. 600  IF D-S1*PS<0 THEN GOSUB 750:GOTO 580
  62. 610  LOCATE 14,45:PRINT "lbs. of sugar = ";S1;"  "
  63. 620  D=D-S1*PS:GOSUB 940:RETURN
  64. 630  GOSUB 740:PRINT"How much lemonade ($ ";
  65. 640  PRINT USING "#.##";PL/100;:INPUT" / quart) ",L1
  66. 650  IF D-L1*PL<0 THEN GOSUB 750:GOTO 630
  67. 660  LOCATE 15,45:PRINT"quarts of lemonade = ";L1;"  "
  68. 670  D=D-L1*PL:GOSUB 940:RETURN
  69. 680  GOSUB 740:PRINT"How many packages of 100 cups ($ ";
  70. 690  PRINT USING "#.##";PC/100;:INPUT" / package) ",C1
  71. 700  IF D-C1*PC<0 THEN GOSUB 750:GOTO 680
  72. 710  LOCATE 16,45:PRINT"packages of 100 cups = ";C1;"  "
  73. 720  D=D-C1*PC:GOSUB 940:RETURN
  74. 730  REM clear question line
  75. 740  LOCATE 23,1:PRINT SPACE$(75):LOCATE 23,1:RETURN
  76. 750  COLOR 4,0:BEEP:LOCATE 24,1:PRINT"You don't have that much!!!";
  77. 760  COLOR F,B:RETURN
  78. 770  REM add purchases to supplies
  79. 780  S=S+100*S1:L=L+100*L1:C=C+100*C1:S1=0:L1=0:C1=0
  80. 790  LOCATE 13,42:PRINT SPACE$(35):LOCATE ,42:PRINT SPACE$(35)
  81. 800  LOCATE ,42:PRINT SPACE$(35):LOCATE ,42:PRINT SPACE$(35):RETURN
  82. 810  REM print headings
  83. 820  LOCATE 1,42:PRINT"You have";
  84. 830  LOCATE 3,42:PRINT"Weather prediction for week";
  85. 840  LOCATE 6,42:PRINT"Supplies:"
  86. 850  LOCATE ,45:PRINT"lbs. of sugar "
  87. 860  LOCATE ,45:PRINT"quarts of lemonade "
  88. 870  LOCATE ,45:PRINT"number of cups "
  89. 880  RETURN
  90. 890  REM update values
  91. 900  COLOR 4,0
  92. 910  LOCATE 7,70:PRINT USING "##.##";S/100
  93. 920  LOCATE ,70:PRINT USING "##.##";L/100
  94. 930  LOCATE ,70:PRINT C;"  "
  95. 940  COLOR 4,0:LOCATE 1,70:PRINT "$";:PRINT USING "###.##";D/100
  96. 950  COLOR 2,0:X1=INT((S+S1*100)/4):X2=INT((L+L1*100)/10):X3=C+(C1*100)
  97. 960  AMT=X1:IF X2<X1 THEN AMT=X2
  98. 970  IF X3<AMT THEN AMT=X3
  99. 980  LOCATE 11,42:PRINT"You can make";AMT;"cups of lemonade   ";
  100. 990  LOCATE 24,1:PRINT SPACE$(75);
  101. 1000  COLOR F,B:RETURN
  102. 1010  REM switch output to the color monitor
  103. 1020  KEY OFF:CLS:LOCATE ,,0:DEF SEG=0
  104. 1030  POKE &H410,(PEEK(&H410) AND &HCF) OR &H10
  105. 1040  DEF SEG:SCREEN 1:SCREEN 0:WIDTH 40:WIDTH 80
  106. 1050  COLOR 7,0:LOCATE ,,1,6,7
  107. 1060  REM init. arrays
  108. 1070  W0$(1)="Sunday   ":W0$(2)="Monday   ":W0$(3)="Tuesday  "
  109. 1080  W0$(4)="Wednesday":W0$(5)="Thursday ":W0$(6)="Friday   "
  110. 1090  W0$(7)="Saturday ":WF(1)=1:WF(2)=0.8:WF(3)=0.6:WF(4)=0.3:WF(5)=0.6:WF(6)=0.8
  111. 1100  DF(1)=0.9:DF(2)=0.5:DF(3)=0.7:DF(4)=0.6:DF(5)=0.7:DF(6)=0.8:DF(7)=1
  112. 1110  RETURN
  113. 1120  REM switch to monochrome
  114. 1130  KEY OFF:COLOR 0,0:CLS:LOCATE ,,0:DEF SEG=0
  115. 1140  POKE &H410,PEEK(&H410) OR &H30:DEF SEG
  116. 1150  SCREEN 1:SCREEN 0:WIDTH 40:WIDTH 80:COLOR 7,0:LOCATE ,,1,12,13
  117. 1160  RETURN
  118. 1170  REM draw lemonade stand
  119. 1180  LOCATE 1,1:COLOR 14,1:B$=CHR$(219):C$=B$+B$:D$=C$+C$:E$=D$+D$
  120. 1190  FOR I=1 TO 4:PRINT SPACE$(30):NEXT I
  121. 1200  PRINT"    "B$E$D$E$B$"    "
  122. 1210  PRINT"   "C$E$D$E$C$"   "
  123. 1220  PRINT"  "B$C$E$D$E$C$B$"  "
  124. 1230  COLOR 6,1
  125. 1240  FOR I=1 TO 4:PRINT"   "B$"                      "B$"   ":NEXT I
  126. 1250  COLOR 14,1
  127. 1260  FOR I=1 TO 4:PRINT"  "B$C$E$D$E$C$B$"  ":NEXT I
  128. 1270  COLOR ,2:PRINT SPACE$(30)
  129. 1280  COLOR 5,15:LOCATE 6,5:PRINT"CHRISTY'S LEMONADE STAND";
  130. 1290  COLOR 0,7:LOCATE 13,10:PRINT" $ PRICE $ "
  131. 1300  LOCATE 14,10:PRINT"           "
  132. 1310  COLOR 7,0:T=105:LOCATE 2,32:PRINT "TEMP."
  133. 1320  LOCATE ,32:PRINT CHR$(222)B$CHR$(221)
  134. 1330  FOR I=1 TO 10:LOCATE ,32:PRINT CHR$(222)" "CHR$(221);T
  135. 1340  T=T-5:NEXT I:COLOR 7,4
  136. 1350  LOCATE ,32:PRINT B$" "B$
  137. 1360  LOCATE ,32:PRINT CHR$(221)" "CHR$(222)
  138. 1370  LOCATE ,32:PRINT B$CHR$(220)B$
  139. 1380  RETURN
  140. 1390  REM figure weather for week
  141. 1400  FOR K=1 TO 7:W1(K)=TEMP-10+5*INT(5*RND)
  142. 1410  IF W1(K)<65 THEN W1(K)=65 ELSE IF W1(K)>105 THEN W1(K)=105
  143. 1420  NEXT K:WTHR=1+INT(WTHR/13):FOR K=1 TO 7:W2(K)=WTHR:Z=1+INT(10*RND)
  144. 1430  ON Z GOTO 1440,1450,1450,1470,1470,1470,1470,1450,1450,1440
  145. 1440  W2(K)=WTHR+2:GOTO 1460
  146. 1450  W2(K)=WTHR+1
  147. 1460  IF W2(K)>6 THEN W2(K)=W2(K)-6
  148. 1470  NEXT K:RETURN
  149. 1480  REM add weather
  150. 1490  F$=CHR$(219):WB=0:ON W2(DAY) GOTO 1500,1500,1510,1520,1510,1500
  151. 1500  WF=1:GOTO 1530
  152. 1510  WF=8:WB=1:F$=CHR$(177):GOTO 1530
  153. 1520  WF=8:WB=0:F$="/"
  154. 1530  COLOR WF,WB:FOR J=1 TO 4:LOCATE J,1:FOR K=1 TO 30:PRINT F$;:NEXT K,J
  155. 1540  LOCATE 5,1:PRINT F$F$F$F$;:LOCATE 5,27:PRINT F$F$F$F$;
  156. 1550  LOCATE 6,1:PRINT F$F$F$;:LOCATE 6,28:PRINT F$F$F$;
  157. 1560  LOCATE 7,1:PRINT F$F$;:LOCATE 7,29:PRINT F$F$;
  158. 1570  FOR J=8 TO 11:LOCATE J,1:PRINT F$F$F$;:LOCATE J,5:FOR K=1 TO 22:PRINT F$;
  159. 1580  NEXT K:LOCATE J,28:PRINT F$F$F$;:NEXT J
  160. 1590  FOR J=12 TO 15:LOCATE J,1:PRINT F$F$;:LOCATE J,29:PRINT F$F$;:NEXT J
  161. 1600  IF W2(DAY)=1 THEN RETURN
  162. 1610  F$=CHR$(219)+CHR$(219):WF=15:IF W2(DAY)>2 AND W2(DAY)<6 THEN WF=7
  163. 1620  FOR K=9 TO 20:LOCATE 1,K:IF RND>0.7 THEN PRINT F$;
  164. 1630  NEXT K:FOR K=3 TO 27:LOCATE 2,K:IF RND>0.3 THEN PRINT F$;
  165. 1640  NEXT K:FOR K=7 TO 22:LOCATE 3,K:IF RND>0.6 THEN PRINT F$;
  166. 1650  NEXT K:RETURN
  167. 1660  REM find sales for day
  168. 1670  TF=((W1(DAY)-55)*2)/100
  169. 1680  PF=(100-PR)/100
  170. 1690  SALES=1+INT(MAX*TF*PF*WF(W2(DAY))*DF(DAY))
  171. 1700  RETURN
  172.