00010 RANDOMIZE 00020 MARGIN 121 00030 ' THIS PROGRAM WAS ADAPTED FROM THE GAME OF CHASE AS FOUND 00040 ' IN THE MAGAZINE 'CREATIVE COMPUTING', JAN.-FEB. 1976. 00050 ' PROGRAM MODIFIED FOR USE ON THE PDP-10 BY JEFF SHAEVEL 00060 ' REWRITTEN JEFF WOLFELD, [B]OCES [L]IBRARY [I]MPROVMENT [P]ROJECT 00070 ' RE-REWRITTEN BY ROBERT WILSON, [B]OCES [L]IBRARY [I]MPROVEMENT [P]ROJECT 00080 ' : : : : : : : : : : : : : : : : : : : : 00090 PRINT"DO YOU NEED INSTRUCTIONS"; 00100 INPUT A$ 00110 IF A$="Y" GO TO 150 00120 IF A$="YE" GO TO 150 00130 IF A$="YES" GO TO 150 00140 GO TO 410 00150 PRINT 00160 PRINT"YOU ARE TRAPPED WITHIN THE WALLS OF A HIGH" 00170 PRINT"VOLTAGE MAZE. THERE ARE FIVE MOBILE ROBOTS OUT" 00180 PRINT"TO DESTROY YOU. IF THEY GRAB YOU, OR YOU RUN" 00190 PRINT"INTO A HIGH VOLTAGE WALL, YOU ARE DESTROYED AND LOSE." 00200 PRINT"YOU ARE THE '*' THE ROBOTS ARE THE '+'" 00210 PRINT"THE AREAS MARKED 'X' ARE HIGH VOLTAGE." 00220 PRINT"THE ONLY WAY TO WIN IS TO MANEUVER EACH ROBOT" 00230 PRINT"INTO AN 'X' OR INTO EACH OTHER." 00240 PRINT"THE ROBOTS ALWAYS TAKE THE SHORTEST ROUTE TOWARDS YOU." 00250 PRINT"YOU WILL BE ASKED TO INPUT THE NUMBER OF ROWS IN THE MAZE." 00260 PRINT"TO PRINT THE MAZE TYPE -1 WHEN ASKED FOR YOUR MOVE. THE" 00270 PRINT"MAZE IS PRINTED AUOTMATICALLY AFTER EACH MOVE IF THERE ARE" 00280 PRINT"25 OR LESS ROWS IN THE MAZE." 00290 PRINT"------ GOOD LUCK ------" 00300 PRINT"LEGAL MOVES ARE: 1.2.3" 00310 PRINT" 8.*.4" 00320 PRINT" 7.6.5" 00330 PRINT 00340 PRINT"MOVE 'ZERO' TO REMAIN IN THE SAME PLACE." 00350 PRINT"THE ROBOTS THEN MAKE SIMILAR MOVES." 00360 PRINT"IF YOU NEED MORE HELP, TYPE THE NUMBER '9' WHEN ASKED" 00370 PRINT"FOR YOUR MOVE." 00380 PRINT 00390 DIM Q1(30),Q2(30) 00400 DIM R1(30),R2(30) 00410 DIM A(60,120),B(30) 'MAX 60 DOWN, 120 ACCROSS 00420 PRINT "MAZE SIZE"; 00430 INPUT Z 00440 IF Z>60 THEN PRINT"MAX = 60" \ GO TO 420 00450 IF Z<4 THEN PRINT"MIN = 4" \ GO TO 420 00460 Z1=Z*2 \ Z2=Z/2 00470 C$=" *+X" 00480 CHANGE C$ TO C 00490 MAT A=CON \ MAT R1=ZER \ MAT R2=ZER 00500 A(INT(RND*Z+1),INT(RND*Z1+1))=4 FOR N=1 TO Z1 00510 A(I,1)=A(I,Z1)=4 FOR I=1 TO Z 00520 A(1,I)=A(Z,I)=4 FOR I=1 TO Z1 00530 FOR R=1 TO Z2 00540 X=INT(RND*Z+1) \ Y=INT(RND*Z1+1) 00550 GO TO 540IF A(X,Y)<>1'THAT SPACE TAKEN. 00560 A(X,Y)=3+R/100 \ R1(R)=X \ R2(R)=Y'REMEMBER WHERE EACH ROBOT IS. 00570 NEXT R 00580 X=INT(RND*Z+1) \ Y=INT(RND*Z1+1) 00590 GO TO 580IF A(X,Y)<>1'THAT SPACE TAKEN 00600 A(X,Y)=2 'PLACE THE PLAYER 00610 R1(0)=X \ R2(0)=Y 'AND REMEMBER WHERE HE IS. 00620'START OF MOVE CYCLE 00630 IF Z > 25 GO TO 690 00640'PRINT BOARD 00650 PRINT \ PRINT \ PRINT 00660 FOR I=1 TO Z \ FOR J=1 TO Z1 00661IF INT(A(I,J))<>3 THEN 670 00662 A1=(A(I,J)-3)*100 00663 PRINT STR$(INT(A1+.5)); 00664 GOTO 680 00670 PRINT CHR$(C(A(I,J))); 00680 NEXT J \ PRINT \ NEXT I 00690 PRINT \ PRINT "YOUR MOVE";\INPUT P 00700 IF P = -1 GO TO 640 00710 IF P>=0 AND P<=8 GO TO 800 00720 PRINT "LEGAL MOVES ARE 0 THROUGH 8, DESIGNATED AS FOLLOWS:" 00730 PRINT 00740 PRINT " 1 2 3" 00750 PRINT " 8 * 4" 00760 PRINT " 7 6 5" 00770 PRINT 00780 PRINT "IN WHICH YOU ARE THE ASTERISK (*). 0 MEANS NO MOVE." 00790 GO TO 690 00800 ' 00810 Q1(0)=R1(0) \ Q2(0)=R2(0) 00820 R1(0)=R1(0)+INT((INSTR("321840765",STR$(P))-1)/3)-1 00830 R2(0)=R2(0)+INT((INSTR("178026345",STR$(P))-1)/3)-1 00840 ON A(R1(0),R2(0)) GO TO 900,920,880,850 00850 PRINT "HEY, GENIUS! YOU TOUCHED THE FENCE!!!!!!!" 00860 PRINT "***** ZAP ***** YOU'RE DEAD!!!!!!!!" 00870 GO TO 1170 00880 PRINT "RIGHT INTO THE HANDS OF A WAITING ROBOT. JUST YOUR LUCK." 00890 GO TO 1170 00900 A(R1(0),R2(0))=2 00910 A(Q1(0),Q2(0))=1 00920 FOR R=1 TO Z2 00930 IF R1(R)=0 GO TO 1130 00940 Q1(R)=R1(R)\Q2(R)=R2(R) 00950 R1(R)=R1(R)+(SGN(R1(0)-R1(R))*1) 00960 R2(R)=R2(R)+(SGN(R2(0)-R2(R))*1) 00970 ON A(R1(R),R2(R)) GO TO 1110,980,1010,1070 00980 PRINT "*** YOU HAVE BEEN DESTROYED BY A LUCKY ROBOT ***" 00990 PRINT "YOU LOSE!!!" 01000 GO TO 1170 01010 A=R \ B=VAL(RIGHT$(STR$(A(R1(R),R2(R))),2)) 01020 IF B < 1 THEN B = B * 100 01030 PRINT "ROBOTS"A"AND"B"HAVE COLLIDED!!!!!" 01040 A(Q1(A),Q2(A))=A(R1(B),R2(B))=1 01050 R1(A)=R1(B)=R2(A)=R2(B)=0 01060 GO TO 1130 01070 PRINT "ROBOT"R"HAS BEEN DESTROYED" 01080 R1(R)=R2(R)=0 01090 A(Q1(R),Q2(R))=1 01100 GO TO 1130 01110 A(Q1(R),Q2(R))=1 01120 A(R1(R),R2(R))=3+R/100 01130 NEXT R 01140 X=0 \ X=X+R1(Y) FOR Y=1 TO Z2 \ IF X = 0 THEN PRINT"YOU WON!!!" \ GOTO 1170 01150 GO TO 620 01160'SUBROUTINES 01170 PRINT "DO YOU WANT TO PLAY AGAIN";\INPUT B$ 01180 IF LEFT$(B$,1)="Y" GO TO 410 01190 IF LEFT$(B$,1)<>"N" GO TO 1170 01200 END