30 分钟
Python 进阶

项目:文字冒险游戏(下)

完成游戏主循环和交互系统

  • 实现游戏主循环
  • 命令解析和帮助系统
  • 物品使用和胜利条件

Game 主循环

Python
class Game:
    def __init__(self):
        self.create_world()
        self.player = Player("勇者", self.start_room)
        self.running = True

    def create_world(self):
        hall = Room("大厅", "古老的大厅,墙上挂着剑")
        garden = Room("花园", "美丽的花园,有一口井")
        cave = Room("洞穴", "黑暗的洞穴,金光闪烁")
        hall.add_exit("东", garden)
        garden.add_exit("西", hall)
        garden.add_exit("北", cave)
        cave.add_exit("南", garden)
        hall.add_item("剑")
        garden.add_item("钥匙")
        self.start_room = hall

    def parse_command(self, cmd):
        parts = cmd.strip().split()
        if not parts:
            return
        verb = parts[0]
        if verb == "看":
            self.player.current.look()
        elif verb == "去" and len(parts) > 1:
            self.player.go(parts[1])
        elif verb == "拿" and len(parts) > 1:
            self.player.take(parts[1])
        elif verb == "背包":
            print(f"背包:{self.player.inventory or ""}")
        elif verb == "退出":
            self.running = False
            print("再见!")
        else:
            print("命令:看/去 方向/拿 物品/背包/退出")

# 演示(自动执行命令)
game = Game()
for cmd in ["看", "拿 剑", "去 东", "看", "拿 钥匙", "背包"]:
    print(f"> {cmd}")
    game.parse_command(cmd)
💡扩展方向

加锁的门需要钥匙NPC对话系统战斗系统更多谜题存档读档(JSON序列化)

胜利条件

示例代码(可运行)
预测输出
inv = ["剑", "钥匙"]
print("钥匙" in inv)
填空题填写空白处的代码
cmd = "去 东" parts = cmd.split() print(parts[0]) # print(parts[1]) #
选择题

游戏主循环的核心模式?

资深工程师加餐

底层原理 · 大厂视角 · 工程经验,点卡片展开

list 底层是一段连续的指针数组,容量不够时整体扩容(CPython 约按 1.125 倍)。因此按下标取元素是 O(1),末尾 append 均摊 O(1),但在头部 insert(0,…) 或 pop(0) 要搬动全部元素、是 O(n)。dict/set 基于哈希表,平均查找 O(1) 但更耗内存。选对数据结构,往往比抠语法更影响性能。

挑战任务

完整游戏

简单+50 XP

就做个带3个房间、能捡物品、有胜利条件的完整游戏。

完整游戏
2 个测试用例

课后作业

扩展游戏

中等+20 XP

添加战斗系统或更多谜题。

扩展游戏
1 个测试用例