10 REM NOUGHTS AND CROSSES @1982 BY MICHAE L BEWS 20 REM CONVERTED TO BBC MICRO BY C.R.TANNE R 30 DIM a$(9),a(9):d=0:h=0:m=0:n=0:t=0 40 *FX9,2 50 *FX10,2 60 MODE 1:VDU 28,4,27,35,4,19,0,4,0,0,0,23 ,224,-1,-1,-1,-1,-1,-1,-1,-1,23,225,24,126,10 2,195,195,102,126,24,23,227,129,195,102,60,24 ,60,102,195,23;8202;0;0;0; 70 Y$=CHR$(224)+" "+CHR$(224)+" "+ CHR$(224)+" "+CHR$(224) 80 Z$=STRING$(19,CHR$(224)) 90 GOTO 470 100 VDU 19,1,1,0,0,0,19,2,2,0,0,0 110 SOUND 1,-15,t*4,1:t=t+1:a$(n)=CHR$(a+22 6):a(n)=SGN(a):a=-a:IF a<0 THEN PRINT TAB(30, 10);" "; 120 FOR x=0 TO 2:FOR y=1 TO 3:z=x*3+y 130 IF a$(z)=CHR$(225) THEN COLOUR 2:GO TO 150 140 IF a$(z)=CHR$(227) THEN COLOUR 1 EL SE COLOUR 3 150 PRINT TAB(3+6*y,5+5*x);a$(z):NEXT y:NEX T x 160 FOR x=0 TO 2:IF ABS(a(3*x+1)+a(3*x+2)+a (3*x+3))=3 OR ABS(a(x+1)+a(x+4)+a(x+7))=3 THE N x=2:NEXT:GOTO 540 170 IF x>1 THEN GOTO 190 180 IF ABS(a(5)+a(5+2*(x+1))+a(5-2*(x+1)))= 3 THEN x=2:NEXT:GOTO 540 190 NEXT x:IF t=9 THEN GOTO 340 200 IF a<0 THEN GOTO 420 210 IF t>0 THEN GOTO 240 220 n=1+2*INT(RND(4)):IF n=5 THEN GOTO 220 230 GOTO 100 240 k=2:n=0 250 FOR x=0 TO 2:IF a(3*x+1)+a(3*x+2)+a(3*x +3)=k THEN T=x:x=2:NEXT:x=T:GOTO 350 260 IF a(x+1)+a(x+4)+a(x+7)=k THEN T=x:x=2: NEXT:x=T:GOTO 370 270 IF x=2 THEN GOTO 290 280 IF a(5)+a(5+2*(x+1))+a(5-2*(x+1))=k THE N T=x:x=2:NEXT:x=T:GOTO 390 290 NEXT x:k=-k:IF k<0 THEN GOTO 250 300 FOR x=1 TO 40:n=1+2*INT(RND(4)):IF n<>5 AND a(n)=0 THEN x=40:NEXT:GOTO 100 310 NEXT x 320 FOR x=1 TO 9:IF a(x)=0 THEN n=x:x=9:NEX T:GOTO 100 330 NEXT x 340 COLOUR 3:PRINT TAB(13,19);"DRAW";:d=d+1 :FOR x=20 TO 1 STEP -1:SOUND 1,-15,x,1:TIME=0 :REPEAT UNTIL TIME>4:NEXT x:GOTO 560 350 FOR y=3 TO 1 STEP -1:IF a(3*x+y)=0 THEN n=3*x+y:y=1:NEXT:GOTO 100 360 NEXT y 370 FOR y=3 TO 1 STEP -1:IF a(x+y*3-2)=0 TH EN n=x+y*3-2:y=1:NEXT:GOTO 100 380 NEXT y 390 IF a(5)=0 THEN n=5:GOTO 100 400 IF a(5+2*(x+1))=0 THEN n=5+2*(x+1):GOTO 100 410 IF a(5-2*(x+1))=0 THEN n=5-2*(x+1):GOTO 100 420 x$=INKEY$(0):IF x$="" OR VAL(x$)<1 OR V AL(x$)>9 THEN GOTO 420 430 n=VAL(x$) 440 COLOUR 3:PRINT TAB(25,11);" ";TAB (26,10);"You ";n;:IF a$(n)>"9" THEN PRINT TAB (26,11);"AGAIN!";:SOUND 1,-15,100,1:GOTO 420 450 PRINT TAB(8,20);" " 460 GOTO 100 470 COLOUR 3:PRINT TAB(7,0);"NOUGHTS & CROS SES"'TAB(7);"-----------------" 480 FOR x=1 TO 9:a$(x)=STR$(x):NEXT x 490 PRINT:FOR X=1 TO 3:PRINT TAB(6);Z$;TAB( 6);Y$;TAB(6);Y$;TAB(6);Y$;TAB(6);Y$:NEXT X:PR INT TAB(6);Z$ 500 PRINT TAB(0,2);"I am";TAB(22);"You are" ;TAB(5,2);:COLOUR 1:PRINT CHR$(227);TAB(31,2) ;:COLOUR 2:PRINT CHR$(225); 510 z=RND(1):a=(1 AND z<.5)+(-1 AND z>=.5) 520 COLOUR 3:p$="Me":IF a>0 THEN p$="You" 530 PRINT TAB(8,20);p$;" to go first";:GOTO 100 540 IF a<0 THEN p$=" I win":VDU 19,1,11,0,0 ,0:m=m+1 ELSE p$="You win":VDU 19,2,11,0,0,0: h=h+1 550 COLOUR 3:PRINT TAB(12,19);p$:FOR y=1 TO 4:FOR x=1 TO 10:SOUND 1,-15,X*10+150,1:TIME= 0:REPEAT UNTIL TIME>4:NEXT x:NEXT y 560 PRINT TAB(0,20);"Score: You ";h;" Me ";m;" Draw ";d;TAB(3,21)"Press any key to start"; 570 *FX15,1 580 IF INKEY$(1000)="" THEN GOTO 580 590 FOR x=1 TO 9:a(x)=0:NEXT x 600 n=0:t=0:CLS:GOTO 470