2 PRINT TAB(26) "CIVIL WAR" 4 PRINT TAB(15) "CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" 6 PRINT : PRINT : PRINT 20 REM ORIGINAL GAME DESIGN: CRAM, GOODIE, HIBBARD LEXINGTON H.S. 30 REM MODIFICATIONS: G. PAUL, R. HESS (TIES), 1973 50 DIM S(4),C$(14),M1(14),M2(14),C1(14),C2(14),M(14) 60 REM UNION INFO ON LIKELY CONFEDERATE STRATEGY 70 S(1)=25 : S(2)=25 : S(3)=25 : S(4)=25 82 REM READ HISTORICAL DATA. 84 FOR D=1 TO 14 86 READ C$(D),M1(D),M2(D),C1(D),C2(D),M(D) 88 NEXT D 89 LET D=RND(-1) 90 PRINT 100 PRINT "DO YOU WANT INSTRUCTIONS"; 110 INPUT X$ 120 IF X$="YES" THEN 160 130 IF X$="NO" THEN 370 140 PRINT "YES OR NO -- "; 150 GOTO 110 160 PRINT : PRINT : PRINT : PRINT 170 PRINT "THIS IS A CIVIL WAR SIMULATION." 180 PRINT "TO PLAY TYPE A RESPONSE WHEN THE COMPUTER ASKS." 190 PRINT "REMEMBER THAT ALL FACTORS ARE INTERRELATED AND THAT YOUR" 200 PRINT "RESPONSES COULD CHANGE HISTORY. FACTS AND FIGURES USED ARE" 210 PRINT "BASED ON THE ACTUAL OCCURRENCE. MOST BATTLES TEND TO RESULT" 220 PRINT "AS THEY DID IN THE CIVIL WAR, BUT IT ALL DEPENDS ON YOU!!" 230 PRINT 240 PRINT "THE OBJECT OF THE GAME IS TO WIN AS MANY BATTLES AS "; 245 PRINT "POSSIBLE." 250 PRINT 260 PRINT "YOUR CHOICES FOR DEFENSIVE STRATEGY ARE:" 270 PRINT " (1) ARTILLERY ATTACK" 280 PRINT " (2) FORTIFICATION AGAINST FRONTAL ATTACK" 290 PRINT " (3) FORTIFICATION AGAINST FLANKING MANEUVERS" 300 PRINT " (4) FALLING BACK" 310 PRINT " YOUR CHOICES FOR OFFENSIVE STRATEGY ARE:" 320 PRINT " (1) ARTILLERY ATTACK" 330 PRINT " (2) FRONTAL ATTACK" 340 PRINT " (3) FLANKING MANEUVERS" 350 PRINT " (4) ENCIRCLEMENT" 360 PRINT "YOU MAY SURRENDER BY TYPING A '5' FOR YOUR STRATEGY." 370 PRINT : PRINT : PRINT : PRINT "ARE THERE TWO GENERALS PRESENT "; 380 PRINT "(ANSWER YES OR NO)"; 390 INPUT B$ 400 IF B$="YES" THEN 430 410 IF B$ <> "NO" THEN 380 420 PRINT : PRINT "YOU ARE THE CONFEDERACY. GOOD LUCK!" 425 PRINT 430 LET D=1 440 IF B$ <> "YES" THEN 460 450 LET D=2 460 PRINT "SELECT A BATTLE BY TYPING A NUMBER FROM 1 TO 14 ON" 470 PRINT "REQUEST. TYPE ANY OTHER NUMBER TO END THE SIMULATION." 480 PRINT "BUT '0' BRINGS BACK EXACT PREVIOUS BATTLE SITUATION" 490 PRINT "ALLOWING YOU TO REPLAY IT" 500 PRINT 510 PRINT "NOTE: A NEGATIVE FOOD$ ENTRY CAUSES THE PROGRAM TO " 520 PRINT "USE THE ENTRIES FROM THE PREVIOUS BATTLE" 530 PRINT 540 PRINT "AFTER REQUESTING A BATTLE, DO YOU WISH "; 550 PRINT "BATTLE DESCRIPTIONS "; 560 PRINT "(ANSWER YES OR NO)"; 570 INPUT X$ 580 IF X$="YES" THEN 600 590 IF X$ <> "NO" THEN 560 600 L=0:W=0:R1=0:Q1=0:M3=0:M4=0:P1=0:P2=0:T1=0:T2=0 610 F(2)=0:H(2)=0:B(2)=0:R2=0:Q2=0:C6=0:F=0:W0=0:Y=0:Y2=0:U=0:U2=0 620 PRINT : PRINT : PRINT 630 PRINT "WHICH BATTLE DO YOU WISH TO SIMULATE"; 640 INPUT A 650 IF A <> 0 THEN 660 655 IF R <> 0 THEN 1140 660 IF A <=0 THEN 2860 665 IF A >= 15 THEN 2860 670 LET C$=C$(A) 680 LET M1=M1(A) 690 LET M2=M2(A) 700 LET C1=C1(A) 710 LET C2=C2(A) 720 LET M=M(A) 960 LET U=0 970 REM INFLATION CALC 980 LET I1=10+(L-W)*2 990 LET I2=10+(W-L)*2 1000 REM - MONEY AVAILABLE 1010 LET D(1)=100*INT((M1*(100-I1)/2000)*(1+(R1-Q1)/(R1+1))+.5) 1020 LET D(2)=100*INT(M2*(100-I2)/2000+.5) 1030 IF B$ <> "YES" THEN 1050 1040 LET D(2)=100*INT((M2*(100-I2)/2000)*(1+(R2-Q2)/(R2+1))+.5) 1050 REM - MEN AVAILABLE 1060 LET M5=INT(M1*(1+(P1-T1)/(M3+1))) 1070 LET M6=INT(M2*(1+(P2-T2)/(M4+1))) 1080 LET F1=5*M1/6 1090 PRINT : PRINT : PRINT : PRINT : PRINT 1100 PRINT "THIS IS THE BATTLE OF ";C$ 1110 IF X$="NO" THEN 1150 1120 IF A>11 THEN 1130 1125 ON A GOTO 3580,3620,3650,3690,3720,3750,3780,3800,3830,3860,3890 1130 ON A-11 GOTO 3920,3950,3980 1140 PRINT C$" INSTANT REPLAY" 1150 PRINT 1160 PRINT " ","CONFEDERACY"," UNION" 1170 PRINT "MEN"," "M5," "M6 1180 PRINT "MONEY","$";D(1),"$";D(2) 1190 PRINT "INFLATION"," ";I1+15;"%"," ";I2;"%" 1195 PRINT 1200 REM - ONLY IN PRINTOUT IS CONFED INFLATION = I1+15% 1210 REM - IF TWO GENERALS, INPUT CONFED. FIRST 1220 FOR I=1 TO D 1230 IF B$ <> "YES" THEN 1260 1240 IF I=2 THEN 1260 1250 PRINT "CONFEDERATE GENERAL---"; 1260 PRINT "HOW MUCH DO YOU WISH TO SPEND FOR" 1270 PRINT " - FOOD......"; 1280 INPUT F 1290 IF F >= 0 THEN 1360 1300 IF R1 <> 0 THEN 1330 1310 PRINT "NO PREVIOUS ENTRIES" 1320 GOTO 1270 1330 PRINT "ASSUME YOU WANT TO KEEP SAME ALLOCATIONS" 1340 PRINT 1350 GOTO 1510 1360 LET F(I)=F 1370 PRINT " - SALARIES.."; 1380 INPUT H(I) 1390 LET N=1 1400 IF H(I)<0 THEN 1490 1410 PRINT " - AMMUNITION"; 1420 INPUT B(I) 1430 LET N=2 1440 IF B(I)<0 THEN 1490 1450 PRINT 1460 IF F(I)+H(I)+B(I) <= D(I) THEN 1510 1470 PRINT "THINK AGAIN! YOU HAVE ONLY $"D(I) 1480 GOTO 1270 1490 PRINT "NEGATIVE VALUES NOT ALLOWED." 1500 ON N GOTO 1370,1410 1510 IF B$ <> "YES" THEN 1550 1520 IF I=2 THEN 1550 1530 PRINT "UNION GENERAL---"; 1540 NEXT I 1550 FOR Z=1 TO D 1560 IF B$ <> "YES" THEN 1620 1570 ON Z GOTO 1580,1600 1580 PRINT "CONFEDERATE "; 1590 GOTO 1620 1600 PRINT " UNION "; 1610 REM - FIND MORALE 1620 LET O=((2*F(Z)^2+H(Z)^2)/F1^2+1) 1630 IF O<10 THEN 1660 1640 PRINT "MORALE IS HIGH" 1650 GOTO 1700 1660 IF O<5 THEN 1690 1670 PRINT "MORALE IS FAIR" 1680 GOTO 1700 1690 PRINT "MORALE IS POOR" 1700 IF B$ <> "YES" THEN 1760 1710 LET O(Z)=O 1720 NEXT Z 1730 LET O2=O(2) 1740 LET O=O(1) 1750 PRINT "CONFEDERATE GENERAL---"; 1760 REM - ACTUAL OFF/DEF BATTLE SITUATION 1770 IF M <> 3 THEN 1800 1780 PRINT "YOU ARE ON THE OFFENSIVE" 1790 GOTO 1840 1800 IF M <> 1 THEN 1830 1810 PRINT "YOU ARE ON THE DEFENSIVE" 1820 GOTO 1840 1830 PRINT "BOTH SIDES ARE ON THE OFFENSIVE " 1840 PRINT 1850 REM - CHOOSE STRATEGIES 1860 IF B$ <> "YES" THEN 1910 1870 FOR I=1 TO 2 1880 ON I GOTO 1890,1920 1890 PRINT "CONFEDERATE STRATEGY "; 1900 GOTO 1920 1910 PRINT "YOUR STRATEGY "; 1920 INPUT Y 1930 IF ABS(Y-3)<3 THEN 1960 1940 PRINT "STRATEGY";Y;"NOT ALLOWED." 1950 GOTO 1910 1960 IF B$="YES" THEN 2000 1970 IF Y=5 THEN 2830 1980 GOSUB 3110 1990 GOTO 2170 2000 IF I=2 THEN 2040 2010 LET Y1=Y 2020 PRINT "UNION STRATEGY "; 2030 NEXT I 2040 LET Y2=Y 2050 LET Y=Y1 2060 IF Y2=5 THEN 2020 2070 REM : SIMULATED LOSSES-NORTH 2080 LET C6=(2*C2/5)*(1+1/(2*(ABS(Y2-Y)+1))) 2090 LET C6=C6*(1.28+(5*M2/6)/(B(2)+1)) 2100 LET C6=INT(C6*(1+1/O2)+.5) 2110 REM - IF LOSS > MEN PRESENT, RESCALE LOSSES 2120 LET E2=100/O2 2130 IF INT(C6+E2) "YES" THEN 2350 2320 PRINT "COMPARED TO THE ACTUAL CASUALTIES AT "C$ 2330 PRINT "CONFEDERATE:"INT(100*(C5/C1)+.5)"% OF THE ORIGINAL" 2340 PRINT "UNION: "INT(100*(C6/C2)+.5)"% OF THE ORIGINAL" 2350 PRINT 2360 REM - 1 WHO ONE 2370 IF U <> 1 THEN 2380 2375 IF U2=1 THEN 2460 2380 IF U=1 THEN 2420 2390 IF U2=1 THEN 2440 2400 IF C5+E=C6+E2 THEN 2460 2410 IF C5+E 0 THEN 3180 3140 INPUT Y2 3150 IF Y2 <=0 THEN 3160 3155 IF Y2<5 THEN 3290 3160 PRINT "ENTER 1 , 2 ,3 , OR 4 (USUALLY PREVIOUS UNION STRATEGY)" 3170 GOTO 3140 3180 LET S0=0 3190 LET R=100*RND(0) 3200 FOR I=1 TO 4 3210 LET S0=S0+S(I) 3220 REM - IF ACTUAL STRATEGY INFO IS IN PROGRAM DATA STATEMENTS 3230 REM THEN R-100 IS EXTRA WEIGHT GIVEN TO THAT STATEGY. 3240 IF R