c64-basic/code-breaker/code-breaker.bas

23 lines
957 B
QBasic

10 PRINT CHR$(147):PRINT " CODE BREAKER":PRINT
20 PRINT "GUESS THE FOUR DIFFERENT DIGITS.":PRINT "RIGHT PLACE = HIT, WRONG PLACE = NEAR":PRINT
30 PRINT "PRESS ANY KEY":GET A$:IF A$="" THEN 30
35 R=RND(-TI)
40 DIM C(4),G(4),U(9):FOR I=1 TO 4
50 C(I)=INT(RND(1)*10):IF U(C(I)) THEN 50
60 U(C(I))=1:NEXT:PRINT CHR$(147)
70 FOR T=1 TO 10:PRINT "GUESS";T;"OF 10 (OR Q)";:INPUT G$
80 IF G$="Q" THEN 190
90 IF LEN(G$)<>4 THEN PRINT "ENTER FOUR DIGITS.":GOTO 70
100 FOR I=1 TO 4:G(I)=ASC(MID$(G$,I,1))-48:IF G(I)<0 OR G(I)>9 THEN PRINT "DIGITS ONLY.":GOTO 70
110 NEXT:H=0:N=0
120 FOR I=1 TO 4:IF G(I)=C(I) THEN H=H+1
130 FOR J=1 TO 4:IF I<>J AND G(I)=C(J) THEN N=N+1
140 NEXT J,I:PRINT H;"HIT ";N;"NEAR":PRINT
150 IF H=4 THEN PRINT "CODE BROKEN IN";T;"GUESSES!":GOTO 180
160 NEXT
170 PRINT "THE CODE WAS";:FOR I=1 TO 4:PRINT C(I);:NEXT:PRINT
180 PRINT:PRINT "R=REPLAY Q=QUIT"
190 GET A$:IF A$="R" THEN RUN
200 IF A$<>"Q" THEN 190
210 PRINT CHR$(147):END