10 REM SAFECRACKER
20 DIM C(4),G(4),T(4)
30 GOSUB 270
40 MODE 1:BORDER 8
50 G=0:F=0
60 PEN 1
70 GOSUB 360
80 G=G+1:IF G=11 THEN GOTO 190
90 GOSUB 390
100 GOSUB 550
110 IF F=0 THEN GOTO 80
120 REM CORRECT DEDUCTION
130 LOCATE 1,19:PRINT"CORRECT ... The Safe swings gently open"
140 FOR L=1 TO 4
150 PRINT C(L);"  "
160 NEXT L
170 LOCATE 9,21:PRINT "IN ";G;" attempts"
180 GOTO 240
190 REM THE COMBINATION REMAINED HIDDEN
200 LOCATE 1,14:PRINT "Alarm bells ring out loudly":LOCATE 1,16:PRINT "The time switch has been triggered"
210 LOCATE 1,19:PRINT "The combination was : "
220 LOCATE 1,21:PRINT "         ";
230 FOR L=1 TO 4:PRINT C(L);"  ";:NEXT L
240 IF INKEY$="" THEN GOTO 240
250 IF INKEY$<>"" THEN GOTO 250
260 RUN
270 REM SET THE COMBINATION LOCK
280 C(1)=INT(RND(1)*8+1)
290 FOR L=2 TO 4
300 C(L)=INT(RND(1)*8+1)
310 FOR I=1 TO L-1
320 IF C(L)=C(I) THEN C(L)=INT(RND(1)*8+1)
330 NEXT I
340 NEXT L
350 RETURN
360 REM TITLE THE COLUMNS
370 LOCATE 4,1:PRINT "YOUR GUESS  my mark"
380 RETURN
390 REM SET A GUESS INTO G()
400 L=1
410 IF INKEY$<>"" THEN GOTO 410
420 D$=INKEY$:IF D$="" THEN GOTO 420
430 D=ASC(D$)
440 IF D=127 THEN GOTO 500
450 IF D=13 THEN GOTO 530
460 IF D<ASC("1") OR D>ASC("9") THEN GOTO 410
470 IF L=5 THEN GOTO 410
480 LOCATE 3+L*2,G+3:PEN 2:PRINT CHR$(D);
490 G(L)=D-48:L=L+1:GOTO 410
500 L=L-1:IF L=0 THEN L=1
510 LOCATE 3+L*2,G+3:PRINT " ";
520 GOTO 410
530 IF L<5 THEN GOTO 410
540 RETURN
550 REM SCORE G() AGAINST THE COMBINATION
560 B1=0:W1=0
570 FOR H=1 TO 4
580 IF G(H)=C(H) THEN B1=B1+1
590 NEXT H
600 FOR L=1 TO 4:T(L)=C(L):NEXT L
610 FOR J=1 TO 4
620 IF T(J)=-1 THEN GOTO 660
630 FOR L=1 TO 4
640 IF T(J)=G(L) THEN W1=W1+1:T(J)=-1
650 NEXT L
660 NEXT J
670 W1=W1-B1
680 IF B1=4 THEN F=1
690 LOCATE 15,3+G
700 PEN 3
710 PRINT B1;"  ";W1
720 RETURN