-1

学校のプロジェクトの一環として、クラスと GUI を使用するプログラムを作成する必要があります。これは、昨年同様の非オブジェクト指向バージョンを作成したためです。GUIの側面にtkinterを使用して、テキストベースのRPGを再作成しています。

私の問題は、部屋とダンジョンを設計するときに発生し、それらがどのように組み合わされるかです。私の最後のものは過度に基本的で、次のようになりました。

    if currentRoom == 1:
        print('<Room description>')
        print('1] <Option one>')
        print('2] <Option two>')
        etc...

        userinput = int(input('>>_:'))

        if userinput = 1:
            # Do stuff

世界でのプレイヤーの位置は、古い D&D マップの部屋番号に対応する単一の番号で表されていました。オプションは部屋固有のもので、部屋ごとに書き直されました。プログラムは、停止するように指示されるまでループし続けました (「実行中」が false の場合)。

コマンド入力は App クラスによって処理されます。ユーザーが Enter キーを押すと、tkinter エントリ ウィジェットの内容がチェックされ、フィルター処理されて、定義済みのフェーズ (移動、トーク、装備など) が検索されます。

出力は一時ファイルに書き込まれ、ラベル ウィジェットを介して読み取られて表示されます。

部屋がオブジェクトである場合、どのようにしてこれを行うのか、どの部屋が互いにつながっているのか、そこに到達するためにどの方向に移動する必要があるのか​​ をどのように知るのでしょうか(つまり、「北に行く」).

4

1 に答える 1

0

すべての部屋は、含まれているもののリストで構成されていると思います。ゲームの開始時に、それぞれのモンスター、アイテム、および他の部屋への経路を含む部屋のリストを作成します。

class Room:
    def __init__(self,description,items,monsters,paths):
        self.description=description
        self.items=items
        self.monsters=monsters
        self.paths=paths
    def interact(self):
        #player interactions here, return number of room player travels to
        pass

list_of_rooms=[
    Room("An easy room with no monsters",["Potion"],[],[1])
    Room("A hard room with some lemons",["Lemon","Lemon"],["Monster"],[0])]

current_room=0
game_over=False
while not game_over:
    current_room=list_of_rooms[current_room].interact()

ただし、これにより、非常にルールのない可能性のある、あなたが示した例よりも構造化されたゲームが作成されます。このオブジェクト指向のアプローチは、ルールが設定されたゲームにより適しています。

また、NPC インタラクション (特にダイアログ パス)、アイテム、モンスターなどの分類を作成することをお勧めします。

于 2013-07-04T02:22:10.677 に答える