このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1267796762/603
#  【 課題 】http://ime.nu/www.geocities.jp/lang_lang_true/Pp.txt  
#  【 形態 】 Javaアプリケーション(main()で開始)  
#  【 期限 】12/8 
#  【 Ver  】1.6.0_22  
#  【 補足 】伏字がなくなるか、一文字も伏字が起き変わらない入力を6回 
#             行うと、ゲームが終了する。という部分を どう作っていいのかわかりません。  
#       お願いします。  
#  一文字ずつアルファベットを入力していきながら、隠された英単語を推定するゲームのプログラムを
#  作成しなさい。
#  ・はじめは隠された単語のすべての文字が伏字(*)で表示されている。
#  ・一文字を入力すると、その文字がつかわれている単語中のすべての箇所の伏字がその文字に
#    置き換えられて表示される。
#  ・伏字がなくなるか、一文字も伏字が起き変わらない入力を6回行うと、ゲームが終了する。

一文字ずつアルファベットを入力していきながら、隠された英単語を推定するゲーム(_ファイル) :-
        get_chars(_ファイル,Chars1),
        length(Chars1,Len),
        length(_伏せ字ならび,Len),
        伏せ字ならびに英数文字以外を設定する(Chars1,_伏せ字ならび),
        伏せ字を表示する(Chars1),
        '一文字を入力すると、その文字がつかわれている単語中のすべての箇所の伏字がその文字に置き換えられて表示される。'([],Chars1,_伏せ字ならび).

'一文字を入力すると、その文字がつかわれている単語中のすべての箇所の伏字がその文字に置き換えられて表示される。'(_,Chars,_伏せ字ならび) :-
        \+(伏せ字がある(_伏せ字ならぴ)),
        write('伏せ字がなくなりました。あなたの勝ちです。\n'),
        concat_atom(Chars,_文字列),
        write_formatted('文は %t でしたね。\n',[_文字列]),!.
'一文字を入力すると、その文字がつかわれている単語中のすべての箇所の伏字がその文字に置き換えられて表示される。'([_,_,_,_,_,_],Chars,_伏せ字ならび) :-
        write('Game Over!\n'),!.
'一文字を入力すると、その文字がつかわれている単語中のすべての箇所の伏字がその文字に置き換えられて表示される。'(Ln,Chars,_伏せ字ならび) :-
        伏せ字を表示する(_伏せ字ならび),
        write(': '),
        get_char(Char),
        伏せ字の置き換え(Char,Chars,_伏せ字ならび),
        '一文字を入力すると、その文字がつかわれている単語中のすべての箇所の伏字がその文字に置き換えられて表示される。'(Ln,Chars,_伏せ字ならび).
'一文字を入力すると、その文字がつかわれている単語中のすべての箇所の伏字がその文字に置き換えられて表示される。'(Ln,Chars,_伏せ字ならび) :-
        '一文字を入力すると、その文字がつかわれている単語中のすべての箇所の伏字がその文字に置き換えられて表示される。'([_|Ln],Chars,_伏せ字ならび).

伏せ字がある([V|_]) :- var(V),!.
伏せ字がある([_|R]) :- 伏せ字がある(R).

伏せ字の置き換え(Char,[],_) :- !,fail.
伏せ字の置き換え(Char,[Char|R1],[Char|R2]) :-
        伏せ字の置き換え(Char,R1,R2),!.
伏せ字の置き換え(Char,[_|R1],[_|R2]) :-
        伏せ字の置き換え(Char,R1,R2),!.

伏せ字を表示する([]) :- !.
伏せ字を表示する([V|R]) :-
        var(V),
        put_char('*'),
        伏せ字を表示する(R),!.
伏せ字を表示する([A|R]) :-
        put_char(A),
        伏せ字を表示する(R),!.

伏せ字ならびに英数文字以外を設定する([],[]) :- !.
伏せ字ならびに英数文字以外を設定する([A|R1],[A|R2]) :-
        \+((A @>= 'A',A @=< 'Z')),
        \+((A @>= 'a',A @=< 'z')),
        \+((A @>= '0',A @=< '9')),
        伏せ字ならびに英数文字以外を設定する(R1,R2),!.
伏せ字ならびに英数文字以外を設定する([_|R1],[_|R2]) :-
        伏せ字ならびに英数文字以外を設定する(R1,R2),!.