Sitenotice: 11/29/2018: The wiki is back. It turns out, some anti-virus product on my web server had an issue with the latest version of PHP. My server techs have resolved this issue, and things should be working again. During the investigation, I did restore to a backup from September. There is a chance that any changes done since then were lost, but I do not recall any edits. --OS-9 Al

8/30/2016: Massive re-work is being done on the InfoBox Templates. Read that page to keep up with the plan for that, and adding better keyword tags (categories) to all the pages. --OS-9 Al (talk) 15:28, 31 August 2016 (CDT)

Undercolor/850106/Conqueror

From CoCopedia - The Tandy/Radio Shack Color Computer Wiki
Revision as of 17:39, 1 March 2009 by Cocomag (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Home Articles Companies Publications Hardware People Software Timeline ... Emulators Internet Resources
(Don't see something listed? Click "edit" and add it! Together we can build this database. When making a new info page, refer to this InfoBox Template for guidelines.)



UnderColor, Volume 1, Number 6, March 8, 1985

  • Title: Conqueror
  • Author: Tony Byorick
  • Synopsis: A game for up to six players.
  • Page Scans: Link

Article

Conqueror! may be played with from two to six players. Each player starts with one planet and a supply of ships. By attacking and conquering other planets in the galaxy, any player may become the conqueror. A galaxy is composed of from 10 to 26 planets, each planet garrisoning up to 95 fleets. Some planets can produce a limited number of fleets each stardate. Generated fleets are added at the end of each stardate to the arsenal of the player who owns the planet.

Another planet is attacked by sending an armada of fleets to it. Fleets may travel only at the speed of light, and so might take several stardates to get from one planet to another. Once launched, a fleet may not be recalled. Upon arrival at an enemy planet, attacking fleets automatically engage defending fleets. Battle continues until one player withdraws or is wiped out. You may reinforce a planet in your possession by sending fleets to it.

The winner is the last player on the board, or owns the most planets when the turn counter runs out.

A turn is taken in three parts: arrival phase, command phase, and production phase. During arrival fleets arrive at destination planets. If the destination planet is owned by another player or is a neutral planet, conflict begins. During battle, you may have to input commands. Both attacker and defender have the option of disengaging.

This phase is followed by the command phase. Use the map chart.

To begin the game, load and type RUN. Follow the prompts. ID letters follow sequentially—remember yours! There is no limit to number of turns. Planet range is 10-26. Begin each player’s turn by hitting the up arrow. Right arrow starts the game over. Fleets travel from source to destination. Enter source first, destination second, and number of fleets third. An OK prompt follows—commands are not shown on screen. A command will not be accepted if the source planet is not owned by the commanding player, or the number of fleets being sent exceeds the number stationed at the

source planet. The down arrow key advances the player counter and lets the next player enter moves.

As battle commences, there will be a display: the names of the combatants; the name of the planet under attack; the gunnery rating of each fleet; and the number of fleets on each side. A short pause ensues; this is the time to withdraw if desired "Status" represents the efficiency of the gun crews, and effects how many hits the opposing fleet will take, determined by random. The attacker withdraws by hitting the A key, and the defender by hitting the ; key. You may also withdraw at any time during battle. Withdrawn fleets are automatically routed to the nearest friendly planet. If there are no friendly planets, withdrawing is not allowed. If neither player withdraws, battle continues until one player’s fleets are gone, and possession of the planet passes to the winner. Defenders fire first.

Conqueror! is mostly Basic, with additional assembly language subroutines for easy mixing of text and graphics. The subroutine appeared in the April 1983 issue of The Color Computer Magazine, in an article entitled "Reformat Your Video" by Steve Odneal. A change to Steve’s original screen expander is replacement of the character table. Those of you using Telewriter 64 with Dean Rector‘s "Wizard" upgrade may recognize the script-like characters; Dean kindly gave permission for use of his character set in this one program.

To use the program listing you will need a copy of the screen expander. Any screen expander should work as long as it uses CHR$(11) for implementing x/y cursor positioning. (end)

°Arrival: Fleets are reinforced or battle begins. Either player may disengage.

*Command:

(1) Star Map shows planet’s physical positions.

(2) Strength Map shows fleet strength on each planet.

(3) Production Map shows fleet production per stardate.

(4) Status Map shows ownership. Neutral planets designated by +.

Up Arrow Key and numerical keys 1 -4 change map display. Up Arrow alone for move entry. Down Arrows for next player. Right Arrow for new game.

*Production: Fleets built on production planets. No planet can support more than 95 fleets for more than one stardate.

Listings

Program Listing. Conqueror!
80 ML=PEEK(&H1B)*256+PEEK(&H1C)-&H715:DEFUSR0=ML
90 A=USR0(C)
100 GOSUB 3470 : PMODE 4,1 : PCLS(5) : SCREEN1,1
110 DIM NA$(6)
120 GOTO 340
130 *************** SUBROUTINES **************
140 DRAW"C0BM30,20":GOSUB 4720 ' -R-
150 DRAW"BM55,20": GOSUB 4750 ' —A-
160 DRAW"BM75,20": GOSUB 4780 ' -I-
170 DRAW "BM95,20": GOSUB 4800 ' -D-
180 DRAW"BM120,20": GOSUB 4820 ' —E—
190 DRAW"BM145,20": GOSUB 4770 ' -R-
200 DRAW"BM30,60": GOSUB 4840 ' -0-
210 DRAW"BM55,60": GOSUB 4860 ' -F-
220 DRAW"BM30,100": GOSUB 4720 ' -R-
230 DRAW"BM50,100": GOSUB 4780 ' -I-
240 DRAW"BM70,100": GOSUB 4880 ' -G-
250 DRAW"BM95,100": GOSUB 4820 ' -E-
260 DRAW"BM123,100":GOSUB 4900 ' -L-
270 GOSUB 4910
280 FORJ=1TO3000:NEXTJ:RETURN
290 '
300 ' ***POSITION CURSOR***
310 PRINTCHR$(11);CHR$(X);CHR$(Y);:RETURN
320 '
330 '************* CONT. INITIALYZING *********
340 GOSUB 140
350 PCLS(5)
360 PRINT
370 PRINT "                 ENTER PLAYER NAMES"
380 NA$(0)="BOBO"
390 FOR X=1 TO 6
400 PRINT "                     ";
410 INPUT NA$(X)
420 IF NA$(X)="" THEN X=X—1 : GOTO 450
430 NEXT X
440 X=X-1
450 NP=X
460 '
470 PRINT
480 PRINT "                  How many turns "
490 PRINT "                     ";:INPUTTN
500 IF TN<1 THEN TN=5
510 PRINT : PRINT "                 How many planets "
520 PRINT "                     ";:INPUTPN
530 IF PN>26 THEN PN=26
540 IF PN<10 THEN PN=10
550 '
560 ' ********** ARRAYS ***********
570 DIM X(PN), Y(PN), PRO(PN), STR(PN), OWN(PN)
580 DIM DSC(PN)
590 DIM AL$(PN), ARR(25), SGT(25), DES(25), PLR(25)
600 GOSUB3470:X=15:Y=12:COSUB3560:PRINT"One moment please ...      ";
610 FOR J=1TO25:ARR(J)=0:NEXTJ
620 '*********************************************
630 '** CREATE GALAXY **
640 '****
650 '*********************************************
660 '
670 ' == INIT ALPHA ==
680 RESTORE
690 DATA A,B,C,D,E,F,G,H,I,J,K,L,M,N
700 DATA O,P,Q,R,S,T,U,V,W,X,Y,Z
710 FOR J=1 TO PN
720 READ AL$(J)
730 OWN(J)=0 : DSC(J)=0
740 T1=RND(16)-1:T2=RND(10)-1
750 IF T1<1 THEN 740
760 FOR K=1 TO J
770 IF X(K)=T1 AND Y(K)=T2 THEN 740
780 IF Y(K)=T2 AND X(K)=T1-1 THEN 740
790 IF Y(K)=T2 AND X(K)=T1+1 THEN 740
800 NEXT K
810 X(J)=T1:Y(J)=T2
820 NEXT J
830 '********
840 F0R J=1 TO NP:PRO(J)=9+RND(2):STR(J)=80+RND(19)
850 OWN(J)=J ; DSC(J)=1
860 NEXT J
870 FOR J=NP+1 TO PN
880 PRO(J)=5*RND(2)-5:STR(J)=5*RND(4)-5
890 NEXT J
900 '
910 ' === DRAW STAR MAP ===
920 GOSUB 3700: GOSUB 3490
930 *********************************************
940 '** MAIN PLAY LOOP **
950 *********************************************
960 TC=0
970 D1=0
980 TC=TC+1
990 ' === ANY ARRIVALS ? ===
1000 FORK=1 TO 15:IF ARR(K)=TC THEN PTR=K:GOT01530
1010 NEXT K
1020 GOSUB 4970 ' DISPLAY DATE
1030 GOSUB 4300 ' CHECK FOR PLAYER OUT
1040 IF GC=NP-1 THEN 2730
1050 ' === GET PLAYER COMMANDS ===
1060 FOR PLR=1 TO NP
1070 IF NA$(PLR)="DONE" THEN 2390
1080 X=20:Y=20:GOSUB3560:PRINT"Commander ";NA$(PL);
1090 ' === SOURCE ===
1100 X=20:Y=21:GOSUB3560:PRINT"from ? ";
1110 GOSUB 3720
1120 IF L=10 THEN 2360
1130 IF L=94 THEN 2470
1160 IF L>90 OR L<65 THEN 1110
1150 SRC=L-64
1160 IF SRC>PN THEN 1110
1170 IF NOT OWN(SRC)=PLR THEN 1110
1180 PRINT " OK";
1190 PLAY"O5L64A"
1200 ' === DESTINATION ===
1210 X=20:Y=22:GOSUB3560:PRINT"to ? ";
1220 GOSUB 3720
1230 IF L=94 THEN 2320
1240 IF L>90 OR L<65 THEN 1220
1250 DES=L-64
1260 IF DES=SRC THEN 1220
1270 IF DES>PN THEN 1220
1280 PRINT " OK";
1290 PLAY"O5L64A"
1300 ' ===== GET STRENGTH ======
1310 X=20:Y=23:GOSUB3560:PRINT"strength ? ";
1320 GOSUB 3770
1330 IF SGT>STR(SRC) THEN 1320
1340 PRINT " OK";
1350 ' === X DIS ===
1360 X=ABS(X(SRC)-X(DES))
1370 ' === Y DIS ===
1380 Y=ABS(Y(SRC)-Y(DES))*4
1390 ' === TOT DIS ==
1400 TD=SQR((XD*XD)+(YD+YD))
1410 TD=FIX(TD)
1420 ' === TRAV TIME ===
1430 IF TD<2 THEN TRAV=1 : GOTO 1460
1440 TRAV=FIX(TD/2)
1450 ' ======== UPDATE ARRAYS =======
1460 GOSUB 3890 ' ENTRY TO SCHEDULE IN 'J'
1470 ARR(J)=TC+TRAV
1480 SGT(J)=SGT
1490 DES(J)=DES
1500 PLR(J)=PLR
1510 STR(SRC)=STR(SRC)-SGT
1520 GOTO 2320
1530 GOSUB 4470: FORN=1TO100:NEXTN
1540 '*******************************************
1550 '** **
1560 '** BATTLE/ARRIVAL PHASE **
1570 '** **
1580 '*******************************************
1590 '
1600 ' == FRIEND OR FOE PLANET ? == ==
1610 IF PLR(PTR)=OWN(DES(PTR)) THEN 2150
1620 ' === INIT BATTLE VARIABLES ===
1630 B1$=NA$(PLR(PTR))
1660 B2$=NA$(OWN(DES(PTR)))
1650 B3=RND(99):IF B3<25 THEN B3=25
1660 B4=RND(99):IF B4<35 THEN B4=35
1670 B5=SGT(PTR)
1680 B6=STR(DES(PTR))
1690 B7$=AL$(DES(PTR))
1700 GOSUB 4070' CLEAR SCREEN AND PRINT BATTLE READ OUTS.
1710 ' === FIRE DEFENDER SHIPS ===
1720 FOR K=1 TO B6 : SH=RND(200)
1730 L$=INKEY$:IFL$="A"ORL$=";"THENL=1:GOT02900:' RETREAT
1740 PLAY "O4L128CC"
1750 FORN=1TO2:NEXTN
1760 IF SH<B4 THEN 1870
1770 NEXT K
1780 ' === FIRE ATTACKER SHIPS ===
1790 FOR K=1 TO B5 : SH=RND(200)
1800 L$=INKEY$:IFL$="A"ORL$=";"THENL=0:GOTO2900:'RE
TREAT
1810 PLAY "O4L128C"
1820 FORN=1 TO 2:NEXTN
1830 IF SH<B3 THEN 1910
1840 NEXT K
1850 GOTO 1720
1860 '
1870 B5=B5-1 : GOSUB 3940 : PLAY "O5L128EO2F"
1880 IFB5<1 THEN 2010
1890 GOTO 1770
1900 '
1910 B6=B6-1: GOSUB 3960 : PLAY "O5L128EO2F"
1920 IFB6<1 THEN 1960
1930 GOTO 1840
1940 ' === UPDATE ARRAYS ===
1950 ' === ATTACKER WINS ===
1960 OWN(DES(PTR))=PLR(PTR)
1970 WI$=B1$
1980 STR(DES(PTR))=B5
1990 GOTO 2040
2000 ' == DEFENDER WINS ==
2010 STR(DES(PTR))=B6
2020 WI$=B2$
2030 ' ==UPDATE ARRIVAL ==
2040 DSC(DES(PTR))=1 'PLANET MAY NOW PRODUCE FLEETS
2050 ARR(PTR)=0:SGT(PTR)=0:DES(PTR)=0:PLR(PTR)=0
2060 GOSUB 5280 ' CLEAR LOWER BOX
2070 X=23:Y=20:GOSUB3560:PRINT"Commander";
2080 X=25:Y=21:GOSUB3560:PRINT WIS;
2090 X=25:Y=22:GOSUB3560:PRINT"wins";
2100 X=23:Y=23:GOSUB3560:PRINT"p1anet ";B7$;
2110 FOR K=1 TO 1200:NEXT K
2120 GOSUB 4660 ' ** PACK ARR TABLE **
2130 DM=1:GOSUB 5280:GOTO1000
2140 ' == REINFORCEMENTS ==
2150 '======= REINFORCEMENT =========
2160 GOSUB5240: ' CLEAR BOX
2170 X=24:Y=20:COSUB310:PRINT"ARRIVAL";:PLAY"O5L128F":FOR K=1 TO 600:NEXT K
2180 X=24:Y=22:COSUB310:PRINT "Planet ";
2190 PLAY"G"
2200 X=26:Y=23:GOSUB310:PRINT AL$(DES(PTR));" ";
2210 X=2:Y=20:COSUB310:PRINT"Commander ";NA$(PL(PT));
2220 X=2:Y=22:GOSUB310:PRINT"old strength= ";
2230 PRINT STR(DES(PTR));
2240 STR(DES(PTR))=STR(DES(PTR))+SGT(PTR)
2250 X=2:Y=23:COSUB310:PRINT"new strength= ";
2260 PRINT STR(DES(PTR));
2270 FORK=1TO2600:NEXTK
2280 ARR(PTR)=0
2290 GOTO 2130
2300 '          REPEAT
2310 '          ERASE.OLD BOX INFO
2320 X=20:Y=21:GOSUB 3560:PRINT"                          "
2330 X=20:Y=22:GOSUB 3560:PRINT"                          "
2340 X=20:Y=23:GOSUB 3560:PRINT"                          "
2350 GOTO 1100
2360 ' ===== NEXT PLAYERS TURN =====
2370 PLAY"O4L16C" : GOSUB4250
2380 IF NOT DM=1 THEN GOSUB 5240:GOSUB 3490
2390 NEXT PLR
2400 IF TC>TN—1 THEN GOSUB 5100:GOTO2800
2410 ' == REINFORCEMENTS ==
2420 FORK=1TOPN : IFDSC(K)=1 THEN STR(K)=STR(K)+PRO(K)
2430 IFSTR(K)>95 THEN STR(K)=95
2440 NEXT K
2450 GOTO980
2460 ' ==== DIRECTIVE PROCESSOR ====
2470 X=2:Y=22:GOSUB 3560:PRINT"Directive?";
2480 GOSUB 3720
2490 IFL=94THEN 2650         'CONTINUE
2500 IFL=9 THEN GOTO 600
2510 IFL=52 THEN 2670
2520 IFL=50THENGOTO2590 ' INTELLIGENCE
2530 IFL=49THENGOTO2620 ' STAR MAP
2540 IFL=51 THEN GOTO2690 ' PRODUCTION
2550 L=1
2560 X=12:Y=22:GOSUB3560
2570 GOT02480
2580 ' = INTELL =
2590 '
2600 DM=2:GOSUB 5240: GOSUB3640:GOTO2560
2610 ' = MAP =
2620 '
2630 DM=1:GOSUB 5240:GOSUB3490:GOTO2560
2640 ' == CONT ==
2650 X=1:Y=22:GOSUB3560:PRINT" ";:GOTO1100
2660 ' == STATUS ==
2670 GOSUB 5240: GOSUB3980: GOTO2560
2680 ' === PRODUCATION ===
2690 GOSUB 5240: GOSUB 3590 : GOTO 2560
2700 '
2710 ' ***:CHECK FOR PLAYERS OUT:***
2720 ' ***:GAME OVER:****
2730 GOSUB 5240 : ' CLEAR BIG BOX
2740 GOSUB 3980 ' STATUS DISPLAY
2750 GOSUB 5280 : ' CLEAR LITTLE BOX
2760 FOR K=1 TO NP
2770 IF NOT NA$(K)="DONE" THEN 2800
2780 NEXT K
2790 PRINT "ERROR";
2800 X=23:Y=20:GOSUB310:PRINT"Game over";
2810 X=23:Y=21:GOSUB310:PRINT"Commander";
2820 X=25:Y=22:GOSUB310:PRINT NA$(K);
2830 X=19:Y=23:GOSUB310:PRINT"Ru1es the galaxy";
2840 FOR J=1TO 10000:NEXT J:PCLS(5):GOSUB140
2850 Z$=INKEY$:IF Z$=""THEN 2850
2860 RUN
2870 '********************************************
2880 '************ DISENGAGEMENT *****************
2890 '********************************************
2900 IF L$="A" THEN 2920
2910 DIS=OWN(DES(PTR)) : AMT=B6 : GOTO 2940
2920 DIS=PLR(PTR) : AMT=B5
2930 ' ==== ANY PLANETS LEFT ? ====
2940 '
2950 IF DIS=0 THEN 3420
2960 FOR M=1 TO PN
2970 IF DES(PTR)=M THEN 2990
2980 IF OWN(M)=DIS THEN 3020
2990 NEXT M
3000 GOTO 3420
3010 ' ==== FIND NEAREST PLANET ====
3020 SD=200
3030 SRC=DES(PTR)
3040 FOR DES=1 TO PN
3050 IF NOT OWN(DES)=DIS THEN 3120
3060 IF DES=SRC THEN 3120
3070 ' ==== FIND DISTANCE ====
3080 XD=ABS(X(SRC)—X(DES))
3090 YD=ABS(Y(SRC)-Y(DES))*2
3100 TD=SQR((XD*XD)+(YD*YD))
3110 IF TD<SD THEN SD=TD:FPN=DES
3120 NEXT DES
3130 TD=FIX(SD)
3140 IF TD<2 THEN TRAV=1:GOTO 3160
3150 TRAV=FIX(TD/2)
3160 TIME=TC+TRAV
3170 ' ==== FIND LOSSES ====
3180 DL=RND(30)/100
3190 LOSS=FIX(AMT*DL)
3200 AMT=AMT-LOSS
3210 ' ==== UPDATE ARRAYS ====
3220 GOSUB 3890 :' FIND ENTRY
3230 ARR(J)=TIME
3240 SGT(J)=AMT
3250 DES(J)=FPN
3260 PLR(J)=DIS
3270 IF L$="A" THEN 3300
3280 OWN(DES(PTR))=PLR(PTR)
3290 ' ==== INFORM PLAYERS ====
3300 '********:X=22:Y=20:GOSUB310:PRINT"DISENGAGE";
3310 PLAY"O5L128F":FORB=1TO400:NEXTB:'********
3320 PLAY "L12805G"
3330 X=22:Y=20:GOSUB310:PRINT"Commander";
3340 PLAY "G"
3350 X=25:Y=21:GOSUB310:PRINT NA$(DIS);
3360 PLAY "G"
3370 X=23:Y=22:GOSUB310:PRINT"withdraws";
3380 PLAY "G"
3390 X=22:Y=23:GOSUB310:PRINT AMT;" fleets";
3400 FOR D=1 TO 1600: NEXT D
3410 IF L$="A" THEN 2010 ELSE 1960
3420 IF L=1 THEN 1740 ELSE 1810
3430 '********************************************
3440 '              ** SUBROUTINES **
3450 '********************************************
3460 '                == CLS ==
3470 PRINTCHR$(12);CHR$(16):RETURN
3480 '            == DRAW PLANETS ==
3490 GOSUB 3570:PRINT"Star Map       ";:DRAW"C0;BM0
,0D155R255U155"
3500 DM=1
3510 FORJ=1TOPN:X=X(J)*2+X(J):Y=Y(J)*2:GOSUB310
3520 PRINTAL$(J);:NEXTJ
3530 DRAW"C0;BM0,0D155R255U155": RETURN
3540 ' == POSITION CURSOR ==
3550 PRINTCHR$(11);CHR$(X);CHR$(Y+1);:RETURN
3560 PRINTCHR$(11);CHR$(X);CHR$(Y);:RETURN
3570 PRINTCHR$(11);CHR$(2);CHR$(20);:RETURN
3580 ' == DRAW PRODUCTION ==
3590 GOSUB 3570:PRINT"Production";:DRAW"CO;BM0,155R
255U180"
3600 DM=3
3610 FORJ=1TOPN:X=X(J)*2+X(J)—1:Y=Y(J)*2:GOSUB310
3620 PRINTPRO(J);:NEXTJ: DRAW"C0;BM0,155U180" : RET
URN
3630 ' == DRAW STRENGTH ==
3640 GOSUB 3570:PRINT"Strength ";:DRAW"C0;BM0,
155R255U180"
3650 DM=2
3660 FORJ=1TOPN:X=X(J)*2+X(J)-1:Y=Y(J)*2:GOSUB310
3670 A=STR(J)
3680 PRINTA;:NEXTJ:DRAW"C0;BM0,155U180":RETURN
3690 ’ === CLS (NO HOME) --=
3700 X=0:Y=22:GOSUB3560:PRINTCHR$(12):RETURN
3710 ' === PLAYER INPUT ===
3720 L$=INKEY$
3730 IF L$="" THEN 3720
3740 L=ASC(L$)
3750 RETURN
3760 ' === STRENGTH INPUT ===
3770 GOSUB 3720 ‘    GET  'L‘
3780 PLAY"O5L64A"
3790 IF L>57 OR L<30 THEN 3770
3800 L=L-48 : L1=L
3810 '
3820 GOSUB 3720 ' GET 'L'
3830 PLAY"O5L64A"
3840 IF L=13 THEN SGT=L1 : GOTO 3870
3850 IF L>57 OR L<48 THEN 3820
3860 L1=L1*10 : L2=L-48 : SGT=L1+L2
3870 RETURN
3880 ' ==== FIND ENTRY ===
3890 FOR J=1 TO 25
3900 IF ARR(J)=0 THEN RETURN
3910 NEXT J
3920 J=1 : RETURN
3930 ’ === UPDATE ATTACTKER ===
3940 X=10:Y=23:GOSUB3560:PRINTB5;:RETURN
3950 ' === UPDATE DEFENDER ===
3960 X=45:Y=23:GOSUB3560:PRINTB6;:RETURN
3970 ' ==== DRAW STATUS =====
3980 GOSUB 3570:PRINT"Status ";:DRAW"C0;BM0,0D155R255U155"
3990 FORJ=1 TO PN
4000 DM=4
4010 K$=AL$(OW(J))
4020 IFOWN(J)=0 THEN K$="+"
4030 X=X(J)*2+X(J):Y=Y(J)*2:GOSUB3560
4040 PRINTK$;:NEXTJ
4050 DRAW"C0;BM0,0D155R255U155":RETURN
4060 ' === DRAW NEW BATTLE SCREEN ====
4070 GOSUB5280
4080 X=22:Y=20:GOSUB3560:PRINT"CONFLICT";
4090 PLAY"L12805F":FORK=1 TO 400:NEXT K
4100 X=23:Y=22:GOSUB3560:PRINT"P1anet";
4110 X=25:Y=23:GOSUB3560:PRINTB7$;
4120 FORK=1 TO 500:NEXTK
4130 X=2:Y=20:GOSUB3560:PRINT"Attacker";
4140 X=3:Y=21:GOSUB3560:PRINTB1$;
4150 X=2:Y=22:GOSUB3560:PRINT"Status= "B3;;
4160 X=2:Y=23:GOSUB3560:PRINT"F1eets= "B5;
4170 '[][][][][][][][][][][][][][][
4180 X=39:Y=20:GOSUB3560:PRINT"Defender";
4190 X=40:Y=21:GOSUB3560:PRINTB2$;
4200 X=37:Y=22:GOSUB3560:PRINT"Status= "B4;
4210 X=37:Y=23:GOSUB3560:PRINT"F1eets= "B6;
4220 FOR K=1TO 2600:NEXTK
4230 RETURN
4240 ' ====ERASE OLD BOX INFO====
4250 X=20:Y=20:GOSUB3560:PRINT"                  ";
4260 X=20:Y=21:GOSUB310:PRINT"                  ";
4270 X=20:Y=22:GOSUB310:PRINT"                  ";
4280 RETURN
4290 ' ==== CHECK FOR PLAYER OUT ====
4300 GC=0
4310 FOR N=1 TO NP
4320 IF NA$(N)="DONE" THEN GC=GC+1 ; GOTO 4400
4330 FOR K=1 TO PN
4340 IF OWN(K)=N THEN GOTO 4400
4350 NEXT K
4360 FOR K=1 TO 15
4370 IF PLR(K)=N THEN GOTO 4400
4380 NEXT K
4390 NA$(N)="DONE"
4400 NEXT N
4410 GC=0
4420 FOR N=1 TO NP
4430 IF NA$(N)="DONE" THEN GC=GC+1
4440 NEXT N
4450 RETURN
4460 ' === FLASH PLANET ===
4470 A$=AL$(DES(PTR))
4480 X=X(DES(PTR))
4490 X=X*2+X
4500 Y=Y(DES(PTR))
4510 Y=Y*2
4520 A=ASC(A$) : B=A+128
4530 FOR N=1 TO 5
4540 GOSUB 310 : PRINT " ";
4550 FOR J=1 TO 20: NEXT J
4560 GOSUB 310 : PRINT CHR$(A);
4570 FOR J=1 TO 20: NEXT J
4580 NEXT N
4590 RETURN
4600 ' ==== NORMAL PLANET ====
4610 X=X(DES(PTR)):X=X*2+X
4620 Y=Y(DES(PTR)):Y=Y*2
4630 GOSUB310 : PRINT AL$(DES(PTR));
4640 RETURN
4650 ' ==== PACK ARRIVAL TABLE ====
4660 FOR J=1 TO 25
4670 IF ARR(J)=0 THEN PLR(J)=0
4680 NEXT J
4690 RETURN
4700 ' ==== DRAW TITLE PAGE ====
4710 ' == R ==
4720 DRAW "D30R1U30R6D1L5R8L3D1R4C1R2G1R3G1R1G1R2G1
R2D5U4L1D6H1D2H1D2H1D4F1DIF1D1F2D1F2D1F1L2U2L1U1L1U
2L1U1L1U2L1U2L1U3L2F1L8R5D1L5"
4730 RETURN
4740 ' == A ==
4750 DRAW "BD30U2D2R1U5D3R1U6D4R1U7D4R1U6D3R11U1L10
U5D3R1U6D3R1U6D3R1U6D3R1U7E1D2D6U3R1D6U3R1D6U3R1D5U
3R1D7U4R1D6U2R1D5U3R1D6U3R1D5R1U2"
4760 RETURN
4770 ' == I ==
4780 DRAW "BR9D30R1U30" : RETURN
4790 ' == D ==
4800 DRAW "D30R1U30R8L7D1R9L2D1R4L2D1R4L2D1R2GR2GR2GRGRD2U2RD15U13RD10L2D5U3LD4HD2HD2HLDL3R3DL10DR7U2R5" : RETURN
4810 ' == E ==
4820 DRAW "D30R19UL18U14R13UL13U13R18UL19" : RETURN
4830 ' == O ==
4840 DRAW "BD3D23FU25FU2FUER11L11DR13GR2GR2D23U23LD24HD2HDGL11R11UL13EL2EL2" : RETURN
4850 ' == F ==
4860 DRAW "D29RU17R13UL13U10R19UL19" : RETURN
4870 ' == G ==
4880 DRAW "BR19BD3D3LU4GU2GLELUL10R10DL11FL3FLFL2GD21U21RD22ED2ED2ED2R11L11UR13L2UR3HRHR2U6L6DR5D5":
RETURN
4890 ’ == L ==
4900 DRAW "D30R19UL18U29" : RETURN
4910 X=6:Y=18:GOSUB310:PRINT"An intergalactic game of strategy by ";
4920 X=18:Y=20:GOSUB310:PRINT"Tony Byorick";
4930 PRINTCHR$(16);
4940 DRAW "BM90,168R60"
4950 RETURN
4960 ' ========== DISPLAY DATE =========
4970 D1=D1+1
4980 IF D1>9 THEN 5000
4990 GOTO 5050
5000 D1=0 : D2=D2+1
5010 IF D2>9 THEN 5030
5020 GOTO 5050
5030 D2=0 : D3=D3+1
5040 IF D3>9 THEN D3=0
5050 X=43:Y=20:GOSUB310:PRINT"Date";
5060 P1=(D2*10)+D1
5070 X=40:Y=21:GOSUB310:PRINTD3;":";D2;D1;
5080 RETURN
5090 ' ========== CHECK FOR WINNER =========
5100 FOR L=1 TO NP:STR(L)=0:NEXT L ' RESET STR
5110 FOR J=1TONP
5120 FOR L=1TOPN
5130 IF OWN(L)=J THEN STR(J)=STR(J)+1
5140 NEXT L:NEXT J
5150 H=0 : FOR J=1 TO NP
5160 IF STR(J)>H THEN K=J:H=STR(J)
5170 NEXT J
5180 GOSUB 5240 ' CLEAR BIG BOX
5190 GOSUB 3980' STATUS DISPLAY
5200 GOSUB 5280 ' CLEAR SMALL BOX
5210 RETURN
5220 '
5230 '***** CLEAR BIG BOX *****
5240 DRAW "C5"
5250 RETURN
5260 '
5270 '***** CLEAR LITTLE BOX *****
5280 DRAW "C5"
5290 FOR Y=160 TO 190
5300 LINE(3,Y)-(250,Y),PSET
5310 NEXT Y
5320 RETURN