You selected quiz1.pl
headline:-
wn('% --------------------------------------'),
wn('% プロローグによるミニ・クイズシステム'),
wn('% --------------------------------------'),
wn('% type go and period to start the system. '),
nl.
me:-
wn('% file: quia1.pl'),
wn('% created: 16 May 2002'),
wn('% edited: 5 Mar 2003'),
wn('% edited: 21 Mar 2003'),
wn('% edited: 26 Mar 2003'),
nl.
%--------------------------------
% 問題データベース
%--------------------------------
% 問題文章、選択肢、および正解
'質問'(1,'問題文','What is "karasumi" ?',_).
'質問'(1,'選択肢'(1),'A kind of cat',no).
'質問'(1,'選択肢'(2),'A kind of dog',no).
'質問'(1,'選択肢'(3),'A kind of bird',no).
'質問'(1,'選択肢'(4),'A kind of machine',no).
'質問'(1,'選択肢'(5),'A kind of food',yes).
'質問'(2,'問題文','Can it fly?',_).
'質問'(2,'選択肢'(1),'No. It can not fly.',yes).
'質問'(2,'選択肢'(2),'Yes. It can fly, sometimes. ',no).
'質問'(2,'選択肢'(3),'I hope not.',no).
'質問'(2,'選択肢'(4),'I do not know. ',no).
question(N,problem,Q,Y):-
'質問'(N,'問題文',Q,Y).
question(N,alternative(NofAlt),S,Ans):-
'質問'(N,'選択肢'(NofAlt),S,Ans).
%--------------------------------
% クイズ出題・採点プログラム
%--------------------------------
quiz(N):-
question(N,problem,Text,_),
wr_question(Text,60),
wr_alternative(N),
user_input(User),
wr_result(N,User,M),
wr_star_and_sentence(M,30).
%--------------------------------
% 簡易インタフェース
%--------------------------------
% 問題文章の表示 etc.
wr_question(B,Y):-
wr_star_and_sentence(B,Y).
wr_star_and_sentence(B,Y):-
wr_star(_,Y),
nl,tab(4),write(B),nl,
wr_star(_,Y),
nl.
% '選択肢'の表示
wr_alternative(N):-
question(N,alternative(X),Y,_),
tab(5),write(X),write('. '),write(Y),nl,fail.
wr_alternative(_):-!.
% 採点結果表示
wr_result(N,User,M):-
question(N,alternative(User),_,yes)
-> M = 'right. congratulation!'
; M = 'wrong. good luck!'.
% ユーザーによる回答入力
user_input(User):-
nl,tab(4),write('Type a number ( 番号を入力)->'),
read(User).
%--------------------------------
% その他のユーティリティー
%--------------------------------
% データの画面表示
wn(Z):- write(Z), nl.
'書け'(X):- write(X).
% ☆ラインの繰り返し
wr_star([],0).
wr_star(L,N):-
length(L,N),
X='*',
L=[X|Y],
write(X),
wr_star(Y,N1),
N1 is N - 1.
% ---------------------
% 実行開始・終了
% ---------------------
go:-
quiz(_N),fail.
% 立ち上げ即実行
%:-go.
:- headline.
% プログラムの終わり
return to front page.