MediaWiki:Sitenotice:
2024-03-02: The wiki ran out of disk space, so things were not working. This has been resolved by adding another 5GB of quota ;-) Thanks to Tim Lindner for reporting the issues.
2020-05-17: If a page gives you an error about some revision not being found, just EDIT the page and the old page should appear in the editor. If it does, just SAVE that and the page should be restored. OS-9 Al (talk) 12:22, 17 May 2020 (CDT)
Undercolor/850106/Conqueror
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