44 lines
1.1 KiB
Plaintext
44 lines
1.1 KiB
Plaintext
10 DEFINT A-Z
|
|
20 PRINT "*** FLIP THE BITS ***"
|
|
30 INPUT "Board size";S
|
|
40 IF S<3 OR S>8 THEN PRINT "3 <= size <= 8": GOTO 30
|
|
50 RANDOMIZE
|
|
60 DIM B(S,S),G(S,S)
|
|
70 FOR X=1 TO S
|
|
80 FOR Y=1 TO S
|
|
90 B=INT(.5+RND(1))
|
|
100 B(X,Y)=B: G(X,Y)=B
|
|
110 NEXT Y,X
|
|
120 FOR A=0 TO 10+2*INT(10*RND(1))
|
|
130 R=INT(.5+RND(1))
|
|
140 N=1+INT(S*RND(1))
|
|
150 GOSUB 500
|
|
160 NEXT A: M=0
|
|
170 PRINT: M=M+1
|
|
180 PRINT " ==BOARD==";TAB(20);" ==GOAL=="
|
|
190 PRINT " ";: GOSUB 400
|
|
200 PRINT TAB(20);" ";: GOSUB 400
|
|
210 FOR N=1 TO S
|
|
220 FOR A=0 TO 1
|
|
230 PRINT TAB(A*20);CHR$(64+N);". ";
|
|
240 FOR C=1 TO S: IF A THEN B=G(C,N) ELSE B=B(C,N)
|
|
250 PRINT USING "# ";B;
|
|
260 NEXT C,A
|
|
270 PRINT
|
|
280 NEXT N
|
|
290 PRINT
|
|
300 LINE INPUT "Enter row or column: ";I$
|
|
310 IF LEN(I$)<>1 THEN 300 ELSE C=ASC(I$) OR 32
|
|
320 IF C<97 THEN N=C-48:R=0 ELSE N=C-96:R=1
|
|
330 IF N<1 OR N>S THEN 300 ELSE GOSUB 500
|
|
340 W=1=1
|
|
350 FOR X=1 TO S:FOR Y=1 TO S
|
|
360 W=W AND (B(X,Y)=G(X,Y))
|
|
370 NEXT Y,X
|
|
380 IF W THEN PRINT:PRINT "You win! Moves:";M:END
|
|
390 GOTO 170
|
|
400 FOR I=1 TO S: PRINT USING "# ";I;: NEXT I: RETURN
|
|
500 IF R THEN 510 ELSE 520
|
|
510 FOR I=1 TO S: B(I,N)=1-B(I,N): NEXT I: RETURN
|
|
520 FOR I=1 TO S: B(N,I)=1-B(N,I): NEXT I: RETURN
|