2017-01-29 4 views
1

私の問題に対する良い答えは見つけられないようです。ゲームのメンテナンスモードを作成しようとしています。メインメニューからルーム名を入力して、その部屋にスポーンすることができるようにします。ここにコードがあります。私はモジュールをユーザ入力から定義されたルーム名を呼び出しますか?

Class MM(): 
    def Room_Name(): 
     pass 

のように設定しています。これは明らかに通過してから、私はこれを持っています。

def MaintenanceMode(): 
    MM.Room_Name() 

は今、このコードは魔法のように動作し、私はMM.Room_Name()の括弧内のルーム名を置くことができると私は部屋には問題を生むん。私が欲しいのは、ユーザーフレンドリーなバージョンです。

これでゲームのメインメニューにセットアップして、メンテナンスモードに入るコードを入力し、MM.Room_Name()を呼び出してルームを呼び出すようにしました。代わりに、メインメニューにコードを入力してルーム名を尋ねてそこに登録したいと思います。私はこれを動作させるように見えることができないと私は解決策を見つけるために狂ったように検索しました。私は

ask = input("Which room do you want to go?>: ") 
MM.Room_Name(ask()) 

を試みた。しかし、私はそれが仕事を得ることができない、私はちょうどstrは呼び出すことはできません取得し、私はこの問題にはいくつかの他のソリューションは、私が何をしたかのより複雑なバージョンと、まだ何も作業を試してみました。私は質問がすでに答えられているのではないかと心配しているので、ここで質問することを避けようとしましたが、私は何週間も立ち往生してしまいました。はい、試しました

ask = str(input("Which room do you want to go?>: ")) 

しかし、私はまだ運がありません。可能であれば、ゲーム内のすべての部屋のリストを作成し、チェックリストを作ることを避けたいと思います。しかし、それが私の唯一の解決策ならば、それは傷つけないだろうと思う。 MM.Room_Name(Escape())でルーム名を呼び出すことができたので、私はちょうど考えました。ユーザー入力がそこに入り、呼び出し可能な方法がなければなりません。どんな提案?とても感謝しております。

vEdit 1v

コードは私が欲しいものをシミュレートします。このコードを実行し、メインメニューで164と入力してメンテナンスモードに入ると、MM.Room_Name(Bedroom())にあるBedroom()に生成されます。私が望むのは、ユーザがパスワード164を入力することであり、それはプレイヤーにあなたがスポーンインしたい部屋を尋ね、何らかの形でその部屋をユーザ入力から呼び出す。他のオプションは使用しないでください。メニューに164と入力すると、Bedroom()に生成されます。だから私は、プレイヤーがメンテナンスモードに入ったときに、プレイヤーがメンテナンスモードに入ったときに、別の部屋が必要なときにMM.Room_Name()の部屋を編集する必要がないように、ユーザー入力をコール可能な関数に変える方法を理解する必要があります。モードでは、ゲームは部屋の名前を尋ね、そこに出現する。私はあなたのために寝室とリビングルームをテストしました。 MM.Room_Name()でそれらの間を切り替えて、メンテナンスモードに入ったときの動作を確認してください。そしてうまくいけば、これはあなたがユーザー入力バージョンをどのように働かせるかというアイデアを提供します。

import time 
class MM(): 
    def Room_Name(): 
     pass 
def Question(): 
    return input("You entered the Room, What do you do?>: ") 

def space(): 
    print(" ") 

def pass1(): 
    while True: 
     space() 
     return input("**Press Enter**") 
     break 

def what(): 
    space() 
    print("I didn't understand that.") 
    space() 
def MaintenanceMode(): 
    print("Check MaintenanceMode() Block On Line 49 To Change Room's!") 
    print("V V V V V V V V V V V V V V V V V V V V") 
    space() 
    MM.Room_Name(Bedroom()) 
def Menu(): 
    space() 
    space() 
    print("**The Hunter**") 
    space() 
    print("Press 1: To Start The Game") 
    space() 
    print("Press 2: For Story") 
    space() 
    print("Press 3: To Quit") 
    space() 
    Choice_input0() 

def Choice_input0(): 
    while True: 
     def Choice(): 
      return input("What do you want to do?>: ") 
     Player = Choice() 
     if Player == '1': 
      p.next_source() 
      time.sleep(1) 
      Startgame() 
     elif Player == '2': 
      Storyinfo() 
     elif Player == '3': 
      print('Exit Okay!') 
     elif Player == '164': 
      space() 
      print('Maintenance Mode Active!') 
      MaintenanceMode() 
     else: 
      what() 
def Bedroom(): 
    while True: 
     def Choice(): 
      Question() 
     Player = Question() 
     if Player in ['look around']: 
      space() 
      print("You see the Bedroom") 
      space() 
     else: 
      what() 

def Livingroom(): 
    while True: 
     def Choice(): 
      Question() 
     Player = Question() 
     if Player in ['look around']: 
      space() 
      print("You see the Livingroom") 
      space() 
     else: 
      what() 

Menu() 
+0

また、インスタンス変数をメソッドに追加する必要があります。通常は「self」と呼ばれます。それは 'def room_name(self、name):pass'でしょう。また、nameパラメータを取ると宣言する必要があります。 – Keith

+0

私は、プレーヤー定義変数をMM.Room_Name()から自己と呼び出し可能にする方法を理解できないようです。私はリストシステムを作成しなければならないと思う。とにかく助けてくれてありがとう、私はそれを感謝し、私は試し続けます。私は自分を創造するときには分かりません。その自己は定義されていません。 –

+0

Python [チュートリアル](https://docs.python.org/3/tutorial/index.html)を読んでみてください。 – Keith

答えて

0

askを割り当てた後、それは文字列であるため、関数として呼び出さないでください。従って

MM.Room_Name(ask) 

ask()の場合、より良い結果が得られるかもしれません。

+0

このようにすると、TypeError:Room_Name()は0の位置引数をとりますが、1が与えられます。また、ask()はstrが呼び出し可能でないと言っています。 –

+0

"'str'オブジェクトは呼び出し可能ではありません。"は文字列を関数として呼び出すことによって期待されるものです。 '" hello "()'の出力を比較してください。あなたは 'def MaintenanceMode()'のように、引数なしで定義された関数に引数を渡していますので、どうしますか?残りのコードを表示できますか? –

+0

私の質問にあなたのリクエストに編集を追加しました。試してみるためのデモコードを作成しました。 –

関連する問題