1 REM ROTAT.ECB 5 PRINT "&K": REM ...ROTAT...from Roseville 12-17-80 10 PRINT "////////////////////////////////////////////////////////" 20 PRINT "/// :ROTATE: ADAPTED FROM A GAME FROM D.H. AHL ///" 30 PRINT "/// PUBLISHED IN :CREATIVE COMPUTING: SEPT 1977 ///" 40 PRINT "/// BY: ANDRE RATTE FEB 19 1978 REV 1.0 ///" 50 PRINT "////////////////////////////////////////////////////////" 60 DIM B(16),B$(16) 70 PRINT : LET B$=" " 80 INPUT (1,0)"Do you want instructions? ( Y or N ) ---=>",A$ 85 IF LEN(A$)=0 THEN LET A$="N" 90 IF A$="N" THEN 500 ELSE PRINT "&K" 100 PRINT "IN THIS GAME THE BOARD IS LAID OUT AS FOLLOWS:" 110 FOR I=1 TO 16 120 LET B(I)=I 130 NEXT I 140 PRINT 150 FOR I=1 TO 13 STEP 4 160 PRINT TAB(3);B(I);TAB(7);B(I+1);TAB(11);B(I+2);TAB(15);B(I+3) 180 NEXT I 190 PRINT 200 PRINT "BOARD POSITIONS ARE OCCUPIED RANDOMLY BY THE LETTERS A TO P." 210 PRINT "THE OBJECT OF THE GAME IS TO ORDER THE LETTERS BY ROTATING" 220 PRINT "ANY FOUR LETTERS CLOCKWISE ONE POSITION. YOU SPECIFY THE" 230 PRINT "UPPER LEFT POSITION OF THE FOUR YOU WISH TO ROTATE, I.E.," 240 PRINT "VALID MOVES ARE 1, 2, 3, 5, 6, 7, 9, 10, AND 11." 250 LET Z=3: GOSUB 1170 260 LET Z=5: GOSUB 1140 270 PRINT "CONSEQUENTLY, IF THE BOARD LOOKED LIKE:" 280 FOR I=1 TO 16 290 LET B$(I,I)=CHR(I+64) 300 NEXT I 310 LET B$(2,3)="CG",B$(6,7)="BF" 320 GOSUB 950 330 PRINT "AND YOU ROTATED POSITION TWO, THE BOARD W0ULD BE:" 335 GOSUB 1150 340 PRINT 350 FOR I=2 TO 7 360 LET B$(I,I)=CHR(I+64) 370 NEXT I 380 GOSUB 950 390 LET Z=2: GOSUB 1140 400 PRINT "AND YOU WOULD WIN #": PRINT 410 PRINT "YOU ALSO GET ONE 'SPECIAL' MOVE PER GAME WHICH YOU MAY OR" 420 PRINT "MAY NOT NEED. THE SPECIAL MOVE ALLOWS YOU TO EXCHANGE ANY" 430 PRINT "TWO ADJACENT LETTERS IN A ROW. TO MAKE THIS MOVE," 440 PRINT "INPUT A :-1: AS YOUR MOVE AND YOU WILL BE ASKED FOR THE " 450 PRINT "POSITIONS OF THE TWO LETTERS TO EXCHANGE. REMEMBER -- " 460 PRINT "ONLY ONE SPECIAL MOVE PER GAME #" 470 PRINT "TO GIVE UP AT ANY TIME, TYPE A :0:.": PRINT 480 PRINT TAB(15);"GOOD LUCK ##": PRINT : PRINT 490 LET Z=5: GOSUB 1140 500 FOR I=1 TO 16: REM .....START 510 LET B$(I,I)="0" 520 NEXT I 530 FOR I=1 TO 16 540 LET T$=CHR(INT(16*RND(0)+65)) 550 FOR J=1 TO I 560 IF B$(J,J)<>T$ THEN 590 570 LET T$=CHR(INT(16*RND(0)+65)) 580 LET J=0 590 NEXT J 600 LET B$(I,I)=T$ 610 NEXT I 620 LET Z=0 630 IF O=1 THEN LET Z=5: GOSUB 1170: GOTO 650 640 GOSUB 1140 650 LET M=0,S=0: PRINT "HERE'S THE STARTING BOARD...": GOSUB 950 660 LET O=1 670 INPUT "POSITION TO ROTATE",R 680 IF R=0 THEN 500 690 IF R=-1 THEN 1030 700 IF R=4 THEN 1130 710 IF R=8 THEN 1130 720 IF R>=12 THEN 1130 730 LET M=M+1,T$=B$(R,R) 740 LET B$(R,R)=B$(R+4,R+4),B$(R+4,R+4)=B$(R+5,R+5) 750 LET B$(R+5,R+5)=B$(R+1,R+1),B$(R+1,R+1)=T$ 760 GOSUB 960 770 REM *** DO WE HAVE A WINNER " **** 780 LET K=0 790 FOR I=1 TO 16 800 IF CHR(I+64)<>B$(I,I) THEN LET K=1 810 NEXT I 820 IF K=1 THEN 670 830 PRINT "YOU ORDERED THE BOARD IN ";M;" MOVES." 840 LET M1=M1+M,G=G+1: PRINT TAB(15);"&J"; 850 FOR I=1 TO 5 860 PRINT CHR(7);" "; 870 NEXT I 875 PRINT : PRINT 880 INPUT (1,0)"PLAY AGAIN ( Y OR N ) ---=>",A$ 885 IF LEN(A$)=0 THEN LET A$="Y" 890 IF A$="Y" THEN 500 900 PRINT "YOU PLAYED ";G;" GAMES AND ORDERED THE BOARD IN AN AVERAGE" 910 PRINT "OF ";M1/G;" MOVES PER GAME" 920 PRINT 930 GOTO 1230 940 REM ****** PRINT BOARD SUBROUTINE ****** 950 PRINT 960 FOR J=1 TO 13 STEP 4 970 PRINT TAB(3);B$(J,J);TAB(7);B$(J+1,J+1);TAB(11); 980 PRINT B$(J+2,J+2);TAB(15);B$(J+3,J+3) 990 PRINT 1000 NEXT J 1010 PRINT 1020 RETURN 1030 REM ****** SPECIAL MOVE SUBROUTINE ****** 1040 IF S=0 THEN 1060 1050 PRINT "ONLY ONE SPECIAL MOVE PER GAME ###": GOTO 670 1060 INPUT "EXCHANGE WHICH TWO POSITIONS",X,Y 1070 IF X=Y+1 THEN 1100 1080 IF X=Y-1 THEN 1100 1090 PRINT "ILLEGAL. TRY AGAIN....": GOTO 1060 1100 LET S=S+1 1110 LET T$=B$(X,X),B$(X,X)=B$(Y,Y),B$(Y,Y)=T$: GOSUB 940 1120 GOTO 770 1130 PRINT "VALID MOVES ARE 1, 2, 3, 5, 6, 7, 9, 10, AND 11." 1135 PRINT "ILLEGAL. TRY AGAIN....": GOTO 670 1140 REM ****** STOP SUBROUTINE ************** 1150 INPUT (1,0)"******** HIT :RETURN: TO CONTINUE *********",W$ 1160 LET Z=1: PRINT "&K" 1170 REM ****** SPACE SUBROUTINE************** 1180 FOR K=1 TO Z 1190 PRINT 1200 NEXT K 1210 RETURN 1220 PRINT "ILLEGAL, TRY AGAIN ...": GOTO 1060 1230 END