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