0

まず、私の質問を検討するために時間を割いていただきありがとうございます。それを学ぼうとする方法として、prolog でアドベンチャー スタイルのゲームを書いています。次のコード スニペットを作成しました。

i_am_at(melba_market_square).

exits :-
    i_am_at(X),
    path(X, Y, Z),
    write('Exits: '), nl, 
    write(Y), write(': '), write(Z), nl.

path(melba_market_square, s, melba_armory).
path(melba_market_square, n, melba_main_st_s).
path(melba_market_square, w, melba_sidra_alley_s).

私が理解できない/方法を見つけることができないのは、毎回スペースバーを押すのではなく、「終了」コマンドが3つのパスすべてを一度に返すようにすることです。どんな助けでも大歓迎です。どうもありがとうございました。

4

2 に答える 2

1

さて、ここに投稿されたヘルプのおかげでそれを理解しました。これが私のコードです:

i_am_at(melba_market_square).

exits :-
    i_am_at(X),
    path(X, Y, Z),
    write('Exits: '), nl, 
    write(Y), write(': '), write(Z), nl.

path(melba_market_square, s, melba_armory).
path(melba_market_square, n, melba_main_st_s).
path(melba_market_square, w, melba_sidra_alley_s).

zzz :- /* This implements "User"'s where_to_go rule. */
    i_am_at(X),
    where_to_go(X, IntoDirections),
    write('Exits: '), write(IntoDirections), nl.

where_to_go(From, IntoDirections) :- 
    findall(Direction, path(From, Direction, _), IntoDirections).
于 2013-11-12T22:00:12.427 に答える
0

私はそれを試しませんでしたが、次のようになるはずです:

where_to_go(From, IntoDirections) :- findall(Direction, path(From, Direction, _), IntoDirections).

IntoDirections行くことができるすべての方向をリストする必要があります。

于 2013-11-09T18:08:46.647 に答える