1 REM *** WRITTEN BY CHARLES LUND, AMERICAN SCHOOL, THE HAGUE, NETHERLANDS 2 REM *** MODIFIED AND CONVERTED TO RSTS/E BY DAVID AHL, DIGITAL 3 DIM B(70),T(9,9) \FILEV#1:"TV:" 4 PRINT#1:PNT(108);PNT(126);PNT(117) 5 PRINT#1:"THIS IS THE GAME OF HI-Q"\PRINT#1:"HERE IS THE BOARD" 7 PRINT#1:" 13 14 15" 9 PRINT#1:" 22 23 24" 11 PRINT#1:"29 30 31 32 33 34 35" 13 PRINT#1:"38 39 40 41 42 43 44" 15 PRINT#1:"47 48 49 50 51 52 53" 17 PRINT#1:" 58 59 60" 18 PRINT#1: 19 PRINT#1:" 67 68 69" 22 PRINT#1:"TO SAVE TYPING TIME, A COMPRESSED VERSION OF THE GAME BOARD" 23 PRINT#1:"WILL BE USED DURING PLAY. REFER TO THE ABOVE ONE FOR PEG" 24 PRINT#1:"NUMBERS. O.K., LET'S BEGIN..." 28 REM *** SET UP BOARD 29 FOR R=1 TO 9 30 FOR C=1 TO 9 31 IF (R-4)*(R-5)*(R-6)=0 THEN 40 32 IF (C-4)*(C-5)*(C-6)=0 THEN 40 35 T(R,C)=-5 36 GOTO 50 40 IF (R-1)*(C-1)*(R-9)*(C-9)=0 THEN 35 42 T(R,C)=5 50 NEXT C 60 NEXT R 65 T(5,5)=0\GOSUB 500 70 REM *** INPUT MOVE AND CHECK ON LEGALITY 75 FOR W=1 TO 33 77 READ M 79 DATA 13,14,15,22,23,24,29,30,31,32,33,34,35,38,39,40,41 81 DATA 42,43,44,47,48,49,50,51,52,53,58,59,60,67,68,69 83 B(M)=-7\NEXT W 86 B(41)=-3 100 PRINT#1:PNT(105);" " 101 PRINT#1:PNT(105);"MOVE WHICH PIECE"; 102 CLOSE#1 \FILE#2:"TV:" \INPUT#2:Z \CLOSE#2 \FILEV#1:"TV:" 110 IF B(Z)=-7 THEN 140 120 PRINT#1: "ILLEGAL MOVE, TRY AGAIN..."\GOTO 100 140 PRINT#1:"TO WHERE"; 141 CLOSE#1 \FILE#2:"TV:" \INPUT#2:P \CLOSE#2 \FILEV#1:"TV:" 150 IF B(P)=0 THEN 120 153 IF B(P)=-7 THEN 120 156 IF Z=P THEN 100 160 IF ((Z+P)/2)=INT((Z+P)/2) THEN 180 170 GOTO 120 180 IF (ABS(Z-P)-2)*(ABS(Z-P)-18)<>0 THEN 120 190 GOSUB 1000 200 GOSUB 500 210 GOSUB 1500 220 GOTO 100 500 REM *** PRINT BOARD 510 FOR X=1 TO 9 520 FOR Y=1 TO 9 525 IF (X-1)*(X-9)*(Y-1)*(Y-9)=0 THEN 550 530 IF (X-4)*(X-5)*(X-6)=0 THEN 570 540 IF (Y-4)*(Y-5)*(Y-6)=0 THEN 570 550 REM 560 GOTO 610 570 IF T(X,Y)<>5 THEN 600 580 PRINT#1: TAB(Y*2);"!"; 590 GOTO 610 600 PRINT#1:TAB(Y*2);"O"; 610 REM 615 NEXT Y 620 PRINT#1: 630 NEXT X \CLOSE#1 \FILEV#1:"TV:" 640 RETURN 1000 REM*** UPDATE BOARD 1005 C=1\FOR X=1 TO 9 1020 FOR Y=1 TO 9 1030 IF C<>Z THEN 1220 1040 IF C+2<>P THEN 1080 1045 IF T(X,Y+1)=0 THEN 120 1050 T(X,Y+2)=5 1060 T(X,Y+1)=0\B(C+1)=-3 1070 GOTO 1200 1080 IF C+18<>P THEN 1130 1085 IF T(X+1,Y)=0 THEN 120 1090 T(X+2,Y)=5\T(X+1,Y)=0\B(C+9)=-3 1120 GOTO 1200 1130 IF C-2<>P THEN 1170 1135 IF T(X,Y-1)=0 THEN 120 1140 T(X,Y-2)=5\T(X,Y-1)=0\B(C-1)=-3 1160 GOTO 1200 1170 IF C-18<>P THEN 1220 1175 IF T(X-1,Y)=0 THEN 120 1180 T(X-2,Y)=5\T(X-1,Y)=0\B(C-9)=-3 1200 B(Z)=-3\B(P)=-7 1210 T(X,Y)=0\GOTO 1240 1220 C=C+1 1225 NEXT Y 1230 NEXT X 1240 RETURN 1500 REM *** CHECK IF GAME IS OVER 1505 F=0 1510 FOR R=2 TO 8 1520 FOR C=2 TO 8 1530 IF T(R,C)<>5 THEN 1580 1535 F=F+1 1540 FOR A=R-1 TO R+1 1545 T=0 1550 FOR B=C-1 TO C+1 1560 T=T+T(A,B) 1561 NEXT B 1564 IF T<>10 THEN 1567 1565 IF T(A,C)<>0 THEN 1630 1567 NEXT A 1568 FOR X=C-1 TO C+1 1569 T=0 1570 FOR Y=R-1 TO R+1 1571 T=T+T(Y,X) 1572 NEXT Y 1573 IF T<>10 THEN 1575 1574 IF T(R,X)<>0 THEN 1630 1575 NEXT X 1580 NEXT C 1590 NEXT R 1600 REM *** GAME IS OVER 1605 PRINT#1:"THE GAME IS OVER." 1610 PRINT#1:"YOU HAD";F;"PIECES REMAINING" 1611 IF F<>1 THEN 1615 1612 PRINT#1: "BRAVO! YOU MADE A PERFECT SCORE!!" 1613 PRINT#1:"SAVE THIS PAPER AS A RECORD OF YOUR WORK." 1615 PRINT#1: \PRINT#1:"PLAY AGAIN (YES OR NO)";\INPUT A$ 1617 IF A$="NO" THEN 2000 \CLOSE#1 \FILEV#1:"TV:" 1618 RESTORE\GOTO 29 1620 STOP 1630 RETURN 2000 PRINT#1:\PRINT#1:"SO LONG FOR NOW."\PRINT#1: \CLOSE#1 2005 END