Pour une meilleure efficacité il faudrait un programme d'OCR paramétrable, avec la possibilité de définir la police de caractère du texte à analyser. Et encore, dans le cas du O et du 0 la différence est très subtile et difficile à détecter automatiquement.
Voici le premier programme du livre après correction manuelle :
Code : Tout sélectionner
10 REM **********
20 REM * SQUASH *
30 REM **********
40 CLEAR ,,2
50 GOSUB 620
60 GOTO 180
70 D=2*((STICK(0)=7)-(STICK(0)=3))
80 IF D<>0 THEN D0=D
90 IF STICK(0)=0 THEN D0=0
100 RX=RX+D0
110 RETURN
120 D$=INKEY$
130 D=2*((D$=F1$)-(D$=F2$))
140 IF D<>0 THEN D0=D
150 IF D$=N$ THEN D0=0
160 RX=RX+D0
170 RETURN
180 LOCATE BX,BY:COLOR 3,2:PRINT N$;
190 BX=BX+DX:BY=BY+DY
200 LOCATE BX,BY
210 PRINT B$;
220 IF BY=21 AND ABS(BX-RX-3)>1 THEN 320
230 IF BY=21 THEN S=S+1:BEEP:DY=-DY
240 IF BY=1 THEN BEEP:DY=-DY
250 IF BX=2 OR BX=37 THEN BEEP:DX=-DX
260 ON JS GOSUB 70,120
270 IF RX<0 THEN RX=0
280 IF RX>33 THEN RX=33
290 LOCATE RX,RY
300 COLOR 0:PRINT R$
310 GOTO 180
320 NB=NB+1
330 IF NB=11 THEN 440
340 LOCATE BX,BY
350 PRINT N$;
360 FOR I=1 TO 3
370 BEEP
380 FOR J=1 TO 100
390 NEXT J
400 NEXT I
410 D0=0
420 GOSUB 900
430 GOTO 180
440 LOCATE 13,5
450 COLOR 0
460 PRINT "SCORE :";S;
470 IF S>R1 THEN R1=S
480 LOCATE 13,10
490 PRINT "RECORD :";R1;
500 LOCATE 13,15
510 PRINT "UNE AUTRE ?";
520 NB=0
530 S=0
540 D$=INKEY$
550 IF D$<>"" THEN 540
560 D$=INKEY$
570 IF D$="" THEN 560
580 IF D$<>"N" THEN 50
590 SCREEN 4,6,6
600 CLS
610 END
620 CLS
630 SCREEN 7,2,4
640 ATTRB 1,1
650 DEFINT A-Z
660 DEFGR$(0)=255,255,255,0,0,0,0,0
670 DEFGR$(1)=24,126,126,255,255,126,126,24
680 N$=CHR$(32)
690 LOCATE 1,10,0
700 PRINT "JOYSTICK (O ou N) ?";
710 D$=INKEY$
720 IF D$="" THEN 710
730 IF D$="O" THEN JS=1 ELSE JS=2
740 CLS
750 ATTRB 0,0
760 COLOR 2, 1
770 FOR BX=1 TO 38
780 LOCATE BX,0
790 PRINT N$;
800 NEXT BX
810 FOR BY=1 TO 21
820 LOCATE 1,BY
830 PRINT N$;
840 LOCATE 38,BY
850 PRINT N$;
860 NEXT BY
870 R$=N$+N$+GR$(0)+GR$(0)+GR$(0)+N$+N$
880 B$=GR$(1)
890 RX=16
900 RY=22
910 BY=21
920 BX=INT(RND*34)+3
930 DY=-1
940 DX=(INT(RND*2)-0.5)*2
950 F1$=CHR$(8)
960 F2$=CHR$(9)
970 RETURN