-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy patheuphoria.bas
237 lines (236 loc) · 6.35 KB
/
euphoria.bas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
1000 PRINT "THE KINGDOM OF EUPHORIA"
1010 PRINT
1020 GOSUB 3510
1100 REM PRINT STATE OF THE KINGDOM
1110 PRINT
1120 PRINT "YEAR ";Y/7
1130 PRINT "POPULATION: ";P
1140 IF B>0 THEN PRINT B;" BIRTHS"
1150 IF D>0 THEN PRINT D;" DEATHS BY NATURAL CAUSES"
1160 IF S>0 THEN PRINT S;" DEATHS BY STARVATION"
1170 IF K>0 THEN PRINT K;" WAR CASUALTIES"
1180 IF V>0 THEN PRINT V;" VICTIMS OF DISEASE"
1190 IF M>0 THEN PRINT M;" VICTIMS OF LOOTING"
1210 LET D=D+S+K+V+M
1220 LET P=P+B-D
1230 IF B+D>0 THEN PRINT "TOTAL: ";P
1250 PRINT "LAND (ACRES) : ";A
1260 IF T=0 THEN IF U=0 THEN GOTO 1350
1270 IF T>0 THEN PRINT T;" ACRES BOUGHT"
1280 IF T<0 THEN PRINT -T;" ACRES SOLD"
1290 IF U<>0 THEN PRINT "FRUITS OF WAR: ";U;" ACRES"
1310 LET A=A+T+U
1320 LET T=0
1330 LET U=0
1340 PRINT "TOTAL: ";A
1350 PRINT "GRAIN (BUSHELS): ";G
1360 IF C<0 THEN GOTO 1530
1370 IF C=0 THEN GOTO 1430
1380 LET R=X
1390 PRINT "CROP YIELD ";C;" AT ";
1410 GOSUB 3220
1420 PRINT
1430 IF F>0 THEN PRINT F;" BUSHELS USED FOR FOOD"
1440 IF Q>0 THEN PRINT Q;" BUSHELS PLANTED"
1450 IF L<>0 THEN PRINT "LAND DEALS: ";L;" BUSHELS"
1460 IF H>0 THEN PRINT "MERCENARY HIRE: ";H
1470 IF E>0 THEN PRINT E;" BUSHELS LOST TO RATS"
1480 IF Z<>0 THEN PRINT "FRUITS OF WAR: ";Z;" BUSHELS"
1490 IF O>0 THEN PRINT "LOOTING LOSSES: ";O;" BUSHELS"
1510 LET G=G+C-F-Q+L-H-E+Z-O
1520 PRINT "TOTAL: ";G
1530 GOSUB 3310
1600 REM NOTICE IF GAME ENDED
1610 IF J<100 THEN GOTO 1690
1620 PRINT "THE PEASANTS TIRE OF WAR AND STARVATION"
1630 PRINT "YOU ARE DEPOSED."
1640 PRINT "DO YOU WISH TO PLAY AGAIN";
1650 LET N=Y-1
1660 INPUT N
1670 IF Y<>N THEN END
1680 GOTO 1000
1690 IF P>L THEN GOTO 1750
1710 PRINT "YOU AND THE REMAINING POPULATION"
1720 PRINT "RETIRE IN THE SWISS ALPS."
1730 GOTO 1640
1740 REM MAKE LAND DEALS
1750 LET R=23+RND(8)
1760 GOSUB 3250
1770 PRINT "BUY AT ";
1780 GOSUB 3220
1790 INPUT T
1810 IF T<0 THEN GOTO 1760
1820 IF T=0 THEN GOTO 1860
1830 IF R*T<=G THEN GOTO 2060
1840 GOSUB 3270
1850 GOTO 1760
1860 LET R=R-1
1880 GOSUB 3250
1890 PRINT "SELL AT ";
1910 GOSUB 3220
1920 INPUT T
1930 IF T<0 THEN GOTO 1880
1940 IF T=0 THEN GOTO 2060
1950 IF T<=A THEN GOTO 1990
1960 PRINT "BUT THERE IS INSUFFICIENT LAND"
1970 GOTO 1880
1990 IF T<A/10 THEN GOTO 2050
2010 LET R=R-1
2020 PRINT "FOR SELLING SO MUCH YOU CAN ONLY GET ";
2030 GOSUB 3220
2040 PRINT
2050 LET T=-T
2060 LET L=-R*T
2100 REM DISTRIBUTE GRAIN
2110 GOSUB 3250
2120 PRINT "PLANT";
2130 INPUT Q
2140 IF Q<0 THEN GOTO 2110
2150 IF Q<=A+T THEN GOTO 2180
2160 GOSUB 3270
2170 GOTO 2110
2180 IF Q<=P*10 THEN GOTO 2220
2190 PRINT "BUT THERE ARE INSUFFICIENT PEOPLE"
2210 GOTO 2110
2220 PRINT "HOW MANY BUSHELS DO YOU WISH TO ";
2230 PRINT "USE AS FOOD";
2240 INPUT F
2250 IF F<0 THEN GOTO 2220
2260 IF G+L-Q-F>=0 THEN GOTO 2310
2270 GOSUB 3270
2280 GOTO 2220
2310 IF F<=40*P THEN LET S=P-F/40
2320 LET J=J+S
2330 LET X=5+RND(4)
2340 IF Y/7*8-Y/49*7=Y THEN LET X=X/2-1
2350 LET C=X*Q
2360 IF G+L-Q-F+C>=0 THEN GOTO 2390
2370 LET X=(32767-G-L+Q+F)/Q
2380 GOTO 2350
2390 IF RND(99)<25 THEN LET E=(G+L-F+C)/10
2400 REM WAR AND PLAGUE
2410 IF RND(99)>15 THEN GOTO 2880
2420 LET W=25
2430 PRINT "A NEARBY KINGDOM THREATENS WAR"
2440 PRINT "DO YOU WISH TO MAKE A";
2450 PRINT " PRE-EMPTIVE STRIKE";
2460 LET N=Y-1
2470 INPUT N
2480 IF N=Y-1 THEN GOTO 2520
2490 LET W=100
2510 LET J=J+5
2520 PRINT "HOW MANY MERCENARIES WILL YOU";
2530 PRINT " HIRE AT 80 BUSHELS EACH";
2540 INPUT N
2550 IF N<0 THEN GOTO 2520
2560 LET D=G+L-Q-F+C-E
2570 IF RND(99)<W THEN GOTO 2610
2580 PRINT "PEACE NEGOTIATIONS SUCCEED"
2590 GOTO 2810
2610 IF W=25 THEN LET W=150
2620 LET R=P-S
2630 IF N>R/10 THEN GOTO 2660
2640 LET R=3*W/5*N*N/R*100/R
2650 GOTO 2680
2660 LET R=3*W/5+N*100/R
2680 LET K=(P-S)/2
2690 LET U=-(A+T)/2
2710 LET Z=-D/2
2720 IF R>RND(99) THEN GOTO 2760
2730 PRINT "YOU HAVE LOST THE WAR"
2740 LET J=J+5000/W
2750 GOTO 2810
2760 PRINT "YOU HAVE WON THE WAR"
2770 LET K=K/2
2780 LET U=-U
2790 LET Z=D/4
2810 IF N*80<=D+Z THEN GOTO 2870
2820 GOSUB 3280
2830 PRINT "TO PAY THE MERCENARIES"
2840 LET M=3*(P-S-K)/4
2850 LET O=3*(R+Z)/4
2860 GOTO 2880
2870 LET H=N*80
2880 LET N=P-S-K-M
2890 IF RND(99)>4 THEN GOTO 2940
2910 PRINT "THE BLACK PLAGUE STRIKES"
2920 LET V=N/2
2930 GOTO 2970
2940 IF RND(99)>20 THEN GOTO 2980
2950 PRINT "A POX EPIDEMIC BREAKS OUT"
2960 LET V=N/20
2970 LET N=N-V
2980 LET B=(N*RND(5)+9)/100+1
2990 LET D=(N*RND(3)+4)/100
3010 IF Y/7*8-Y/49*7<>Y THEN GOTO 3030
3020 PRINT "SEVEN YEAR LOCUSTS REDUCE CROP YIELD"
3030 IF E>0 THEN PRINT "RATS INFEST YOUR SILOS"
3040 LET Y=Y+8-(Y-Y/7*7)/6
3050 GOTO 1110
3200 REM UTILITY PRINT ROUTINES
3220 PRINT R;" BUSHELS/ACRE";
3230 RETURN
3250 PRINT "HOW MANY ACRES DO YOU WISH TO ";
3260 RETURN
3270 PRINT "BUT ";
3280 PRINT "THERE IS INSUFFICIENT GRAIN"
3290 RETURN
3300 REM INITIALIZE POPULATION AND GRAIN VECTORS
3310 LET B=0
3320 LET D=0
3330 LET K=0
3340 LET M=0
3350 LET S=0
3360 LET V=0
3410 LET C=0
3420 LET E=0
3430 LET F=0
3440 LET H=0
3450 LET L=0
3460 LET O=0
3470 LET Q=0
3480 LET Z=0
3490 RETURN
3500 REM INITIALIZATION
3510 LET Y=RND(6)+L
3520 LET J=0
3530 LET P=100
3540 LET A=1500
3550 LET G=5000
3560 LET T=0
3570 LET U=0
3580 GOSUB 3310
3590 LET C=-L
3600 REM PRINT INSTRUCTIONS (MAY BE OMITTED)
3610 PRINT "DO YOU NEED INSTRUCTIONS (Y OR N)";
3620 LET N=P
3630 INPUT N
3640 IF N=P THEN RETURN
3650 IF N=Y THEN GOTO 3710
3660 PRINT "PLEASE TYPE Y FOR YES, N FOR NO. OK";
3670 GOTO 3620
3710 PRINT "YOU HAVE INHERITED THE THRONE TO THE MEDIEVAL"
3720 PRINT "KINGDOM OF EUPHORIA, SOMEWHERE IN EUROPE."
3730 PRINT "AT THIS TIME IT IS ABOUT ";A;" ACRES IN SIZE,"
3740 PRINT "WITH ";P;" LOYAL PEASANTS TO SERVE YOU."
3750 PRINT "IN YOUR ROYAL SILOS YOU HAVE ";G;" BUSHELS OF"
3760 PRINT "NUTRITIOUS GRAIN WITH WHICH TO FEED THE PEOPLE"
3770 PRINT "AND TRANSACT INTERNATIONAL TRADE."
3780 PRINT "CLOSE BY YOUR SIDE ARE JEALOUS NEIGHBORING"
3790 PRINT "KINGDOMS, BUT YOU CAN PROTECT YOURSELF BY"
3810 PRINT "HIRING EVIL MERCENARIES."
3820 PRINT "EACH YEAR YOUR MINISTERS WILL PRESENT YOU"
3830 PRINT "WITH A SUMMARY OF YOUR CURRENT STATUS,"
3840 PRINT "AND THEN ASK YOU FOR DECISIONS ON WHAT"
3850 PRINT "TO DO FOR THE NEXT YEAR. PLEASE TYPE Y OR N"
3860 PRINT "FOR YES OR NO, OR A WHOLE NUMBER FOR"
3870 PRINT "NUMERIC ANSWERS. IF YOU CHANGE YOUR MIND"
3880 PRINT "BEFORE HITTING RETURN, HOLD THE 'CTRL' KEY"
3890 PRINT "DOWN WHILE TYPING THE LETTER 'X', THEN"
3910 PRINT "RETYPE YOUR ANSWER ON THE NEXT LINE."
3920 PRINT "ARE YOU READY, YOUR HIGHNESS";
3930 LET N=P
3940 INPUT N
3950 IF N<>Y THEN GOTO 3920
3980 RETURN
3990 END