Compucolor.org – Virtual Media

Listing of file='MILL.BAS;01' on disk='vmedia/sharks-sector.ccvf'

100 REM  COPYRIGHT (C) 1980 BY COMPUCOLOR CORPORATION 
110 REM
120 REM  MILL
130 REM  ALTERNATES BETWEEN PLAYERS BASED ON GAME
140 REM  STAGE OF PLAYER - 1=START 2=PLACE 3=MOVE 4=END
150 CLEAR 100
160 REM
170 DIM S(2):S(0)= 1:S(1)= 2:S(2)= 2
180 ON S(P)GOSUB 490,870,1020,1130
190 P= (PAND 1)+ 1:GOTO 180
200 END
210 REM
220 REM
230 REM          SUBROUTINES
240 REM
250 REM    DRAW BOARD
260 PLOT 2,5,118,242,122,118,122,9,5,9,5,118,255
270 PLOT 2,15,102,242,111,102,111,25,15,25,15,102,255
280 PLOT 2,25,86,242,101,86,101,41,25,41,25,86,255
290 PLOT 2,63,9,242,63,41,255,2,63,118,242,63,87,255
300 PLOT 2,5,62,242,25,62,255,2,102,62,242,122,62,255
310 RESTORE 1520:FOR X= 1TO 24
320 READ P(X,1),P(X,0)
330 GOSUB 1460
340 NEXT
350 RETURN
360 REM
370 REM
380 REM  DIR
390 REM
400 REM
410 PLOT 30,16,29,19,3,10,10,15
420 REM
430 PLOT 3,15,17:INPUT " ENTER PLAYER ONE'S NAME: ";P$(1)
440 PLOT 3,15,18:INPUT " ENTER PLAYER TWO'S NAME: ";P$(2):REM 
450 FOR X= 1TO 2:P$(X)= LEFT$ (P$(X),10):NEXT X
460 PLOT 12
470 C(0)= 16:C(1)= 17:C(2)= 18
480 PLOT 29,22:GOTO 260
490 REM 	START
500 DIM SP(24,4),M(24,3),P(24,2)
510 REM
520 RESTORE 780:REM  BOARD CONNECTION
530 FOR X= 1TO 24:REM  4 POSITIONS THAT SHARE 3 WITH X
540 SP(X,0)= 0
550 FOR Y= 1TO 4:REM  0 FOR PLAYER    1-4 POSITIONS
560 READ SP(X,Y)
570 NEXT Y,X
580 RESTORE 690:FOR X= 1TO 24:FOR Y= 0TO 3
590 READ M(X,Y):NEXT Y,X
600 PLOT 15
610 C(0)= 19
620 PLOT 6,2,27,24,12
630 GOSUB 310
640 PLOT 6,43,3,24,12,15:PRINT "                ":PLOT 3,24,13
650 PRINT " pq  oe  a   a  ":PLOT 3,24,14:PRINT " ab  m  l  l "
655 PLOT 3,24,15:PRINT "                "
670 GOTO 410
680 REM   MOVES
690 DATA 2,10,0,0,1,3,5,0,2,15,0,0
700 DATA 11,5,0,0,2,8,4,6,5,14,0,0
710 DATA 12,8,0,0,5,7,9,0,8,13,0,0
720 DATA 1,22,11,0,4,10,19,12,7,16,11,0
730 DATA 9,18,14,0,6,13,15,21,3,14,24,0
740 DATA 12,17,0,0,16,20,18,0,13,17,0,0
750 DATA 11,20,0,0,17,23,19,21,20,14,0,0
760 DATA 10,23,0,0,20,22,24,0,23,15,0,0
770 REM  CONNECTIONS
780 REM
790 DATA 10,22,2,3,1,3,5,8,1,2,15,24
800 DATA 5,6,11,19,2,8,4,6,4,5,14,21
810 DATA 8,9,12,16,2,5,7,9,13,18,7,8
820 DATA 11,12,1,22,10,12,4,19,10,11,7,16
830 DATA 9,18,14,15,6,21,13,15,3,24,13,14
840 DATA 7,12,17,18,16,18,20,23,9,13,16,17
850 DATA 4,11,20,21,17,23,19,21,6,14,19,20
860 DATA 1,10,23,24,20,17,22,24,3,15,22,23
870 REM
880 REM
890 Q$= " "+ P$(P)+ " PLACE AT ":GOSUB 1280
900 IF SP(X,0)< > 0THEN GOSUB 1280:GOTO 900
910 GOSUB 1460
920 SP(X,0)= P
930 REM  DEAL WITH CAPTURES AND CHANGE OF STATE
940 REM  ALL ROUTINES RETURN HERE
950 GOSUB 1340:IF G= 1THEN GOSUB 1400
960 GOSUB 1370:IF G= 2THEN GOSUB 1400
970 F= 0:FOR W= 1TO 24:IF SP(W,0)= (PAND 1)+ 1THEN F= F+ 1
980 NEXT
990 N(P)= N(P)+ 1:IF N(P)= 9THEN S(P)= 3
1000 IF F= 3AND S((PAND 1)+ 1)= 3THEN S((PAND 1)+ 1)= 4
1010 RETURN
1020 REM       MOVE S=3
1030 Q$= "  "+ P$(P)+ " MOVE AT ":GOSUB 1280
1040 IF SP(X,0)< > PTHEN 1030
1050 F= X:Q$= "  TO ":GOSUB 1280
1060 IF SP(X,0)< > 0THEN X= F:GOTO 1030
1070 FOR D= 0TO 3:IF M(F,D)= XTHEN 1090
1080 NEXT :GOTO 1030
1090 SP(F,0)= 0:SP(X,0)= P
1100 GOSUB 1460:TP= P:TX= X:X= F:P= 0:GOSUB 1460
1110 P= TP:X= TX:GOSUB 950
1120 RETURN
1130 REM   END S=4
1140 IF F= 2THEN 1220
1150 Q$= P$(P)+ " MOVE FROM ":GOSUB 1280
1160 IF SP(X,0)< > PTHEN 1150
1170 F= X:Q$= " TO ":GOSUB 1280
1180 IF SP(X,0)< > 0THEN 1150
1190 TX= X
1200 GOSUB 1460:SP(X,0)= P:SP(F,0)= 0:TP= P:P= 0:X= F:GOSUB 1460
1210 X= TX:P= TP:GOTO 950
1220 PLOT 31:P= (PAND 1)+ 1
1230 FOR X= 1TO 24:IF SP(X,0)= PTHEN GOSUB 1460
1240 NEXT :Q$= P$(P)+ "  WINS !!!! "
1250 PLOT 29,C(P),3,16,17,14:PRINT SPC( 33)"":PLOT 3,16,17
1260 PRINT Q$:FOR X= 1TO 4000:NEXT :PLOT 27,11:LOAD "MENU":RUN
1270 REM 	INPUT USED BY ALL
1280 PLOT 29,C(P),3,16,17,14:PRINT SPC( 33)"":PLOT 3,20,17
1290 PRINT Q$;:INPUT "";X
1300 IF X> 24OR X< 1THEN 1280
1310 PLOT 15:RETURN
1320 REM
1330 REM
1340 G= 0
1350 IF (SP(SP(X,3),0)= P)AND (SP(SP(X,4),0)= P)THEN G= 1
1360 RETURN
1370 G= 0
1380 IF (SP(SP(X,1),0)= P)AND (SP(SP(X,2),0)= P)THEN G= 2
1390 RETURN
1400 REM
1410 TX= X:TP= P
1420 Q$= "CAPTURE! REMOVE MARKER AT "
1430 GOSUB 1280:IF SP(X,0)< > (PAND 1)+ 1THEN 1430
1440 P= 0:GOSUB 1460:SP(X,0)= 0:X= TX:P= TP:RETURN
1450 REM 	DRAW MARKER AT 'X'
1460 PLOT 3,P(X,0),P(X,1),29,C(P):PRINT "t";:PLOT 96,96
1470 PRINT "u":PLOT 3,P(X,0),P(X,1)+ 1,96,32,32,96
1480 PLOT 3,P(X,0),P(X,1)+ 2:PRINT "v";:PLOT 96,96:PRINT "w"
1490 PLOT 3,P(X,0)+ 1,P(X,1)+ 1,29,19
1500 PRINT RIGHT$ (STR$ (X),2)
1510 PLOT 3,80,0:RETURN
1520 DATA 1,1,1,30,1,59,5,6,5,30,5,54,9,11,9,30,9,49
1530 DATA 15,1,15,6,15,11,15,49,15,54,15,59,20,11,20,30
1540 DATA 20,49,24,6,24,30,24,54,28,1,28,30,28,59