Compucolor.org – Virtual Media

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

100 CLEAR 1000
110 M= 1.95:FL= 0:TPI= 6.28315
120 PLOT 12,6,1:PRINT TAB( 25);"DUKEDOM":PRINT :PRINT
130 PLOT 15,6,2
140 REM                                            
150 INPUT "DO YOU WISH TO SKIP THE DETAILED REPORTS AT THE END OF EACH YEAR ?";R$
160 DIM P(8),L(3),G(10),S(6),U(6),R(8),P$(8),L$(3),G$(10)
170 READ Y,C1,U1,U2,K,D,P,L,G
180 DATA 0,3.95,0,0,0,0,100,600,4177
190 FOR I= 1TO 8:READ P(I):NEXT I
200 DATA 96,0,0,0,0,0,-4,8
210 FOR I= 1TO 3:READ L(I):NEXT I
220 DATA 600,0,0
230 FOR I= 1TO 10:READ G(I):NEXT I
240 DATA 5193,-1344,0,-768,0,0,0,1510,-120,-300
250 FOR I= 1TO 6:READ S(I):NEXT I
260 DATA 216,200,184,0,0,0
270 FOR I= 1TO 8:READ P$(I):NEXT I
280 DATA "PEASANTS AT START","STARVATIONS","KINGS LEVY","WAR CASUALTIES","LOOTING VICTIMS"
290 DATA "DISEASE VICTIMS","NATURAL DEATHS","BIRTHS"
300 FOR I= 1TO 3:READ L$(I):NEXT I
310 DATA "LAND AT START","BOUGHT/SOLD","FRUITS OF WAR"
320 FOR I= 1TO 10:READ G$(I):NEXT I
330 DATA "GRAIN AT START","USED FOR FOOD","LAND DEALS","SEEDINGS","RAT LOSSES"
340 DATA "MERCENARY HIRE","FRUITS OF WAR","CROP YIELD","CASTLE EXPENSES","ROYAL TAX"
350 REM                                              
360 PRINT :PLOT 20:INPUT "HIT RETURN TO CONTINUE";A$:PLOT 18
365 PLOT 12:PRINT "YEAR";Y;" PEASANTS";P;" LAND";L;" GRAIN";G:PRINT
370 IF R$= "Y"THEN 620
380 REM         POPULATION STATUS DISPLAY       
390 FOR J1= 1TO 8
400 IF P(J1)< > 0OR J1= 1THEN PRINT P$(J1);TAB( 20);P(J1)
410 NEXT J1
420 PRINT "PEASANTS AT END";TAB( 20);P:PRINT
430 REM                                         
440 REM         LAND STATUS DISPLAY            
445 PLOT 17
450 FOR J1= 1TO 3
460 IF L(J1)< > 0OR J1= 1THEN PRINT L$(J1);TAB( 20);L(J1)
470 NEXT J1
480 PRINT "LAND AT END";TAB( 20);L:PRINT
490 REM                                        
550 REM         GRAIN STATUS DISPLAY           
555 PLOT 21:I= 0
560 FOR J1= 1TO 10
570 IF G(J1)< > 0OR J1= 1THEN PLOT 3,30,3+ I:PRINT G$(J1):PLOT 3,50,3+ I:PRINT G(J1):I= I+ 1
580 NEXT J1
590 PLOT  3,30,3+ I:PRINT "GRAIN AT END":PLOT 3,50,3+ I:PRINT G
595 PLOT 3,0,16,18
600 REM                                        
601 REM         LAND YIELD DISPLAY              
602 PRINT " 100%     80%     60%     40%     20%    DEPL"
603 FOR J1= 1TO 6:PRINT S(J1),:NEXT J1:PRINT
604 REM                                        
610 IF Y< = 0THEN PRINT "( SEVERE CROP DAMAGE DUE TO SEVEN YEAR LOCUSTS )"
620 PRINT :Y= Y+ 1
630 FOR I= 1TO 8:P(I)= 0:NEXT I
640 FOR I= 1TO 3:L(I)= 0:NEXT I
650 FOR I= 1TO 10:G(I)= 0:NEXT I
660 P(1)= P:L(1)= L:G(1)= G
670 IF P> = 33GOTO 710
680 PRINT "YOU HAVE SO FEW PEASANTS LEFT THAT"
690 PRINT "THE HIGH KING HAS ABOLISHED YOUR DUCAL RIGHT":PRINT
700 GOTO 2730
710 IF L> = 199GOTO 730
720 PRINT "YOU HAVE SO LITTLE LAND LEFT THAT":GOTO 690
730 IF U1> 88OR U2> 99GOTO 750
740 IF G> 429GOTO 770
750 PRINT "THE PEASANTS TIRE OF WAR AND STARVATION"
760 PRINT "YOU ARE DEPOSED":PRINT :GOTO 2730
770 IF Y> 45AND K= 0THEN PRINT "YOU HAVE REACHED THE AGE OF MANDATORY RETIREMENT":GOTO 2730
780 U1= 0
790 IF K> 0THEN PRINT "THE HIGH KING DEMANDS TWICE THE ROYAL TAX IN THE HOPE"
800 IF K> 0THEN PRINT "OF PROVOKING WAR":INPUT "WILL YOU PAY ?";V$:K= 2:IF V$= "N"THEN K= - 1
810 REM                                               
820 INPUT "GRAIN FOR FOOD =";V
830 IF V< = 100THEN V= V* P
840 IF V> GTHEN GOSUB 2760:GOTO 820
850 HATE= 0
860 IF V/ P< 11AND V< > GTHEN HATE= 1
870 IF HATE= 1THEN PRINT "THE PEASANTS DEMONSTRATE BEFORE THE CASTLE"
880 IF HATE= 1THEN PRINT "WITH SHARPENED SCYTHES":U1= U1+ 3:GOTO 820
890 HATE= 0
900 G(2)= - V:G= G+ G(2)
910 X1= V/ P
920 IF X1< 13THEN P(2)= - INT (P- V/ 13):P= P+ P(2)
930 IF X1< - 13THEN P(2)= - INT (P- V/ 13):P= P+ P(2)
940 X1= X1- 14
950 IF X1> 4THEN X1= 4
960 U1= U1- 3* P(2)- 2* X1
970 IF U1> 88GOTO 750
980 IF P< 33GOTO 670
990 C= C1:GOSUB 2850:X1= INT (2* C+ 20* A- 5)
1000 IF X1< 4THEN X1= 4
1010 PRINT "LAND TO BUY AT";X1;
1020 INPUT " HL./HA. =";V:G(3)= - V* X1
1030 IF - G(3)> GTHEN GOSUB 2760:GOTO 1010
1040 L(2)= V:S(3)= S(3)+ V
1050 IF V> 0GOTO 1250
1060 X2= S(1)+ S(2)+ S(3)
1070 FOR J1= 1TO 3
1080 X1= X1- 1
1090 PRINT "LAND TO SELL AT";X1;
1100 INPUT " HL./HA. =";V
1110 IF V> X2THEN PRINT "BUT YOU ONLY HAVE";X2;" HA. OF GOOD LAND":GOTO 1090
1120 G(3)= V* X1
1130 IF G(3)< = 4000GOTO 1180
1140 PRINT "NO BUYERS HAVE THAT MUCH GRAIN - SELL LESS"
1150 NEXT J1
1160 PRINT "BUYERS HAVE LOST INTEREST"
1170 V= 0:G(3)= 0
1180 L(2)= - V
1190 FOR J1= 3TO 1STEP - 1
1200 IF V< = S(J1)GOTO 1240
1210 V= V- S(J1):S(J1)= 0
1220 NEXT J1
1230 PRINT "LAND SELLING LOOP ERROR":END
1240 S(J1)= S(J1)- V
1250 L= L+ L(2)
1260 IF L< 10GOTO 710
1270 IF L(2)< 0AND X1< 4THEN G(3)= INT (G(3)/ 2):GOTO 1290
1280 G= G+ G(3):GOTO 1310
1290 PRINT "THE HIGH KING APPROPRIATES HALF YOUR EARNINGS"
1300 PRINT "AS PUNISHMENT FOR SELLING AT SUCH A LOW PRICE"
1310 IF K< > - 2GOTO 1420
1320 PRINT "THE KINGS ARMY IS ABOUT TO ATTACK YOUR DUCY"
1330 FOR I= 0TO 300:NEXT I:X1= INT (G/ 100)
1335 PLOT 12,14,22
1340 PRINT TAB( 10);"YOU HAVE HIRED";X1;" FOREIGN MERCENARIES":PRINT
1350 PRINT TAB( 14);"AT 100 HL. EACH (PAYMENT IN ADVANCE)"
1360 IF 8* X1+ P> 2399GOTO 1390:FOR I= 0TO 500:NEXT I
1370 PRINT "THE PLACEMENT OF YOUR HEAD ATOP THE CASTLE GATE"
1380 PRINT "SIGNIFIES THAT":GOTO 690
1390 PRINT "WIPE THE BLOOD FROM YOUR CROWN - YOU ARE NOW HIGH KING"
1400 PRINT :PRINT "A NEARBY MONARCHY THREATENS WAR"
1410 PRINT "HOW MANY..............":END
1420 INPUT "LAND TO PLANT =";V
1430 IF V> LTHEN GOSUB 2800:GOTO 1420
1440 IF V> 4* PTHEN GOSUB 2820:GOTO 1420
1450 G(4)= - 2* V
1460 IF G(4)> GTHEN GOSUB 2760:GOTO 1420
1470 G(8)= V:G= G+ G(4)
1480 FOR I= 1TO 6:U(I)= 0:NEXT I
1490 FOR I= 1TO 6
1500 IF V< = S(I)THEN 1540
1510 V= V- S(I):U(I)= S(I):S(I)= 0
1520 NEXT I
1530 PRINT "LAND TABLE UPDATING ERROR":END
1540 U(I)= V:S(I)= S(I)- V:S(1)= S(1)+ S(2):S(2)= 0
1550 FOR J1= 3TO 6
1560 S(J1- 2)= S(J1- 2)+ S(J1):S(J1)= 0
1570 NEXT J1
1580 FOR J1= 1TO 5:S(J1+ 1)= S(J1+ 1)+ U(J1):NEXT J1
1590 S(6)= S(6)+ U(6)
1600 GOSUB 2850:C= INT (12* A+ 3)
1610 IF INT (Y/ 7)* 7= YTHEN PRINT "SEVEN YEAR LOCUSTS":C= C/ 2
1620 X1= 0
1630 FOR J1= 1TO 5
1640 X1= X1+ U(J1)* (1.2- .2* J1)
1650 NEXT J1
1660 IF G(8)= 0THEN C1= 0:C= 0
1670 C1= INT ((C* (X1/ G(8)))* 100)/ 100:C= C1
1680 PRINT "YIELD =";C;" HL./HA."
1690 GOSUB 2850:X1= INT (A* 12+ 3)
1700 IF X1< 9GOTO 1820
1710 G(5)= - INT ((X1* G)/ 83)
1720 G= G+ G(5)
1730 PRINT "RATS INFEST THE GRAINERY"
1740 IF P< 67OR K= - 1GOTO 1820
1750 GOSUB 2850:X1= INT (A* 5)
1760 IF X1> P/ 30GOTO 1820
1770 PRINT "THE HIGH KING REQUIRES";X1;" PEASANTS FOR HIS ESTATES AND MINES."
1780 PRINT "WILL YOU SUPPLY THEM (Y) OR PAY";X1* 100;" HL."
1790 INPUT "OF GRAIN INSTEAD (N) ?";V$
1800 IF V$= "N"THEN G(10)= - 100* X1:G= G+ G(10):GOTO 1820
1810 P(3)= - X1:P= P+ P(3)
1820 IF K= - 1THEN PRINT "THE HIGH KING CALLS FOR PEASANT LEVIES "
1830 IF K= - 1THEN PRINT "AND HIRES MANY FOREIGN MERCENARIES":K= - 2:GOTO 2500
1840 X1= INT (11- 1.5* C)
1850 IF X1> = 2THEN X1= - X1* X1:GOTO 1870
1860 X1= - 2* X1
1870 IF K< > 0OR P< = 109OR 17* (L- 400)+ G< = 10600GOTO 1910
1880 PRINT "THE HIGH KING GROWS UNEASY AND MAY BE"
1890 PRINT "SUBSIDISING WARS AGAINST YOU":X1= X1+ 2
1900 X2= Y+ 5:GOTO 1920
1910 X2= 0
1920 GOSUB 2850:X3= INT (A* 5)
1930 IF X3> X1GOTO 2500
1940 PRINT "A NEARBY DUKE THREATENS WAR"
1950 GOSUB 2850:X2= INT (X2+ 85+ 18* A* 6)
1960 X4= 1.2- U1/ 16:X5= INT (P* X4)+ 13
1970 INPUT "WILL YOU ATTACK FIRST ?";V$
1980 IF V$= "N"GOTO 2060
1990 IF X2> = X5GOTO 2020
2000 PRINT "PEACE NEGOTIATIONS WERE SUCCESSFUL"
2010 P(4)= - X1- 1:X2= 0:GOTO 2040
2020 PRINT "FIRST STRIKE FAILED YOU NEED PROFESSIONALS"
2030 P(4)= - X3- X1- 2:X2= X2+ 3* P(4)
2040 P= P+ P(4)
2050 IF X2< 1THEN U1= U1- 2* P(4)- 3* P(5):GOTO 2500
2060 INPUT "HOW MANY MERCENARIES WILL YOU HIRE AT 40 HL. EACH =";V
2070 IF V> 75THEN PRINT "THERE ARE ONLY 75 MERCENARIES AVAILABLE FOR HIRE":GOTO 2060
2080 X2= INT (X2* M):X5= INT (P* X4)+ 7* V+ 13
2090 X6= X2- 4* V- INT (.25* X5):X2= X5- X2
2100 L(3)= INT (.8* X2)
2110 IF - L(3)> .67* LTHEN PRINT "YOU HAVE BEEN OVERRUN AND HAVE LOST THE ENTIRE DUKEDOM":GOTO 1370
2120 X1= L(3)
2130 FOR J1= 1TO 3
2140 X3= INT (X1/ (4- J1))
2150 IF - X3< = S(J1)THEN X5= X3:GOTO 2170
2160 X5= - S(J1)
2170 S(J1)= S(J1)+ X5
2180 X1= X1- X5
2190 NEXT J1
2200 FOR J1= 4TO 6
2210 IF - X1< = S(J1)THEN X5= X3:GOTO 2230
2220 X5= - S(J1)
2230 S(J1)= S(J1)+ X5
2240 X1= X1- X5
2250 NEXT J1
2260 IF L(3)< 399GOTO 2340
2270 PRINT "YOU HAVE OVERRUN THE ENEMY AND ANNEXED HIS ENTIRE DUKEDOM"
2280 G(7)= 3513:G= G+ G(7):X6= - 47:X4= .55
2290 IF K> 0GOTO 2380
2300 K= 1
2310 PRINT "THE KING FEARS FOR HIS THRONE AND"
2320 PRINT "MAY BE PLANNING DIRECT ACTION"
2330 GOTO 2380
2340 IF X2> = 0THEN PRINT "YOU HAVE WON THE WAR":X4= .67:G(7)= INT (1.7* L(3)):G= G+ G(7):GOTO 2360
2350 PRINT "YOU HAVE LOST THE WAR":X4= G(8)/ L
2360 IF X6< = 9THEN X6= 0:GOTO 2380
2370 X6= INT (X6/ 10)
2380 IF X6> PTHEN X6= P
2390 P(4)= P(4)- X6
2400 P= P- X6:G(8)= G(8)+ INT (X4* L(3))
2410 X6= 40* V
2420 IF X6< = GTHEN G(6)= - X6:GOTO 2450
2430 G(6)= - G:P(5)= - INT ((X6- G)/ 7)- 1
2440 PRINT "THERE IS NOT ENOUGH GRAIN TO PAY THE MERCENARIES"
2450 REM
2460 G= G+ G(6)
2470 IF - P(5)< PTHEN P(5)= - P(5)
2480 P= P+ P(5)
2490 L= L+ L(3):U1= U1- 2* P(4)- 3* P(5)
2500 GOSUB 2850:X1= INT (A* 7)
2510 IF X1> 3GOTO 2590
2520 IF X1> 1GOTO 2570
2530 IF D> 0GOTO 2590
2540 PRINT "THE BLACK PLAGUE HAS STRUCK THE DUCHY"
2550 D= 13:X2= 3
2560 P(6)= - INT (P/ X2):P= P+ P(6):GOTO 2590
2570 PRINT "A POX EPIDEMIC HAS BROKEN OUT":X2= X1* 5
2580 P(6)= - INT (P/ X2):P= P+ P(6)
2590 GOSUB 2850:X1= INT (A* 6+ 4)
2600 IF P(5)< > 0THEN X1= 4.5
2610 P(8)= INT (P/ X1)
2620 P(7)= INT (.3- P/ 22):P= P+ P(7)+ P(8):D= D- 1
2630 G(8)= INT (C* G(8)):G= G+ G(8):X1= G(8)- 4000
2640 IF X1> 0THEN G(9)= - INT (.1* X1)
2650 G(9)= G(9)- 120:G= G+ G(9)
2660 IF K< 0GOTO 2720
2670 X1= - INT (L/ 2)
2680 IF K> = 2THEN X1= 2* X1
2690 IF X1> GTHEN PRINT "YOU HAVE INSUFFICIENT GRAIN TO PAY THE ROYAL TAX"
2700 IF X1> GGOTO 690
2710 G(10)= G(10)+ X1:G= G+ X1
2720 U2= INT (U2* .85)+ U1:GOTO 360
2730 PRINT :INPUT "DO YOU WISH TO TRY ANOTHER GAME ?";V$
2740 IF V$= "Y"GOTO 100
2750 END
2760 PRINT "BUT YOU DONT HAVE ENOUGH GRAIN"
2770 PRINT "YOU HAVE";G;" HL. OF GRAIN LEFT"
2780 IF X1> = 4THEN PRINT "ENOUGH TO BUY";INT (G/ X1);" HA.OF LAND":RETURN
2790 PRINT "ENOUGH TO PLANT";INT (G/ 2);" HA. OF LAND":RETURN
2800 PRINT "BUT YOU DONT HAVE ENOUGH LAND"
2810 PRINT "YOU ONLY HAVE";L;" HA. OF LAND LEFT":RETURN
2820 PRINT "BUT YOU DONT HAVE ENOUGH PEASANTS"
2830 PRINT "YOUR PEASANTS CAN ONLY PLANT";4* P;" HA. OF LAND":RETURN
2840 END
2850 RA= RND (PEEK (33209))
2860 RB= RND (PEEK (33209))
2870 A= (- 2* LOG (RA))^ (.5)
2880 IF FL= 0THEN A= A* COS (TPI* RB):FL= 1:GOTO 2900
2890 A= A* SIN (TPI* RB):FL= 0
2900 A= (A+ 2)/ 4
2910 IF A< 0OR A> 1GOTO 2850
2920 RETURN
2930 END