10 &"GAME OF 'ROTATE' BY DAVE AHL. ENJOY !!":& 12 INPUT "INSTRUCTIONS (Y OR N)";A$:&:IF A$="N" THEN 140 15 &"IN THIS GAME THE BOARD IS LAID OUT AS FOLLOWS:" 20 DIM B(16),B$(16):RANDOMIZE 25 B(I)=I FOR I=1 TO 16 30 &:FOR I=1 TO 13 STEP 4 35 PRINT USING "## ## ## ##",B(I),B(I+1),B(I+2),B(I+3) 40 NEXT I:& 45 &"BOARD POSITIONS ARE OCCUPIED RANDOMLY BY THE LETTERS A TO P." 50 &"THE OBJECT OF THE GAME IS TO ORDER THE LETTERS BY ROTATING" 55 &"ANY FOUR LETTERS CLOCKWISE ONE POSITION. YOU SPECIFY THE" 60 &"UPPER LEFT POSITION OF THE FOUR YOU WISH TO ROTATE, I.E.," 65 &"VALID MOVES ARE 1, 2, 3, 5, 6, 7, 9, 10, AND 11." 70 &"CONSEQUENTLY, IF THE BOARD LOOKED LIKE:" 75 B$(I)=CHR$(I+64) FOR I=1 TO 16:B$(2)="C":B$(3)="G" 80 B$(6)="B":B$(7)="F":GOSUB 400 85 &"AND YOU ROTATED POSITION 2, THE BOARD WOULD BE:" 90 B$(I)=CHR$(I+64) FOR I=2 TO 7:GOSUB 400 95 &"AND YOU WOULD WIN !":& 100 &"YOU ALSO GET ONE 'SPECIAL' MOVE PER GAME WHICH YOU MAY OR" 105 &"MAY NOT NEED. THE SPECIAL MOVE ALLOWS YOU TO EXCHANGE" 110 &"ANY TWO ADJACENT LETTERS IN A ROW. TO MAKE THIS MOVE," 115 &"INPUT A '-1' AS YOUR MOVE AND YOU WILL BE ASKED FOR THE" 120 &"POSITIONS OF THE TWO LETTERS TO EXCHANGE. REMEMBER -- " 125 &"ONLY ONE SPECIAL MOVE PER GAME!":& 130 &"TO GIVE UP AT ANY TIME, TYPE A '0'.":&:&"GOOD LUCK !":& 140 B$(I)="0" FOR I=1 TO 16 150 FOR I=1 TO 16 160 T$=CHR$(INT(16*RND+65)) 165 FOR J=1 TO I 170 IF B$(J)=T$ THEN 160 175 NEXT J 180 B$(I)=T$:NEXT I 190 M=0:S=0:&"HERE'S THE STARTING BOARD...":GOSUB 400 200 INPUT"POSITION TO ROTATE";I:IF I=0 THEN &:&:GOTO 140 205 IF I=-1 THEN 510 210 IF I=4 OR I=8 OR I>12 THEN &"ILLEGAL. AGAIN...":GOTO 200 220 M=M+1:T$=B$(I) 230 B$(I)=B$(I+4):B$(I+4)=B$(I+5):B$(I+5)=B$(I+1):B$(I+1)=T$ 240 GOSUB 400:REM *** PRINT BOARD 300 REM *** DO WE HAVE A WINNER? 305 FOR I=1 TO 16 310 IF CHR$(I+64)<>B$(I) THEN 200 315 NEXT I 320 &:&"YOU ORDERED THE BOARD IN"M"MOVES.":M1=M1+M:G=G+1 325 & CHR$(7);FOR I=1 TO 15 330 &:INPUT "PLAY AGAIN (Y OR N)";A$:IF A$="Y" THEN 140 340 &:&"YOU PLAYED"G"GAMES AND ORDERED THE BOARD IN AN AVERAGE" 350 &"OF"M1/G"MOVES PER GAME.":&:GOTO 999 390 REM *** PRINT BOARD SUBROUTINE 400 &:FOR I=1 TO 13 STEP 4 410 & B$(I)" "B$(I+1)" "B$(I+2)" "B$(I+3) 420 NEXT I:&:RETURN 500 REM *** SPECIAL MOVE SUBROUTINE 510 INPUT "EXCHANGE WHICH TWO POSITIONS";X,Y 520 IF X<>Y+1 AND X<>Y-1 THEN &"ILLEGAL. AGAIN...":GOTO 510 530 S=S+1:IF S>1 THEN &"ONLY ONE SPECIAL MOVE PER GAME.":GOTO 200 540 T$=B$(X):B$(X)=B$(Y):B$(Y)=T$:GOTO 240 999 END