You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python密室逃脱游戏开发求助:3房间系统及重复交互问题

调试方案与优化建议

一、解决NameError: name 'Ceiling' is not defined错误

这个错误的核心是变量/标签的作用域或定义问题,可从以下几点排查修复:

  1. 全局变量初始化:如果Ceiling是标记玩家操作状态的变量,需用default在游戏初始化阶段声明全局变量,避免局部作用域销毁导致二次调用时找不到:
    default room1_ceiling_checked = False  # 替换原局部的Ceiling变量
    
  2. 检查菜单选项目标:如果菜单选项直接调用Ceiling作为标签,必须确保存在对应的label Ceiling:块,且拼写完全一致(RenPy对大小写敏感):
    label Ceiling:
        "你抬头看向天花板,发现角落刻着一个模糊的数字。"
        return  # 回到房间操作菜单
    
  3. 避免局部变量丢失:若变量是在房间循环内临时定义的,每次循环重置时会被销毁,需用store.前缀显式指定全局存储,或将变量提升为全局。

二、核心需求的优化实现

1. 记录每个房间的密码尝试次数

  • 先初始化全局计数变量:
    default room1_pw_attempts = 0
    default room2_pw_attempts = 0
    default room3_pw_attempts = 0
    
  • 在密码验证逻辑中更新计数:
    label room1_try_pw:
        $ input_pw = renpy.input("请输入房间1的密码:")
        if input_pw == "1234":
            "密码正确!你推开房门进入了下一个房间。"
            jump room2
        else:
            $ room1_pw_attempts += 1
            "密码错误,你已经尝试了[room1_pw_attempts]次。"
            return  # 回到房间操作菜单
    

2. 支持房间内重复操作

每个房间用while循环实现重复选择,直到玩家成功进入下一关:

label room1:
    "你身处第一个密室,房间里有一张桌子、天花板,还有一扇带密码锁的铁门。"
    while True:
        menu:
            "查看桌子":
                "桌子上放着一张泛黄的纸条,上面写着'数字在头顶'。"
            "查看天花板":
                jump Ceiling
            "尝试打开密码门":
                jump room1_try_pw
            "放弃游戏":
                jump game_end

label game_end:
    "游戏结束!"
    "各房间密码尝试次数统计:"
    "房间1:[room1_pw_attempts]次"
    "房间2:[room2_pw_attempts]次"
    "房间3:[room3_pw_attempts]次"
    return

三、额外优化建议

  • 统一状态管理:用字典整合房间状态,避免零散变量,比如default room_states = {"room1": {"ceiling_checked": False, "pw_attempts": 0}}
  • 代码复用:将密码验证逻辑封装为函数,减少重复代码:
    init python:
        def check_pw(input_pw, correct_pw, attempts_key):
            store.room_states[attempts_key]["pw_attempts"] += 1
            return input_pw == correct_pw
    
  • 用户体验优化:给已查看的物品添加标记,比如"查看桌子(已查看)",避免重复提示相同内容。

内容的提问来源于stack exchange,提问作者accentbee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 17:53:09