Compucolor.org – Virtual Media

Listing of file='LEM.BAS;01' on disk='vmedia/snakes_and_ladders-sector.ccvf'

1 REM K
10 REM THIS IS LEMONADE STAND
20 REM MODIFIED FOR COMPUCOLOR
30 REM BY GREG HUBBARD
40 REM V1	22/6/81
50 REM (C) COPYRIGHT 1981
100 SK= 38:GD= 19:GOSUB 10000
110 CLEAR 500
120 XX= PEEK (33209):IF XX= 0THEN 120
130 XX= RND (- XX)
140 P9= 10:S3= .15:S2= 30:A2= 2:C9= .5:C2= 1
150 C1$= "     
          
           
         
     "
160 C1$= C1$+ "wwuuut
t
v
v
v"
170 C2$= "     
          
           
         
     "
180 C2$= C2$+ "wwuuut
t
v
v
v"
190 SU$= "tu
wv    h
j

g
|b~ijf"
200 RA$= "|  | |   |"
210 DIM A(30),L(30),H(30),B(30),S(30),P(30),G(30)
300 REM START OF GAME
310 TM= PEEK (32940)+ PEEK (32941)* 256+ 1
320 POKE TM,50:POKE TM+ 2,15:POKE TM+ 4,0
330 RESTORE 15250:GOSUB 16000
340 GOSUB 12000:FOR I= 1TO N:B(I)= 0:A(I)= A2:NEXT
350 IF A$= "Y"THEN GOSUB 13000:GOTO 400
360 GOSUB 14000
400 REM  WEATHER REPORT
410 SC= RND (1)
420 IF SC< .6THEN SC= 2:GOTO 460
430 IF SC< .8THEN SC= 3:GOTO 460
440 SC= 1
450 REM
460 IF D< 3THEN SC= 2
470 ON SCGOSUB 15100,15200,15300,15400
480 PLOT 6,6,12,27,11
1000 REM START OF NEW DAY
1010 D= D+ 1
1020 PRINT "ON DAY";D;", THE COST OF LEMONADE IS";
1030 C= 2:IF D> 2THEN C= 4
1040 IF D> 6THEN C= 5
1050 PRINT C" CENTS":PRINT
1060 C1= C* .01
1070 R1= 1
1100 REM CURRENT EVENTS
1110 IF D< > 3THEN 1130
1120 PRINT "(YOUR MOTHER QUIT GIVING YOU FREE SUGAR)"
1130 IF D< > 7THEN 1150
1140 PRINT "(THE PRICE OF LEMONADE MIX JUST WENT UP)"
1150 REM  AFTER 2 DAYS THINGS CAN HAPPEN
1160 IF D> 2THEN 3000
1170 REM  INPUT VALUES
1180 PRINT
1190 FOR I= 1TO N
1200 A(I)= A(I)+ .000000001
1210 G(I)= 1:H(I)= 0:C5= 0
1220 STI= A(I):GOSUB 4000:PRINT "LEMONADE STAND";I;TAB( 26);"ASSETS ";STI$
1230 PRINT
1240 IF B(I)= 0THEN 1300
1250 PRINT "YOU ARE BANKRUPT, NO DECISIONS"
1260 PRINT "FOR YOU TO MAKE."
1270 PRINT :INPUT "HIT RETURN TO CONTINUE ";A$
1280 IF N= 1AND A(I)< CTHEN 20000
1290 GOTO 1700
1300 PRINT "HOW MANY GLASSES OF LEMONADE DO YOU"
1310 PRINT "WISH TO MAKE? ";
1320 XX= CALL (0):INPUT "";L(I)
1330 IF L(I)< 0OR L(I)> 1000THEN 1350
1340 GOTO 1380
1350 PRINT :PRINT "COME ON, LET'S BE REASONABLE NOW!!!"
1360 PRINT "TRY AGAIN"
1370 GOTO 1300
1380 IF L(I)< > INT (L(I))THEN 1350
1390 IF L(I)* C1< = A(I)THEN 1440
1400 PRINT :PRINT "THINK AGAIN!!!  YOU HAVE ONLY ";STI$
1410 PRINT "IN CASH AND TO MAKE ";L(I);" GLASSES OF"
1420 PRINT "LEMONADE YOU NEED $";L(I)* C1;" IN CASH."
1430 GOTO 1300
1440 PRINT
1450 PRINT "HOW MANY ADVERTISING SIGNS (";S3* 100;" CENTS"
1460 PRINT "EACH ) DO YOU WANT TO MAKE? ";
1470 XX= CALL (0):INPUT "";S(I)
1480 IF S(I)< 0OR S(I)> 50THEN 1500
1490 GOTO 1520
1500 PRINT :PRINT "COME ON, BE REASONABLE!!! TRY AGAIN."
1510 GOTO 1440
1520 IF S(I)< > INT (S(I))THEN 1500
1530 IF S(I)* S3< = A(I)- L(I)* C1THEN 1590
1540 PRINT
1550 STI= A(I)- L(I)* C1:GOSUB 4000
1560 PRINT "THINK AGAIN, YOU HAVE ONLY ";STI$
1570 PRINT "IN CASH LEFT AFTER MAKING YOUR LEMONADE."
1580 GOTO 1440
1590 PRINT :PRINT "WHAT PRICE (IN CENTS) DO YOU WISH TO"
1600 PRINT "CHARGE FOR LEMONADE? ";
1610 XX= CALL (0):INPUT "";P(I)
1620 IF P(I)< 0OR P(I)> 100THEN 1640
1630 GOTO 1660
1640 PRINT :PRINT "COME ON, BE REASONABLE!!! TRY AGAIN."
1650 GOTO 1590
1660 IF P(I)< > INT (P(I))THEN 1640
1670 IF C5= 1THEN 1700
1680 XX= CALL (0):PRINT :INPUT "WOULD YOU LIKE TO CHANGE ANYTHING? ";A$
1690 IF LEFT$ (A$,1)= "Y"THEN PLOT 12:C5= 1:GOTO 1220
1700 PLOT 12
1710 NEXT I
1720 C5= 0:PLOT 6,3,12,27,24
1730 PRINT :IF SC= 3AND RND (1)< .5THEN 3250
1740 PRINT "   $$ LEMONSVILLE DAILY FINANCIAL REPORT $$"
1750 DATA 95,126,56,428,0,5,71,170,63,190,56,428,0,0
1760 RESTORE 1750:GOSUB 16000
2000 REM  CALCULATE PROFITS
2010 IF R2= 2THEN 3210
2020 IF R3= 3THEN 3300
2030 FOR I= 1TO N:PLOT 6,3,12:PRINT "   $$ LEMONSVILLE DAILY FINANCIAL REPORT $$"
2040 IF A(I)< 0THEN A(I)= 0
2050 IF R2= 2THEN 2150
2060 IF P(I)> = P9THEN 2090
2070 N1= (P9- P(I))/ P9* .8* S2+ S2
2080 GOTO 2100
2090 N1= ((P9+ 2)* S2/ P(I)+ 2)
2100 W= - S(I)* C9
2110 V= 1- (EXP (W)* C2)
2120 N2= R1* (N1+ (N1* V))
2130 N2= INT (N2* G(I))
2140 IF N2< = L(I)THEN 2160
2150 N2= L(I)
2160 M= N2* P(I)* .01
2170 E= S(I)* S3+ L(I)* C1
2180 P1= M- E
2190 A(I)= A(I)+ P1
2200 IF N(I)= 1THEN 3250
2210 PRINT
2220 IF B(I)< > 1THEN 2250
2230 PRINT "STAND ";I;:PRINT "   BANKRUPT":GOSUB 18000
2240 GOTO 2330
2250 GOSUB 5000
2260 IF A(I)> C/ 100THEN 2330
2270 PRINT "STAND ";I
2280 PLOT 12:PRINT "  ...YOU DON'T HAVE ENOUGH MONEY LEFT"
2290 PRINT " TO STAY IN BUSINESS - YOU'RE BANKRUPT!"
2300 B(I)= 1
2310 GOSUB 18000:PLOT 12
2320 IF N= 1AND B(I)= 1THEN 20000
2330 NEXT I
2340 R1= 1
2350 R2= 0
2360 GOTO 400
3000 REM  RANDOM EVENTS
3010 IF SC= 3THEN 3060
3020 IF SC= 1THEN 3360
3030 IF RND (1)< .25THEN 3130
3040 GOTO 1180
3050 IF X1= 1THEN 1180
3060 J= 30+ INT (RND (1)* 5)* 10
3070 PRINT "THERE IS A ";J;"% CHANCE OF LIGHT RAIN,"
3080 PRINT "AND THE WEATHER IS COOLER TODAY."
3090 R1= 1- J/ 100
3100 X1= 1
3110 GOTO 1180
3120 IF X2= 1THEN 1180
3130 PRINT "THE STREET DEPARTMENT IS WORKING TODAY."
3140 PRINT "THERE WILL BE NO TRAFFIC ON YOUR STREET."
3150 IF RND (1)< .5THEN 3180
3160 R2= 2
3170 GOTO 3190
3180 R1= .1
3190 X2= 1
3200 GOTO 1180
3210 PLOT 3,2,5,14:PRINT "THE STREET CREWS BOUGHT ALL YOUR"
3220 PRINT "  LEMONADE AT LUNCH TIME!!"
3230 XX= CALL (0):FOR IX= 0TO 1000:NEXT IX
3240 GOTO 2030
3250 REM THUNDER STORM!
3260 X3= 1:R3= 0
3270 SC= 4:GOSUB 15400:PLOT 14,6,1,12
3280 PRINT "WEATHER REPORT: A SEVERE THUNDER STORM"
3290 PRINT "HIT LEMONSVILLE EARLIER TODAY, JUST AS"
3300 PRINT "THE LEMONADE STANDS WERE BEING SET UP."
3310 PRINT "UNFORTUNATELY, EVERYTHING WAS RUINED!!"
3320 FOR J= 1TO N:G(J)= 0:NEXT
3330 GOSUB 18000
3340 GOTO 2030
3350 IF X4= 1THEN 1180
3360 X4= 1
3370 PRINT "A HEAT WAVE IS PREDICTED FOR TODAY!"
3380 R1= 2
3390 GOTO 1180
4000 REM  STI => DOLLARS, CENTS
4010 STI= INT (STI* 100+ .5)/ 100
4020 STI$= "$"+ STR$ (STI)
4030 IF STI= INT (STI)THEN STI$= STI$+ ".0"
4040 IF STI= INT (STI* 10+ .5)/ 10THEN STI$= STI$+ "0"
4050 RETURN
5000 PLOT 3,5,6
5010 PRINT "  DAY ";D;TAB( 23);"STAND ";I:PRINT ""
5020 PRINT "  ";N2;TAB( 7);"GLASSES SOLD":PRINT
5030 STI= P(I)/ 100:GOSUB 4000:PRINT STI$;TAB( 7);"PER GLASS";
5040 STI= M:GOSUB 4000:PRINT TAB( 27);"INCOME ";STI$
5050 PRINT :PRINT :PRINT "  ";L(I);TAB( 7);"GLASSES MADE":PRINT
5060 STI= E:GOSUB 4000:PRINT "  ";S(I);TAB( 7);"SIGNS MADE";TAB( 25);"EXPENSES ";STI$:PRINT :PRINT
5070 STI= P1:GOSUB 4000:PRINT TAB( 16);"PROFIT  ";STI$:PRINT
5080 STI= A(I):GOSUB 4000:PRINT TAB( 16);"ASSETS  ";STI$
5090 GOSUB 18000
5100 REM
5110 FOR IX= 31TO 2STEP - 1:PLOT 3,0,IX,11:NEXT IX:RETURN
10000 REM DRAW LEMONADE STAND
10010 PLOT 15,27,24,6,SK,12,6,GD
10020 FOR IX= 17TO 31:PLOT 3,0,IX
10030 PRINT "````````````````````````````````````````````````````````````````":NEXT IX
10040 PLOT 6,9,3,14,10:PRINT SPC( 37)
10050 PLOT 27,10,3,17,11:PRINT "     ":PLOT 3,47,11:PRINT "     ":PLOT 27,24
10060 FOR IX= 16TO 23:PLOT 3,17,IX:PRINT "                               ":NEXT IX
10070 PLOT 6,11,3,21,17:PRINT "a  {e pq tu pb tu nu {e"
10080 PLOT 3,21,18:PRINT "l l ab vw as no lw l"
10090 PLOT 3,25,20:PRINT "cf en tu pb nu"
10100 PLOT 3,25,21:PRINT "gd  a no as lw"
10110 REM



10120 PLOT 6,SK,3,22,15:PRINT "u tvvwwcad dbdteeeusnr"
10130 REM




10140 PLOT 3,30,15:PRINT "jyjyjy jzabd
"
10150 RETURN
12000 REM TITLE PAGE
12010 PLOT 14,6,3,12
12020 PRINT "HI!  WELCOME TO LEMONSVILLE!":PLOT 6,6,10
12030 PRINT "IN THIS SMALL TOWN, YOU ARE IN CHARGE OF"
12040 PRINT "RUNNING YOUR OWN LEMONADE STAND.  YOU CAN"
12050 PRINT "COMPETE WITH AS MANY OTHER PEOPLE AS YOU"
12060 PRINT "WISH, BUT HOW MUCH PROFIT YOU MAKE IS UP"
12070 PRINT "TO YOU (THE OTHER STANDS' SALES WILL NOT"
12080 PRINT "AFFECT YOUR BUSINESS IN ANY WAY).  IF YOU"
12090 PRINT "MAKE THE MOST MONEY, YOU'RE THE WINNER!!":PRINT
12100 PRINT "ARE YOU STARTING A NEW GAME? (YES OR NO)"
12110 Y= CALL (0):INPUT "TYPE YOUR ANSWER AND HIT RETURN ==> ";A$
12120 A$= LEFT$ (A$,1):IF A$< > "Y"AND A$< > "N"THEN PLOT 28,11:GOTO 12110
12130 Y= CALL (0):INPUT "HOW MANY PEOPLE WILL BE PLAYING? ==> ";N$
12140 N= VAL (N$):IF N< 1OR N> 30THEN PLOT 28,11:GOTO 12130
12150 RETURN
13000 REM NEW BUSINESS
13010 PLOT 12
13020 PRINT "TO MANAGE YOUR LEMONADE STAND, YOU WILL"
13030 PRINT "NEED TO MAKE THESE DECISIONS EVERY DAY:":PRINT
13040 PRINT "1. HOW MANY GLASSES OF LEMONADE TO MAKE"
13050 PRINT TAB( 3)"(ONLY ONE BATCH IS MADE EACH MORNING)"
13060 PRINT "2. HOW MANY ADVERTISING SIGNS TO MAKE"
13070 PRINT TAB( 3)"(THE SIGNS COST FIFTEEN CENTS EACH)"
13080 PRINT "3. WHAT PRICE TO CHARGE FOR EACH GLASS":PRINT
13090 PRINT "YOU WILL BEGIN WITH $2.00 CASH (ASSETS)."
13100 PRINT "BECAUSE YOUR MOTHER GAVE YOU SOME SUGAR,"
13110 PRINT "YOUR COST TO MAKE LEMONADE IS TWO CENTS"
13120 PRINT "A GLASS (THIS MAY CHANGE IN THE FUTURE).":PRINT
13130 GOSUB 18000:PLOT 12
13140 PRINT "YOUR EXPENSES ARE THE SUM OF THE COST OF"
13150 PRINT "THE LEMONADE AND THE COST OF THE SIGNS.":PRINT
13160 PRINT "YOUR PROFITS ARE THE DIFFERENCE BETWEEN"
13170 PRINT "THE INCOME FROM SALES AND YOUR EXPENSES.":PRINT
13180 PRINT "THE NUMBER OF GLASSES YOU SELL EACH DAY"
13190 PRINT "DEPENDS ON THE PRICE YOU CHARGE, AND ON"
13200 PRINT "THE NUMBER OF ADVERTISING SIGNS YOU USE.":PRINT
13210 PRINT "KEEP TRACK OF YOUR ASSETS, BECAUSE YOU"
13220 PRINT "CAN'T SPEND MORE MONEY THAN YOU HAVE!":PRINT
13230 GOSUB 18000:PLOT 12:RETURN
13240 RETURN
14000 REM CONTINUE OLD GAME
14010 PLOT 12,27,11
14020 PRINT "HI AGAIN!  WELCOME BACK TO LEMONSVILLE!":PRINT
14030 PRINT "LET'S CONTINUE YOUR LAST GAME FROM WHERE"
14040 PRINT "YOU LEFT IT LAST TIME.  DO YOU REMEMBER"
14050 PRINT "WHAT DAY NUMBER IT WAS? ";
14060 XX= CALL (0):INPUT "";A$:A= VAL (A$):PRINT :IF A< > 0THEN 14100
14070 A$= LEFT$ (A$,1):IF A$= "Y"THEN PRINT "GOOD! WHAT DAY WAS IT? ";:GOTO 14060
14080 IF A$= "N"THEN 14120
14090 PRINT "YES OR NO? ";:GOTO 14060
14100 IF A< 1OR A> 99OR A< > INT (A)THEN 14120
14110 D= A
14120 PRINT "OKAY - WE'LL START WITH DAY NO.";D+ 1:PRINT
14130 FOR I= 1TO N
14140 PRINT "PLAYER NO.";I;", HOW MUCH MONEY (ASSETS)"
14150 PRINT "DID YOU HAVE? ";
14160 XX= CALL (0):INPUT "";A$:A= VAL (A$)
14170 IF A< 2THEN PRINT "O.K. - WE'LL START YOU OUT WITH $2.00":A= 2:GOTO 14190
14180 IF A> 10THEN PRINT "JUST TO BE FAIR, LET'S MAKE THAT $10.00":A= 10
14190 A(I)= INT (A* 100+ .5)/ 100:PRINT :NEXT I
14200 XX= CALL (0):INPUT "READY TO BEGIN? ";A$:PLOT 27,24
14210 IF LEFT$ (A$,1)= "N"THEN 13000
14220 RETURN
15000 REM WEATHER DISPLAY
15100 REM HOT AND DRY
15110 SK= 38:GD= 25:GOSUB 10000
15120 PLOT 3,50,0:PRINT SU$
15130 PLOT 3,22,23,6,11:PRINT "TODAY IS HOT AND DRY!"
15140 DATA 94,255,100,240,94,510,0,125,100,240,119,201,100,240,94,255,119,201,141,510,189,510,0,0
15150 RESTORE 15140:GOSUB 16000
15160 RETURN
15200 REM SUNNY
15210 SK= 38:GD= 19:GOSUB 10000
15220 PLOT 3,10,0:PRINT C1$
15230 PLOT 3,50,0:PRINT SU$
15240 PLOT 3,25,23,6,11:PRINT "TODAY IS SUNNY!"
15250 DATA 189,95,150,120,150,120,168,107,150,120,126,143,126,285,0,0
15260 RESTORE 15250:GOSUB 16000
15270 RETURN
15300 REM CLOUDY
15310 SK= 52:GD= 18:GOSUB 10000
15320 PLOT 3,10,1:PRINT C2$:PLOT 3,40,1:PRINT C2$
15330 PLOT 3,24,23,6,11:PRINT "TODAY IS CLOUDY!"
15340 DATA 94,255,94,127,94,127,84,142,94,127,106,112,112,106,94,255,0,0
15350 RESTORE 15340:GOSUB 16000
15360 RETURN
15400 REM THUNDER STORMS
15410 SK= 52:GD= 16:GOSUB 10000
15420 PLOT 3,10,1:PRINT C2$:PLOT 3,40,1:PRINT C2$
15430 PLOT 3,20,23,6,11,7:PRINT "WARNING - THUNDER STORMS!"
15440 PLOT 3,13,6:PRINT RA$:PLOT 3,43,6:PRINT RA$:PLOT 3,15,7:PRINT RA$:PLOT 3,45,7:PRINT RA$
15450 PLOT 3,14,8:PRINT RA$:PLOT 3,42,8:PRINT RA$:PLOT 3,16,9:PRINT RA$:PLOT 3,46,9:PRINT RA$
15460 FOR II= 1TO 2:FOR JJ= 48TO 54
15470 PLOT 6,JJ,2,45,127,242,60,110,55,120,80,95,255
15480 PLOT 2,127,127,242,115,119,122,120,90,90,255
15490 NEXT JJ
15500 DATA 189,127,94,255,112,107,126,95,141,85,168,142,0,70,189,127,141,170,150,80,141,85,112,107,94,255,0,0
15510 RESTORE 15500:GOSUB 16000
15520 NEXT II
15530 PLOT 6,6
15540 RETURN
16000 REM SOUND
16010 FOR IX= 0TO 100:READ PI,DU
16020 IF PI= 0AND DU= 0THEN RETURN
16030 IF PI= 0THEN FOR IY= 0TO DU:NEXT IY:NEXT IX
16040 IF DU> 255THEN DU= DU- 255:POKE TM+ 3,1
16050 POKE TM,PI:POKE TM+ 2,DU
16060 XX= CALL (0):NEXT IX
16070 RETURN
18000 REM CONTINUE?
18010 PLOT 3,0,31:PRINT "PRESS RETURN TO CONTINUE, ESC TO END...";
18020 XX= CALL (0):IN= CALL (2):IF IN< > 13AND IN< > 27THEN 18020
18030 PRINT
18040 IF IN= 27THEN 20000
18050 RETURN
20000 REM PLAY AGAIN?
20010 FOR I= 0TO 500:NEXT :PLOT 12,3,17,10:PRINT "WOULD YOU LIKE TO PLAY AGAIN? "
20020 XX= CALL (0):IN= CALL (2):IF IN= 89THEN RUN
20030 PLOT 1