10 REM WAR-2.ECB 100 PRINT "&K&J": REM===================== LAST MOD. 8/5/77 R.E.H. 110 PRINT TAB(10);"*@*@*@*@*@*@*@*@*@*@*" 120 PRINT TAB(10);"*@*@* *@*@*" 130 PRINT TAB(10);"*@*@* W A R *@*@*" 140 PRINT TAB(10);"*@*@* *@*@*" 150 PRINT TAB(10);"*@*@*@*@*@*@*@*@*@*@*" 160 PRINT : REM ... WRITTEN BY: WALTER GILBERT U OF MARYLAND 180 PRINT " DO YOU KNOW HOW TO PLAY"; 190 INPUT (1,0)A$ 200 PRINT 210 IF A$="Y" THEN 840 220 PRINT " THIS IS THE LAYOUT OF THE BOARD:" 230 PRINT 240 PRINT " 1 2 3 4 ### NOTE ###" 250 PRINT " 5 6 7 8" 260 PRINT " 9 10 11 12 IN CASE YOU WANT TO SEE THE" 270 PRINT " 13 14 15 16 BOARD, ENTER 'ZERO' FOR YOUR MOVE." 280 PRINT 290 PRINT " THE COMPUTERS PIECES INITIALLY OCCUPY LOCATIONS" 300 PRINT " 1,2,5 AND 6, AND YOUR PIECES OCCUPY SPACES 11," 310 PRINT " 12, 15, AND 16." 320 GOSUB 2050 330 PRINT " PIECES CAN MOVE ONE SPACE AT A TIME EITHER" 340 PRINT " HORIZONTALLY OR VERTICALLY INTO AN EMPTY SPACE." 350 PRINT " WHEN A PIECE HAS BEEN MOVED, IT CANNOT BE MOVED" 360 PRINT " THE NEXT TURN. THERE ARE FOUR UNUSUAL MOVES" 370 PRINT " ALLOWED FOR MOBILITY: IF A PIECE IS IN" 380 PRINT " SPACE 1 IT CAN MOVE TO SPACE 6, IF IT IS" 390 PRINT " IN SPACE 6, IT CAN MOVE INTO SPACE 1." 400 GOSUB 2040 410 PRINT " IF IT IS IN SPACE 16 IT CAN MOVE TO" 420 PRINT " SPACE 11, AND IF IT IS SPACE 11 IT CAN MOVE" 430 PRINT " INTO SPACE 16; PROVIDED OF COURSE THE SPACES" 440 PRINT " ARE VACANT." 450 PRINT 460 PRINT " THE INITIAL BOARD LAYOUT WITH THE PIECES SETUP" 470 PRINT " TO FOLLOW......." 480 GOSUB 2040 490 PRINT 500 PRINT " * X . ." 510 PRINT " X X . ." 520 PRINT " . . A B" 530 PRINT " . . C O" 540 PRINT 550 PRINT " A '*' SIGNIFIES A COMPUTER PIECE WHICH CANNOT" 560 PRINT " MOVE THIS TURN. AN 'O' SIGNIFIES A PIECE OF" 570 PRINT " YOUR WHICH MAY NOT MOVE THIS TURN." 580 GOSUB 2040 590 IF C9>1 THEN 2010 600 PRINT " MARK), YOU TYPE IN YOUR MOVE. IF, FOR EXAMPLE" 610 PRINT " YOU WANT TO MOVE PIECE (A) TO SPACE 7," 620 PRINT " YOU WOULD TYPE IN: A,7" 630 PRINT 640 PRINT " AND NOW, THE OBJECT OF THE GAME!" 650 PRINT " YOU CAN WIN IN ANY ONE OF THREE WAYS:" 660 GOSUB 2040 670 PRINT " 1. GET ONE OF YOUR MEN INTO LOCATION 1" 680 PRINT " 2. GET TWO OF YOUR MEN INTO ANY COMBINATION OF" 690 PRINT " LOCATIONS 2, 5, OR 6" 700 PRINT " 3. BLOCK THE COMPUTER'S MEN SO" 710 PRINT " NONE OF THEM CAN MOVE ." 720 GOSUB 2040 730 PRINT 740 PRINT " THE CONVERSE GOES FOR THE COMPUTER, OF COURSE." 750 PRINT " HOWEVER, SINCE THE ALGORITHM USED IN PROGRAMING" 760 PRINT " THIS GAME DOES NOT EVER LOOK AHEAD, THE" 770 PRINT " COMPUTER WILL NOT RECOGNIZE THAT IT HAS WON" 780 PRINT " IF IT HAS BLOCKED YOU SO THAT YOU CANNOT MOVE;" 790 PRINT " PURELY AN ACCIDENT ON ITS PART." 800 PRINT " ........... BUT IT CAN HAPPEN." 810 PRINT 820 PRINT " AND NOW TO PLAY ..." 830 PRINT 840 REMARKABLE ISN"T IT !!! 850 DIM A(2,45),T(52),U(52),V(17),X$(8) 860 DIM B(16),C(5),Z(16,6),Y(16) 870 FOR I=1 TO 16 880 FOR J=1 TO 6 890 READ Z(I,J) 900 NEXT J 910 NEXT I 920 FOR I=1 TO 9 930 READ V(I) 940 LET V(18-I)=54-V(I) 950 NEXT I 960 FOR I=1 TO 26 970 READ U(I) 980 LET U(53-I)=17-U(I) 990 NEXT I 1000 FOR I=27 TO 52 1010 READ T(I) 1020 NEXT I 1030 LET X$="X*.0ABCD": REM ...FOR I=1 TO 8 1040 REM ..............READ X$(I) 1050 REM ..............NEXT I 1060 FOR I=1 TO 16 1070 READ B(I) 1080 NEXT I 1090 READ C(1),C(2),C(3),C(4),C(5) 1100 FOR I=1 TO 16: LET Y(I)=B(I): NEXT I 1110 REM .... RANDOMIZE 1120 REM .* * * * E 1130 FOR I=1 TO 26 1140 LET T(I)=T(I+26) 1150 NEXT I 1160 PRINT " SHALL I GO FIRST"; 1170 INPUT (1,0)M$ 1180 IF M$="N" THEN 1210 1190 IF M$="Y" THEN 1380 1200 GOTO 1160 1210 GOSUB 1690 1220 INPUT (1,0)" PLAY WHICH MAN ---=>",M$ 1230 INPUT (2,0)" ...TO WHICH SQUARE ---=>",N 1235 IF N=0 THEN GOSUB 2190 1240 IF M$="KILL" THEN 1130 1250 FOR J=5 TO 8 1260 IF M$=X$(J,J) THEN EXIT 1290 1270 NEXT J 1280 GOTO 1960 1290 LET M=T(J+17) 1300 IF M=T(26) THEN 1960 1310 IF INT((N-1)/16)<>0 THEN 1960 1320 FOR I=V(M) TO V(M+1)-1 1330 IF N=U(I) THEN EXIT 1360 1340 NEXT I 1350 GOTO 1960 1360 IF T(N)<>0 THEN 1960 1370 LET I=FNM(N,J+17,26,1) 1380 LET K=FNK(17,1) 1390 IF K=0 THEN 1980 1400 IF C(T(2)+3)+C(T(5)+3)+C(T(6)+3)+2*C(T(1)+3)>1 THEN 1980 1410 FOR I=1 TO 16: LET B(I)=Y(I): NEXT I 1420 FOR I=1 TO 16 1430 IF T(I)<1 THEN 1470 1440 FOR H=1 TO 5 STEP 2 1450 LET B(Z(I,H))=B(Z(I,H))+T(I)*Z(I,H+1) 1460 NEXT H 1470 NEXT I 1480 LET R=-1000 1490 FOR I=1 TO K 1500 LET E=B(A(2,I))-B(T(A(1,I))) 1510 ON SGN(E-R)+2 GOTO 1550,1520,1530 1520 IF RND(0)<.5 THEN 1550 1530 LET R=E 1540 LET J=I 1550 NEXT I 1560 LET M=J 1570 LET I=FNM(A(2,M),A(1,M),21,-1) 1580 LET C9=C(3-T(11))+C(3-T(12))+C(3-T(15))+2*C(3-T(16)) 1590 IF C9>1 THEN 2010 1600 GOTO 1210 1610 DEF FNM(N,I,J,K) 1620 LET T(T(J))=K*2 1630 LET T(N)=K 1640 LET T(T(I))=0 1650 LET T(I)=N 1660 LET T(J)=N 1670 RETURN 0: REM .....LET FNM=0 1680 FNEND 1690 PRINT 1700 LET I=0 1705 LET I=I+1 1710 IF T(I)<2 THEN 1770 1720 FOR J=22 TO 25 1730 IF T(J)=I THEN EXIT 1750 1740 NEXT J 1750 PRINT X$((J-17),(J-17));" ";: REM .....WAS---> X$(J-17); 1760 GOTO 1780 1770 PRINT X$((T(I)+3),(T(I)+3));" ";: REM ....X$(T(I)+3) 1780 IF (I-4)*(I-8)*(I-12)<>0 THEN 1800 1790 PRINT 1800 IF I<16 THEN 1705 1810 RETURN 1820 DEF FNK(M,L) 1830 LET J=0 1840 FOR F=M TO M+3 1850 LET H=T(F) 1860 IF H=T(M+4) THEN 1930 1870 FOR G=V(H) TO V(H+1)-1 1880 IF T(U(G))<>0 THEN 1920 1890 LET A(1,L+J)=F 1900 LET A(2,L+J)=U(G) 1910 LET J=J+1 1920 NEXT G 1930 NEXT F 1940 RETURN J: REM .......LET FNK=J 1950 FNEND 1960 PRINT " THOU SHALT NOT SO MOVE." 1970 GOTO 1220 1980 GOSUB 1690 1990 PRINT " *** YOU WIN ***" 2000 GOTO 1130 2010 GOSUB 1690 2020 PRINT " !!!! I WIN !!!!" 2030 GOTO 1130 2040 PRINT 2050 PRINT "*@*@* READY TO SEE MORE ? --->"; 2060 INPUT (1,0)I$ 2070 PRINT 2080 RETURN 2090 DATA 1,0,1,0,1,0,1,16,6,2,1,0,2,4,7,1,1,0,3,1,1,0,1,0 2100 DATA 1,16,6,2,1,0,1,16,2,2,5,2,6,2,2,1,1,0,1,0,1,0,1,0 2110 DATA 5,4,10,1,1,0,6,2,5,1,1,0,8,.5,14,.5,1,0,7,1,1,0,1,0 2120 DATA 9,1,1,0,1,0,1,0,1,0,1,0,10,1,1,0,1,0,1,0,1,0,1,0 2130 DATA 1,4,7,10,12,15,20,24,27 2140 DATA 2,5,6,1,3,6,2,4,7,3,8,1,6,9 2150 DATA 1,2,5,7,10,3,6,8,11,4,7,12 2160 DATA -1,-2,0,0,-2,-2,0,0,0,0,2,2,0,0 2165 DATA 2,1,1,2,5,6,1,11,12,15,16,16 2170 REM ....DATA "X ","* ",". ","0 ","A ","B ","C ","D " 2180 DATA 2,3,3,3.5,3,3,4,5,3,4,8,8,3.5,5,8,16,0,0,0,1,1 2190 CURSOR 5,45: PRINT "## THE BOARD ##"; 2195 CURSOR 6,45: PRINT " 1 2 3 4"; 2200 CURSOR 7,45: PRINT " 5 6 7 8"; 2210 CURSOR 8,45: PRINT " 9 10 11 12"; 2220 CURSOR 9,45: PRINT " 13 14 15 16" 2230 CURSOR 15,1 2240 RETURN 2250 END