0

私はテキストRPGを作成していますが、助けが必要ですが、説明する方法が完全にはわかりません。

ユーザーが「キーを調べる」などを入力して「キーだ」と表示されるようにする必要があります。

私は2つのファイルを使用しています。

main.py engine.py

main.pyは、ファイルengine.pyの辞書にオブジェクトを追加できる必要があります。

engine.pyに

objects = {

}

そしてmain.pyは

key = {'it's a key', 'key taken'}

engine.objects.append(key)

私のメインループは次のようになるはずです

if choice[0] == 'examine':
    if choice[1] == anything in objects:
        print whatever object[0]

それがまったく理にかなっているなら、あなたは私を正しい方向に向けることができますか。

編集:辞書に追加できません。

    Traceback (most recent call last):
  File "...\main.py", line 5, in <module>
    engine.objects.append(key)
AttributeError: 'dict' object has no attribute 'append'

EDIT2:これでそのような初心者であるために申し訳ありません。「examine」と入力するたびに、2番目のパラメータがない場合、エラーが発生して閉じます。理由はわかりますが、修正方法がわかりません。

4

2 に答える 2

0

エンジン オブジェクトは代わりにリストにする必要があるため、そこにキーを追加できます。なぜ 2 つの異なるファイルを作成する必要があるのか​​ わかりませんが、小さな例を作成して、より良いガイドになる可能性があります。

choices = {'what's your name': 'I am jorge beans', 'left': 'there is a door',
              'punch': 'ouch!'}

if user_choice in keys:  
    # this way you examine the key values in the choices dictionary so you
    # don't need the objects list
    print choices[user_choice]

あなたの問題をもう少し具体的に説明していただければ、私の答えはより具体的になります。幸運を!

于 2012-08-02T22:44:01.263 に答える
0

クラス.append()にメソッドはありません。dict

キーと値のペアを辞書に挿入するにはd:

d[key] = value

dキーが含まれているかどうかを確認し、対応する値を取得するには:

command, obj = "examine box".split()
if command == 'examine':
   if obj in d:
      print d[obj]

などの変更可能なグローバル変数を避けるようにしてくださいengine.objects。それへのアクセスをクラスにカプセル化できます。

cmdたとえば、 stdlib のモジュールに基づいてプログラムを構成できます。

于 2012-08-02T22:44:41.770 に答える