Movement across friendly territory takes one point; across neutral or hostile territory, two points. Increasing MM will give your armies greater mobility. The three variables KA, KB, and KC affect the outcome of individual battles. KA deter mines how many bots are vaporized, KB controls the number injured, and KC affects how many are dazed. If you make the fractions smaller (1/24, for example), the battles end more quickly. The subroutine starting at line 2600 resolves current
battles.Hex War
For mistake-proof program entry, use "The Automatic Proofreader/' Appendix B, to type in this program.
MM 10 IF PEEK(46)<>64 THEN GRAPHIC1:GRAPHIC0:FAST:
FORJ=0TO15:COLOR4,J+1:K=J*128:FORL=KTOK+127:
BANK14:J1=PEEK(53248+L):BANK0:POKE12288+L,Jl :NEXTL#J
FB 20 BANK15:POKE217,4:POKE2604,28:SLOW PD 30 DIMJ,K,HT,HB,CT,CB,J1,J2,A,B,C#D,E
PK 40 DIM ARMY(31,6,1),BTL(64,1,3),MAP(9,9,2),FQ(2 BQ 50 CN=12:DIM CIT(CN,1)
BC 60 A=RND(-Tl/97):P0$="{BLU}{OFF}g2 P§{DOWN}
{2 LEFT}g6lB*l£":Pl$=ll{YEL} {RVS}£B*1 {OFF}
{DOWN}{2 LEFT}TPUR}g2 Yl"
EP 70 PN=1:ME=31
CE 80 MM=3: REM MAX MOVES JG 90 KA=l/48:KB=l/48:KC=l/32
BX 100 BANK15:POKE217,4:POKE2604,28 ,
SM 110 FORJ=1TO4:READA
LJFQ 120 FORK=ATOA+7:READB:POKEK,B:NEXTK,J RA 130 DATA 12936,240,240,63,15,3,3,3,3
AS 140 DATA 12984,15,15,252,240,192,192,192,192 \j
PP 150 DATA 12840,3,3,3,3,15,63,240,240
BJ 160 DATA 12944,192,192,192,192,240,252,15,15
RG 170 FORJ=0TO63:READK:POKE3584+J,K:NEXT i ^ CC 180 DATA0,255,0,15,195,240,63,0
KM 190 DATA252,48,0,12,48,0,12,48 AE 200 DATA0,12,48,0,12,48,0,12
GD 210 DATA48,0,12,48,0,12,48,0
[42
JA 220 DATA12,48,0,12,48,0,12,48 EG 230 DATA0,12,48,0,12,48,0,12
^ KB 240 DATA48,0,12,48,0,12,63,0
I ' BK 250 DATA252,15,195,240,0,255,0,0
PQ 260 FORJ=1TOCN:FORK=0TO1:READ CIT(J,K):NEXTK:MA rmf P(CIT(J,0),CIT(J,1),2)=1:NEXTJ: REM T&B OF
1 | {SPACE}CITIES
ER 270 DATA 8,4,0,4,8,0,0,8,4,0,4,8 JQ 280 DATA 5,5,3,3,6,3,2,5,5,2,3,6
XK 300 GOSUB600:GOSUB3200:GOSUB600:REM GAME JS 310 CHAR1,6,11:PRINT"{BLU}{RVS}{2 SPACES }L|<M§
{2 SPACES}X.BY§{ 2 SPACES}MN{4 SPACES} gG§gM3 {2 SPACES }NM{ 2 SPACES }OMT"2 SPACES}11
EP 320 CHAR1,6,12:PRINT"{PUR}TRVS}{2 SPACES}gG|&M§
{2 SPACES}LBPit2 SPACES}NM{4 SPACES}NM {2 SPACES}OBM§{2 SPACES}fG§M{2 SPACEST {HOME} I RED} I OFF]11;
SM 330 PRINTSPC(10);"PLEASE WAIT A MOMENT"
FJ 340 GOSUB1500 ME 400 DO
GR 410 POKE208,0
QX 420 GOSUB1900:GOSUB600:GOSUB1710:REM FIND BATTL ES
QG 430 COLOR4,7-2*PN:GOSUB800:REM JOYSTICK
CG 440 FAST:COLOR4,9:GOSUB2100:REM BATTLES AGAIN JJ 450 COLOR4,3:GOSUB2600:REM RESOLVE
EB 460 COLOR4,1:GOSUB2100:REM POST-BATTLE AA 470 COLOR4,16:GOSUB2200:REM SPLIT PRISONERS JP 480 GOSUB 2900:REM REINFORCEMENTS
HB 490 SLOW:COLOR4,8:GOSUB3400 HS 500 PN=1-PN
DS 510 LOOP
JA 600 COLOR4,2:COLOR0,2:COLOR5,16:SCNCLR:PRINT:PR INT:SPRITE1,0
CB 610 FORJ=1TO5:PRINTSPC(13-2*J);:FORK=1TOJ+3:PRI NT MER{ 2 SPACES } " ; :NEXTK:PRINT "ER"
CS 620 PRINTSPC(12-2*J);:F0RK=lT0J+4:PRINT"W f1"]
{2 SPACES }QM ; :NEXTK:PRINT:NEXTJ
'- -'
QX 630 FORJ=1TO5:PRINTSPC(J*2) ; :FORK=1TO10-J:PRINT
11 R{2 SPACES }E" ; :NEXTK:PRINT
r^ SS 640 PRINTSPC(J*2+1);:FORK=1TO9-J:PRINTMQW / C
t2 SPACES}11; :NEXTK:PRINTMQWH
PX 650 NEXTJ
^ CD 660 C$=MUI{DOWN}{2 LEFT}JKM:D$=M{RVS}gV3gC§
f\
{D0mT{2 LEFTjgFliDa71"
MJ 670 COLOR5,3:FORJ=1TO12:GOSUB710:NEXT
HQ 680 J=1:COLOR5,7:IFGN=1THENC$=D$:GOSUB710:J=2:C OLOR5,5:GOSUB710
n
n
43RB 690 IFGN=2THENC$=D$:GOSUB710:J=3:COLOR5,5:GOSUB 710
SH 700 PRINT"{HOME}"?:RETURN
KB 710 K=CIT(J,0):L=CIT(J,l):X=(K-L)*2+19:Y=(12-(K +L))*2+3:CHAR1,X,Y,C$:RETURN
FF 800 IFNX(PN)<2THENRETURN
AX 805 HT=4:HB=4:GOSUB1000:SPRITE1,1,1,0
KE 810 MV=0:CT=0:CB=0:PK=0:REM PICKED UP OR NOT HS 820 K=0:FORJ=1TONX(PN)-1:IF(ARMY(J,0,PN)>0)AND(
ARMY(J,6,PN)<1)THENK=1:J=NX(PN)-1 KX 830 NEXTJ:IFK=0 THEN RETURN
SB 840 GETG$:IFG$=CHR$(13)THENRETURN
HD 850 J=JOY(2):IFJ=0THEN840:ELSE IF(JAND128)THEN1 100:ELSE IF(JAND1)=0THEN840
KK 860 J=(J-1)/2:IFJAND1THENB1=HB+J-2:T1=HT:ELSET1
=HT+1-J:B1=HB
HD 870 IF (TK0)OR(T1>8)THEN840 FP 880 IF (BK0)OR(B1>8)THEN840
KC 890 S1=T1+B1:IF(SK4)OR(S1>12)THEN840
EM 900 HB=B1:HT=T1:GOSUB1000:WINDOW1,1,8,4,1:QN=MA
P(HT,HB,0):IFQN=0THENPRINT"{2 HOME}";:GOTO8 40:ELSE Q1=MAP(HT,HB,1)-1
JF 910 COLOR5,7-2*Q1:PRINTUSING"{RVS}##";QN;:PRINT
"******{OFF}E53";
RH 920 FORJ=0TO3:PRINTUSING"####"7ARMY(QN,J,Q1);:N DD 930 PRINT"{2 HOME}M;:GOTO840EXT
PA 1000 SX=172+16*(HT-HB):SY=264-16*(HT+HB) KC 1010 M0VSPR1 SX SY
SA 1020 IF MAP(HT,HB,2)=1THENSPRITE1,1,3,0:RETURN KP 1030 SPRITE1,1,1,0:RETURN
CX 1100 IFJOY(2)O0THEN1100
FE 1110 IFPK=1THEN1200:REM PICKEDUP, CHECK IF OK FD 1120 IF((MAP(HT,HB,1)<>PN+1)OR(MAP(HT,HB,0)=0))
THENGOTO810:REM NO ONE HOME
XE 1130 AN=MAP(HT,HB,0):IFARMY(AN,6 ,PN) O0THEN810 : REM ARMY AN IS ENGAGED
SD 1140 PK=1:CT=HT:CB=HB:CS=ARMY(AN,0,PN):REM T&B, CURRENT STRENGTH
DP 1150 SOUND1,5000,10 MK 1160 GOTO840
XP 1200 J=((HT=CT)AND(HB=CB)) AQ 1210 IFJAND(MV=0)THEN810 RE 1220 IFJAND(MV>0)THEN1420
MH 1230 AS=ARMY(MAP(HT,HB,0),0,PN):IF((AS>ME)AND(C S>ME))OR((MAP(HT,HB,1)-1=1-PN)AND(AS>0)) T HEN840
FB 1240 DT=ABS(CT-HT):DB=ABS(CB-HB):TL=DB+DT:IF NO T((TL=1)OR((CT+CB=HT+HB)AND(DT=1)))THEN840 44
i r
H H
FS 1250 MG=MAP(HT,HB,0): IF MG=0THEN1300
AE 1260 FORJ=0TO3:ARMY(MG,J,PN)=ARMY(MG,J,PN)+ARMY (AN,J,PN):ARMY(AN,J,PN)=0:NEXTJ
SM 1270 ARMY(MG,6,PN)=1:MAP(CT,CB,0)=0 AD 1280 CS=ARMY(MG,0,PN):AN=MG:MV=MM+l RH 1290 GOTO 1380
FF 1300 N8=MAP(HT,HB,1)-1:MV=MV+1:IF(N8<>PN)THENMV
=MV+1
DK 1310 MAP(CT,CB,0)=0
SA 1320 MAP(HT,HB,0)=AN:MAP(HT,HB,1) = PN+1:ARMY(AN, 4,PN)=HT:ARMY(AN,5,PN)=HB:IF MV>=MMTHEN AR
BR 1340 IF(J2<0)OR(J2>8)THEN1350:ELSE IF(MAP(HT,J2 ,0)>0)THENIF(MAP(HT,J2,1)=2-PN)THENK=1:J=1 :GOTO1360
KE 1350 IF(J3<0)OR(J3>8)OR(JK0)OR(J1>8)THEN1360:E LSE IF (MAP (J1,J3,0)>0) THENIF (MAP (J1,J3,1) = 2-PN)THENK=l:J=l
HK 1360 NEXTJ: REM ZOC
AS 1370 IFK=1THEN ARMY(AN,6,PN)=1:MV=MM+1 EG 1380 A=PN:J=CT:K=CB:C=0:D=0:GOSUB1830
EK 1530 REM STRENGTH, T-POS, B-POS
JD 1540 DATA 64,2,8,64,3,7,64,5,6,64,6,6:REM BLUE QP 1550 DATA 64,2,2,64,3,2,64,5,1,64,6,0:REM VIOLE
T
JK 1600 REM SET RANDOM REINFORCEMENTS AS 1610 FORJ=0TO1:FORK=0TO20
EH 1700 REM ARMIES->MAP SC 1710 FORJ=0TO8:FORK=0TO8
45
u
FX 1720 A=MAP(J,K,1):IFATHENA=A-1:GOSUB1800 HH 1730 NEXTK,J
PH 1740 FORA=0TO1:E=13+A*12:F=A*22:DX=2-4*A:D=0 PF 1750 FORJ=0TO8:C=FQ(J,A):GOSUB1840
HF 1760 E=E+DX*2:IFJ>3THENF=F+DX:E=E-DX XC 1770 NEXTJ,A
CA 1780 RETURN
QC 1800 B=MAP(J,K,0) PH 1810 C=ARMY(B,0,A) BK 1820 D=ARMY(B,6,A)
FJ 1830 E=(J-K+10)*2-1:F=(13-J-K)*2+1: REM T&B TO {SPACE1X/Y
SC 1840 CHAR1,E,F:IFATHENPRINTP1$:ELSEPRINTP0$
MH 1850 IFC=0THENRETURN
PP 1860 COLOR5,(7-2*A):CHAR1,E,F+A
HR 1870 PRINTCHR$(18);RIGHT$(HEX$(C),2);CHR$(146) RD 1880 IFDTHENF=F+1-A:G=1024+E+F*40:POKEG,43:POKE
G+1,43:REM ++
XK 1890 RETURN
GC 1900 SW=0:E=NX(PN)-1:1FE <1THENRETU RN
XJ 1910 FORJ=1TOE-1:IFARMY(J,0,PN)<1THENBEGIN SE 1920 T=ARMY(J,4,PN):B=ARMY(J,5,PN):IFMAP(T,B,0)
=JTHENMAP(T,B,0 )=0
BP 1930 FORK=JTOE:FORL=0TO6:ARMY(K#L,PN)=ARMY(K+1, L,PN):ARMY(K+1,L,PN)=0:NEXTL
JQ 1940 T=ARMY(K,4,PN):B=ARMY(K#5,PN):MAP(T,B,0)=K PH 1950 NEXTK
MA 1960 NX(PN)=NX(PN)-1:J=E:SW=1:BEND FJ 1970 NEXTJ:IF SW THEN1900
MG 2000 FORJ=1TOE:ARMY(J,0,PN)=ARMY(J,0,PN)+ARMY(J ,2#PN)
SD 2010 ARMY(J,2,PN)=ARMY(J,3,PN):ARMY(J,3#PN)=0 QS 2020 ARMY(J,6,PN)=0
PP 2030 NEXTJ:K=NX(1-PN):FOR J=1TOK:ARMY(J#6#1-PN)
=0:NEXT XF 2040 GOSUB2400
DS 2050 IFBP>0 THEN FORJ=0TO1:FORK=1TOBP:A=BTL(K#J ,0)2ARMY(A,6,J)=ARMY(A,6,J)+1:NEXTK,J CA 2060 RETURN
KG 2100 GOSUB2400
BX 2110 A=NX(0):IFNX(l)>ATHENA=NX(l)
EX 2120 FORJ=0TO1:FORK=1TOA:ARMY(K,6,J) = 0:NEXITK,J GP 2130 GOSUB2050
SH 2140 RETURN
PB 2200 FORJ=0TO1:A=1-J:B=NX(J)-1 DD 2210 FORK=1TOB
EM 2220 IF ARMY(K,0,J)<1 THEN BEGIN
Lj
46
JC 2230 PQ(2,A) = FQ(2,A)+ARMY(K,2,J)+ARMY(K,3,J) :IF
FQ(2,A)>255 THEN C=FQ( 2,A) -255 :FQ( 3,A)=FQ (3,A)+C:FQ(2,A)=255JX 2240 FQ(6,A)=FQ(6,A)+ARMY(K,1,J):IF FQ(6,A)>255 THEN C=FQ(6,A)-255:FQ(7#A)=FQ(7,A)+C:FQ(6 ,A)=255
JQ 2250 IF (MAP(ARMY(K,4,J),ARMY(K,5,J),0)=K)AND(M AP(ARMY(K,4,J),ARMY(K,5,J),1)=J+1) THEN MA P(ARMY(K,4,J),ARMY(K,5,J),0)=0
RB 2260 FORL=0TO6:ARMY(K,L,J)=0:NEXTL BB 2270 BEND
FR 2280 IF ARMY(K,6,J)<1 THEN BEGIN:REM EVACUATE I NJURED
AE 2290 FQ(4,J)=FQ(4.J)+ARMY(K,1,J): ARMY(K,1,J)=0 DJ 2300 IF FQ(4,J)>255 THEN C=FQ(4,J)-255:FQ(5,J)=
FQ(5,J)+C:FQ(4,J)=255 KA 2310 BEND
XP 2320 NEXTK,J .-RETURN SJ 2400 BP=0
KG 2410 FORJ=0TO8:Jl=(J-4)*(4-J>0):J2=8-(J>4)*(4-J ):FORK=J1TOJ2
JE 2420 A=MAP(J,K,0) HQ 2430 R=MAP(J#K,1)
BG 2440 IF (A=0)OR(R=0) THEN2490 KQ 2450 IF ARMY(A,0,R-1)<1 THEN2490 DK 2460 T=J+1:B=K:GOSUB2500
HK 2470 B=B-1:GOSUB2500 BP 2480 T=T-1:GOSUB2500 RH 2490 NEXTK#J:RETURN
RR 2500 IF(T<0)OR(B<0)OR(T>8)OR(B>8)THEN RETURN MA 2510 PA=MAP(T,B,0):IF PA=0 THEN RETURN
FG 2520 IF MAP(T,B,1)=R THEN RETURN FX 2530 IF ARMY(PA,0,2-R)<1 THEN RETURN
MA 2540 BP=BP+1:BTL(BP,R-1,0)=A:BTL(BP,2-R#0)=PA:R
ETURN
CF 2600 IFBP=0THENRETURN FC 2610 FORJ=1TOBP
XM 2620 FORK=0TO1:A=1-K QX 2630 AN=BTL(J,K,0)
BF 2640 AS=ARMY(AN,0,K) :HT=ARMY(AN#6 ,K) :CT=INT(AS/
HT)+1
GH 2650 BTL(J,A,1)=INT(CT*KA+1) JC 2660 BTL(J,A,2)=INT(CT*KB+1) MB 2670 BTL(J,A,3)=INT(CT*KC+1) XC 2680 NEXTK,J
MD 2700 FORJ=1TOBP:J0=BTL(J#0#0):J1=BTL(J#1#0) BR 2710 GOSUB3100
CG 2720 ARMY(J0#0,0)=ARMY(J0,0,0)-A*BTL(J,0,1) SK 2730 ARMY(J1,0,1)=ARMY(J1,0,1)-B*BTL(J,1,1)
47
======= U
MS 2740 GOSUB3100
s—BC 2750 OA*BTL(J,0,2):ARMY(J0,0,0)=ARMY(J0,0,0)-C
:ARMY(J0,1,0)=ARMY(J0,1,0)+C ,
FJ 2760 OB*BTL(J,1,2) :ARMY( Jl #0 ,1 )=ARMY( Jl ,0 ,1)-C i *■■
:ARMY(Jl#1,1)=ARMY(Jl,1,1)+C QD 2770 GOSUB3100
AX 2780 C=A*BTL(J,0,3):ARMY(J0,0,0)=ARMY(J0,0,0)-C
I I:ARMY(J0,3,0)=ARMY(J0,3,0)+C ^
FF 2790 C=B*BTL(J,1,3):ARMY(Jl,0,1)=ARMY(J1,0,1)-C :ARMY(Jl,3,1)=ARMY(Jl,3,1)+C
XP 2800 NEXTJ CB 2810 RETURN GQ 2900 A=1-PN:B=0
GG 2910 FORJ=0TO8:FORK=0TO8
PA 2920 IFMAP(J,K,1)=PN+1THENB=B+1 KD 2930 NEXTK,J
JB 2950 FQ(1,PN)=FQ(1,PN)+B: IF FQ(1,PN)>255 THEN {SPACE}B=FQ(1,PN)-2 55:FQ(2,PN)=FQ(2,PN)+B:
FQ(1,PN)=255 GQ 2960 T=4:B=PN*8
SJ 2970 IF MAP(T,B,0)<>0 THEN RETURN
JK 2980 IF MAP(T,B,1)=PN+1 THEN FQ(0,A)=0:FQ(l,A)=
0:GOTO3060
XS 2990 J=NX(A):IFJ>31THENRETURN HR 3000 J1=FQ(0,A) :IF JK1 THEN3060 EP 3010 NX(A)=NX(A)+1
XE 3020 MAP(T,B,0)=J:MAP(T,B,1)=A+1 BK 3030 ARMY(J,0,A)=J1
QR 3040 FORK=1TO3:ARMY(J,K,A)=0:NEXTK PM 3050 ARMY(J,4,A)=T:ARMY(J#5,A) = B
KH 3060 FORK=0TO19:FQ(K,A)=FQ(K+1,A):NEXTK PK 3070 FQ(20#A)=0
BA 3080 RETURN
FS 3100 A=0:FORM=1TO6:IFRND(1)<.5THENA=A+1 AH 3110 NEXTM:B=6-A:RETURN
PS 3200 WINDOW6,7,33,16,1
EJ 3210 PRINT"E7H2 M§B2 L§{RVS}B2 KlBJ3BHiBGl SCE