Compucolor.org – Virtual Media

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

0 REM       FOX AND HOUNDS  KILOBAUD 9/78 (J.INMAN)
1 REM  MODIFIED FOR CCII AND FOX STRATEGY BY T.MONTEMARANO


2 PLOT 12:GOTO 5000
5 CLEAR 200
8 DIM P(9,9)
9 PLOT 15
10 PLOT 27,24,8
15 PLOT 12
16 QQ= 0
17 HF= 0
18 PRINT :PRINT
20 C= 1
25 ST= 1:REM  * * * CAN'T MOVE SAME UNIT 2X'S * * *
30 PRINT TAB( 30);"neee    eeee    eeee    eeee    "
40 GOSUB 2000
50 GOSUB 2000
55 C= C+ 1
56 IF C= 8THEN 300
60 FOR I= 1TO 3:PRINT TAB( 30);"                               b"
70 NEXT
75 C= C+ 1
80 FOR I= 1TO 3:GOSUB 2000:NEXT
85 GOTO 55
250 FOR C= 0TO 8STEP 2
260 P(2,C)= 1:P(4,C)= 1:P(6,C)= 1:P(8,C)= 1:P(3,C)= 4:P(5,C)= 4:P(7,C)= 4
265 NEXT
270 FOR C= 1TO 7STEP 2
280 P(2,C)= 4:P(4,C)= 4:P(6,C)= 4:P(8,C)= 4:P(3,C)= 1:P(5,C)= 1:P(7,C)= 1:NEXT
298 GOTO 390
300 GOSUB 3000
310 GOSUB 3000
320 PRINT TAB( 30);:PRINT "                m"
328 PLOT 8
330 PRINT TAB( 30);" C1  C2  C3  C4  C5  C6  C7  C8"
335 FOR I= 1TO 8
340 PLOT 3,26,3* I,6,5:PRINT "L";I:PLOT 6,2:NEXT
345 T9= PEEK (33209):T8= PEEK (33210):T7= - (T8+ T9):T6= RND (T7):T6= RND (1)
350 GOTO 250
390 RESTORE
400 READ PF,PB,P1,P2,PO,PS
410 FOR C= 1TO 8STEP 2
420 P(1,C)= 1:P(1,C+ 1)= 2:NEXT
425 H0$= "{}"
430 SH$= "  ":SF$= "  ":SB$= "  "
435 TH$= "``":TF$= "``"
436 FT$= "{}"
437 SF$= "  "
438 SB$= "  "
440 FOR C= 0TO 9
445 P(0,C)= 1:P(C,0)= 1:P(9,C)= 1:P(C,9)= 1:NEXT
450 P(8,5)= 3:X= 8:Y= 5:A= X:B= Y
500 GOSUB 3100
505 R1= 0:S1= 0
510 QL= 1:QC= 2:GOSUB 3200
520 QC= 4:GOSUB 3200
530 QC= 6:GOSUB 3200
540 QC= 8:GOSUB 3200
550 YM$= "* * * YOU MOVE * * *"
560 YF$= "     FROM (L,C)"
570 YT$= "       TO (L,C)"
590 CM$= "COMPUCOLOR MOVE"
595 CY= 16
600 REM  * * *  PLAYER MOVES  * * *
603 GOSUB 5500
605 IF HF= 1THEN PLOT 3,1,CY- 7:PRINT "### YOU CAN'T MOVE ###":GOTO 1500
610 PLOT 3,1,16:PRINT YM$
615 FOR I= - 1TO 7:PLOT 3,0,CY+ I:PRINT " ":NEXT
617 PLOT 3,0,CY- 2:PRINT SPC( 21)
620 PLOT 3,1,18:PRINT "                    "
622 PLOT 3,0,18:PRINT " "
625 PLOT 3,1,17:PRINT YF$:INPUT F,F1
627 FOR I= - 1TO - 2:PLOT 3,1,CY+ I:PRINT SPC( 20):NEXT
628 IF F< 0OR F> 8THEN PLOT 3,1,CY- 2:PRINT "NOTHING THERE":PLOT 3,1,CY- 1:PRINT "TRY AGAIN":GOTO 620
629 IF F1< 0OR F1> 8THEN PLOT 3,1,CY- 2:PRINT "NOTHING THERE":PLOT 3,1,CY- 1:PRINT "TRY AGAIN":GOTO 620
630 IF P(F,F1)< > 2THEN PLOT 3,1,CY- 2:PRINT "NOTHING THERE":PLOT 3,1,CY- 1:PRINT "TRY AGAIN":GOTO 620
635 PLOT 3,1,CY- 2:PRINT SPC( 20):PLOT 3,1,CY- 1:PRINT SPC( 20)
640 PLOT 3,27+ (4* F1),3* F:PRINT TH$
650 PLOT 3,0,CY+ 4:PRINT SPC( 20):PLOT 3,1,CY+ 3:PRINT YT$:INPUT T,T1
655 PLOT 3,1,CY- 2:PRINT SPC( 20)
660 IF T= 0THEN PLOT 3,1,CY- 2:PRINT "START TURN OVER":GOTO 680
670 GOTO 690
680 FOR I= - 1TO 5:PLOT 3,1,CY+ I:PRINT SPC( 20):NEXT :QL= F:QC= F1:GOSUB 3200:GOTO 610
690 IF T< = FTHEN PLOT 3,1,CY- 2:PRINT "CAN'T MOVE BACKWARDS":GOTO 650
694 IF T< 1OR T> 8THEN 710
696 IF T1< 1OR T1> 8THEN 710
700 IF T1= F1+ 1OR T1= F1- 1AND P(T,T1)= 4THEN 730:REM  GOOD MOVE
710 PLOT 3,1,CY- 2:PRINT "    INVALID MOVE    ":GOTO 650
730 P(F,F1)= 4:P(T,T1)= 2:QL= T:QC= T1:GOSUB 3200:FOR I= 1TO 200:I= I:NEXT :QL= F:QC= F1:GOSUB 3500
735 ON ST+ 1GOTO 800,740,780
740 P(T,T1)= - 2:IF R1= 0THEN 770
750 QL= R1:QC= S1:GOSUB 3500:P(R1,S1)= 4
755 P(R1,S1)= 2
760 GOSUB 3200
770 R1= T:S1= T1:GOSUB 3800
780 REM  * * * FUTURE SPACE FOR RNDM MOVES
800 REM  CC II MOVES
803 PLOT 3,1,CY- 6:PRINT CM$
805 PLOT 3,1,CY- 5:PRINT SPC( 20)
806 PLOT 3,1,CY- 4:PRINT SPC( 21)
807 PLOT 3,0,CY:PRINT SPC( 21)
810 QL= X:QC= Y:GOSUB 3400
815 L= X:C= Y
820 FOR Z= 1TO 4
830 ON ZGOTO 840,850,860,870
840 LL= L+ 1:CC= C- 1
845 V(Z)= PB:GOTO 900
850 LL= L+ 1:CC= C+ 1
855 V(Z)= PB:GOTO 900
860 LL= L- 1:CC= C- 1
865 V(Z)= PF:GOTO 900
870 LL= L- 1:CC= C+ 1
875 V(Z)= PF
900 IF P(LL,CC)< 4THEN V(Z)= - 20:GOTO 980
910 GOSUB 3700
915 IF LL= 1THEN 1500:REM   CC II WINS
916 IF L< 4THEN 920
917 PM= INT (100* RND (1)+ 1):IF PM= > 92THEN K= Z:GOTO 4000
920 IF CC= 1OR CC= 8THEN V(Z)= V(Z)+ P1
922 IF Z= 1OR Z= 2THEN 930
925 IF CC= 1OR CC= 8THEN GOSUB 3900
930 IF CC= 2OR CC= 7THEN V(Z)= V(Z)+ P2
935 VV= V(Z):V(Z)= .2
940 IF P(LL+ 1,CC+ 1)> 2THEN V(Z)= V(Z)+ PO
950 IF P(LL+ 1,CC- 1)> 2THEN V(Z)= V(Z)+ PO
960 IF P(LL- 1,CC+ 1)> 2THEN V(Z)= V(Z)+ PO
970 IF P(LL- 1,CC- 1)> 2THEN V(Z)= V(Z)+ PO
973 V(Z)= INT (V(Z)):V(Z)= V(Z)+ VV
975 QL= LL:QC= CC:GOSUB 3500
980 NEXT
990 IF V(1)+ V(2)+ V(3)+ V(4)= - 80THEN 1600:REM  CC II LOSES
1000 IF V(1)> V(2)THEN J= 1:GOTO 1030
1010 IF V(2)> V(1)THEN J= 2:GOTO 1030
1020 J= INT (INT (3- 1)* RND (1)+ 1)
1030 IF V(3)> V(4)THEN K= 3:GOTO 1060
1040 IF V(4)> V(3)THEN K= 4:GOTO 1060
1050 K= INT (INT (5- 3)* RND (1)+ 3)
1060 IF V(J)> V(K)THEN K= J
1065 QL= L:QC= C
1070 ON KGOTO 1080,1090,1100,1110
1080 L= L+ 1:C= C- 1:GOTO 1120
1090 L= L+ 1:C= C+ 1:GOTO 1120
1100 L= L- 1:C= C- 1:GOTO 1120
1110 L= L- 1:C= C+ 1
1120 A= L:B= C:GOSUB 3100
1130 FOR I= 1TO 500:I= I:NEXT :GOSUB 3500
1140 P(X,Y)= 4:P(L,C)= 3
1150 PLOT 3,1,CY- 5:PRINT "I MOVED FROM :";X;",";Y
1160 PLOT 3,1,CY- 4:PRINT "   TO :";L;",";C
1170 PLOT 3,1,CY- 6:PRINT SPC( 20)
1180 FOR I= 0TO 8:PLOT 3,0,CY+ I:PRINT SPC( 21):NEXT
1183 PLOT 3,2,CY+ 2:PRINT "  "
1185 X= A:Y= B
1190 GOTO 600
1500 A= LL:B= CC:QL= L:QC= C:GOSUB 3100
1510 FOR I= 1TO 500:I= I:NEXT :GOSUB 3500
1520 PLOT 3,1,CY- 5:PRINT "! ! ! GOTCHA ! ! !"
1530 PLOT 3,1,CY- 4:PRINT "  *** I WIN ***"
1540 GOTO 1620
1600 PLOT 3,1,CY- 5:PRINT "??? I CAN'T MOVE ???"
1610 PLOT 3,1,CY- 4:PRINT " *** YOU WIN ***"
1620 PLOT 3,1,CY+ 5:INPUT "PLAY AGAIN ??";Y$
1630 IF LEFT$ (Y$,1)= "Y"THEN 15
1650 END
2000 PRINT TAB( 30);:PRINT "a                               "
2001 RETURN
3000 PRINT TAB( 30);:PRINT "                               b"
3001 RETURN
3100 PLOT 3,27+ (4* B),3* A:PRINT SF$:RETURN
3200 PLOT 3,27+ (4* QC),3* QL:PRINT SH$:RETURN
3300 PLOT 3,27+ (4* F1),3* F:PRINT TH$:RETURN
3400 PLOT 3,27+ (4* QC),3* QL:PRINT TF$:RETURN
3500 PLOT 3,27+ (4* QC),3* QL:PRINT SB$:RETURN
3700 PLOT 3,27+ (4* CC),3* LL:PRINT FT$:RETURN
3800 PLOT 3,27+ (4* S1),3* R1:PRINT H0$:RETURN
3900 IF CC= 1AND ABS (P(LL- 1,2))< > 2AND ABS (P(LL- 2,1))< > 2AND ABS (P(LL- 2,3))< > 2THEN V(Z)= 20
3910 IF CC= 8AND ABS (P(LL- 1,7))< > 2AND ABS (P(LL- 2,8))< > 2AND ABS (P(LL- 2,6))< > 2THEN V(Z)= 20
3920 RETURN
4000 QQ= QQ+ 1:PLOT 3,2,30:PRINT "R";QQ
4001 GOTO 1065
5000 PRINT ,,"                           "
5010 PRINT ,," F O X  A N D  H O U N D S "
5020 PRINT ,,"                           "
5030 PRINT :PRINT :PRINT :PRINT ,"DO YOU WANT INSTRUCTIONS (Y/N) ? ";:INPUT A9$
5040 IF A9$< > "Y"THEN 5
5050 PRINT :PRINT ,"THE GAME FOX AND HOUNDS IS PLAYED ON A CHECKER BOARD"
5060 PRINT ,"THE PLAYING PIECES MOVE ON THE RED SQUARES."
5070 PRINT :PRINT ,"THE OBJECT OF THE GAME IS FOR 4 HOUNDS TO TRAP "
5080 PRINT ,"THE 1 FOX BY SURROUNDING IT SO IT CAN NOT MOVE."
5090 PRINT :PRINT ,"SOUNDS EASY BUT..."
5100 PRINT ,"THERE'S A CATCH.  THE FOX CAN MOVE IN ANY DIRECTION"
5110 PRINT ,"DIAGONALLY FORWARDS OR BACKWARDS.  THE HOUNDS CAN ONLY"
5120 PRINT ,"MOVE DIAGONALLY DOWN THE SCREEN.  THERE'S ONE OTHER"
5130 PRINT ,"PROBLEM; A HOUND CANNOT MAKE 2 CONSECUTIVE MOVES."
5140 PRINT :PRINT ,"IF THE COMPUTER CONTROLLED FOX REACHES THE TOP"
5150 PRINT ,"ROW OF SQUARES THE COMPUTER WINS."
5155 PRINT ,"IF THE HOUNDS CANNOT MAKE A LEGAL MOVE-FOX WINS."
5160 PRINT :PRINT ,"NOTE: ENTERING 0 FOR A HOUNDS DESTINATION STARTS"
5170 PRINT ,"THAT MOVE OVER."
5200 PRINT :PRINT ,,"PRESS <RETURN> WHEN READY ";:INPUT "";A9$
5210 GOTO 5
5500 REM         CAN HOUND MAKE VALID MOVE?

5510 HF= 1
5520 FOR HI= 1TO 7:FOR HJ= 1TO 8
5530 IF P(HI,HJ)< > 2THEN 5650
5540 IF P(HI+ 1,HJ- 1)= 4OR P(HI+ 1,HJ+ 1)= 4THEN HF= 0:HI= 7:HJ= 8
5650 NEXT :NEXT
5660 RETURN
10001 DATA 1.7,-.8,-3,-1,1.4,0