1

Inform 7 でゲームを作成しようとしていますが、Google 検索で明らかに答えが見つからないという大きな問題に遭遇しました。

「if」引数を使用して、プレーヤーがいる部屋に基づいて特定の状況を変更しています。「if」引数として書いたものを見る代わりに、「If the player」がそれ自体のエンティティであると想定しています.

これはエラーメッセージです:

「If the player is in Reception」だけでなく、「If the player is in the Corner Table」とも書きました: 同じオブジェクト (If the player) が 2 つの異なる場所 (Reception と Corner Table) にある必要があると言っているようです。 . これは矛盾しているように見えます。

これは両方の場所での私のコードです:

If the player is in the Corner Table;
    Understand the command "leave" or "exit" as something new.
    Understand "leave" or "exit" as northwest.

If the player is in Reception;
    Understand "key" as the Janitor's Key.

誰か助けてくれませんか?

4

1 に答える 1

1

投稿したコードにはいくつかの問題があります。

  • if 句を文脈から外すことはできません。if 句が考慮される場合のルールを作成する必要があります。
  • 逆に、理解できるフレーズを文脈で使用することはできません。より具体的にif ...: understand "..." as ...は、不可能です。フレーズは常にスタンドアロンでなければならないことを理解してください。
  • if 句は、セミコロンではなくコロンで終わる必要があります。
  • 「北西」それ自体はアクションではありません。「北西に行く」です。

代わりにこれが必要なようです:

Instead of exiting when the location is the Corner Table:
    try going northwest.

これにより、退出アクション (コマンド "leave" および "exit" を含む) が、その特定の部屋の北西に向かうアクションにリダイレクトされます。

2 番目の if 句については、最初に「Janitor's Key」というオブジェクトがある場合、ゲームは、オブジェクトを特にプライベートな名前にしない限り、このオブジェクトを参照するものとして「キー」を既に理解しています。第二に、ゲームが「キー」を 1 か所でしか認識しないのはなぜですか? 組み込みのスコーピングにより、プレーヤーと同じ部屋にないものを参照できないようになっています。

したがって、オブジェクトが非公開の名前であり、キーを 1 つの場所でのみ参照する必要がある理由がある場合、そのコードは次のようになります。

Understand "key" as the Janitor's Key when the location is the Reception.

しかし、前述のように、これは非常に特殊な状況でのみ必要であり、ほとんどの場合、標準ライブラリに処理させて完全に除外するのが最善です。

于 2013-12-06T12:49:55.153 に答える