-1

作为学校项目的一部分,我必须编写一个涉及使用类和 GUI 的程序,因为我去年做了一个类似的非面向对象的版本;我正在使用 tkinter 为 GUI 方面重新创建一个基于文本的 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 地图上的房间号。选项是特定于房间的,并为每个房间重新编写,程序不断循环,直到被告知停止(当“运行时”为假时)。

命令输入由 App 类处理;当用户按下回车键时,它会检查 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 回答