10 PRINT TAB(26) "ROTATE" 20 DIM B(16), B$(16) 30 PRINT " In this game the board layout is as follows:" 40 FOR I = 1 TO 16 : B(I) = I : NEXT I 50 PRINT : FOR I = 1 TO 13 STEP 4 60 PRINT TAB(2);B(I);TAB(6);B(I+1);TAB(10);B(I+2);TAB(14);B(I+3) 70 NEXT I : PRINT 80 PRINT " Board positions are occupied randomly by the letters A to P." 90 PRINT "The object of the game is to order the letters by rotating any" 100 PRINT "four letters clockwise, by 90 degrees. You specify the upper left" 110 PRINT "position of the four you wish to rotate. Valid moves are:" 120 PRINT " 1 2 3 5 6 7 9 10 and 11." 130 PRINT " You also get one special move per game, which you may or may" 140 PRINT "not need. Input a -1 and you may exchange any two letters in a row." 150 PRINT " To give up, enter a '0' to the prompt. --- GOOD LUCK!" 160 PRINT : PRINT : PRINT : PRINT : PRINT 170 FOR I = 1 TO 16 : B$(I) = "Z" : NEXT I 180 FOR I = 1 TO 16 190 T$ = CHR$(INT(16*RND(1)+65)) 200 FOR J = 1 TO I 210 IF B$(J) = T$ THEN 190 220 NEXT J 230 B$(I) = T$ : NEXT I 240 M = 0 : S = 0 : PRINT " Here's the starting board......" : GOSUB 400 250 INPUT "Position to rotate"; I : IF I = 0 THEN 160 260 IF I = -1 THEN 440 270 IF I = 4 OR I = 8 OR I >11 THEN PRINT "ILLEGAL! TRY AGAIN..." : GOTO 250 280 M = M + 1 : T$ = B$(I) 290 B$(I) = B$(I + 4) : B$(I + 4) = B$(I + 5) : B$(I + 5) = B$(I + 1) : B$(I + 1) = T$ 300 GOSUB 400 310 FOR I = 1 TO 16 320 IF CHR$(I + 64) <> B$(I) THEN GOTO 250 330 NEXT I 340 PRINT : PRINT : PRINT " You finished in";M;"moves." 350 M1 = M1 + M : G1 = G1 + 1 360 PRINT CHR$(7) : FOR I = 1 TO 15 : NEXT I 370 PRINT : INPUT "Play again"; A$ : IF LEFT$(A$,1) = "Y" THEN GOTO 160 380 PRINT : PRINT "You played";G1;"games and finished in an average of" 390 PRINT M1/G1"moves per game." : PRINT : GOTO 490 400 PRINT : FOR I = 1 TO 13 STEP 4 410 PRINT B$(I)" "B$(I + 1)" "B$(I + 2)" "B$(I + 3) 420 NEXT I : PRINT 430 PRINT "MOVE";M;" GAME";G1+1 : PRINT : RETURN 440 INPUT "Exchange which two positions"; X, Y 450 IF X<>Y+1 AND X<>Y-1 THEN PRINT "ILLEGAL! Try again..." : GOTO 440 460 S = S + 1 : IF S > 1 THEN PRINT "Only ONE special move per game." 470 IF S > 1 THEN GOTO 250 480 T$ = B$(X) : B$(X) = B$(Y) : B$(Y) = T$ : GOTO 310 490 END