|
数あてゲーム
桁数(N)を決める
N桁の数字を入れていく
各桁は全て異なる数字
ヒット・・・数字と位(数字の位置)が一致している数
チップ・・・数字は合っているが位(数字の位置)が違っている数
RANDOMIZE
LET NUM$="0123456789"
!' LET NUM$="0123456789abcdef"
DO
INPUT PROMPT "桁数=": N !' 4~5桁程度
LOOP UNTIL LEN(NUM$) >= N
LET T$=NUM$
FOR I = 1 TO N
LET R = INT(RND * LEN(T$))+1 !'乱数で1文字ずつ決める
LET ANS$=ANS$ & MID$(T$,R,1)
LET T$=LEFT$(T$,R-1) & RIGHT$(T$,LEN(T$)-R) !'選ばれた数字は候補から消す
NEXT I
PRINT N;"桁の数字を入力して下さい。 "
PRINT "GIVE UP は '*' です。"
LET COUNT=1
DO
DO
LET FL=0
PRINT COUNT; "回目 ";
INPUT PROMPT "NUMBER = ": S$
!' LET S$=LCASE$(S$)
IF ANS$ = S$ THEN
PRINT "大当たり !!"
STOP
ELSEIF S$ = "*" THEN
PRINT "正解は"; ANS$; "でした。"
STOP
ELSEIF S$ = "/" THEN
IF LEN(SS$)=N AND H > 0 THEN
PRINT "ヒント ";
FOR I=1 TO N
IF MID$(SS$,I,1)=MID$(ANS$,I,1) THEN PRINT MID$(ANS$,I,1); ELSE PRINT "?";
NEXT I
PRINT
LET SS$=""
LET COUNT = COUNT + 1
END IF
LET FL=1
ELSEIF LEN(S$)<>N THEN
PRINT N;"桁の数字ではありません"
LET FL=1
ELSE
FOR I=1 TO N
IF POS(NUM$,MID$(S$,I,1))=0 THEN
PRINT "無効な文字があります"
LET FL=1
EXIT FOR
END IF
NEXT I
END IF
LOOP UNTIL FL=0
LET H = 0
LET C = 0
FOR I = 1 TO N
IF MID$(S$,I,1) = MID$(ANS$,I,1) THEN LET H = H + 1 !'数字と位(位置)が一致
FOR J = 1 TO N
IF I <> J AND MID$(S$,I,1) = MID$(ANS$,J,1) THEN LET C = C + 1 !'数字は一致するが位(位置)が違う
NEXT J
NEXT I
PRINT "ヒット";H; " チップ"; C
LET COUNT = COUNT + 1
LET SS$=S$
LOOP
END
|
|