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

Python开发RPG战斗逻辑inp_fg输入后if语句失效程序退出问题

RPG战斗逻辑输入后无响应问题修复

问题现象

开发RPG游戏过程中,已完成玩家角色、哥布林敌方单位的基础属性配置,但战斗逻辑运行时,获取inp_fg变量的用户输入后程序直接终止,后续if条件判断分支完全不执行,无法进入预期的攻击、血量判定、战斗循环流程。

问题根因

  • 类型不匹配:input()函数默认返回字符串类型值,代码中直接将其与整数1做相等判断,条件永远为假,对应分支自然不会触发
  • 拼写错误:随机数生成方法名写错,Python标准库随机方法为random.randint(),代码中写为random.randit(),即使分支触发也会抛出属性错误
  • 作用域错误:内部函数actions()修改eh、ph变量时,未声明引用外层函数的同名变量,会触发局部变量未定义报错
  • 逻辑错误:操作选项提示笔误,攻击、逃跑两个选项都标注为输入1,存在逻辑冲突;血量判定顺序错误,玩家死亡的判断分支放在哥布林胜利判断之后,永远无法触发

修复后完整代码

import random

def fight():
    n = 1
    ph = stats.user_hp
    pa = stats.user_att
    pd = stats.user_df
    psta = stats.user_sta
    eh = 0
    ea = 0
    ed = 0
    if n == 1:
        eh = goblin.health
        ea = goblin.attack
        ed = goblin.defence

    def actions():
        nonlocal eh, ph
        print("Options:\nEnter 1 to attack\nEnter 2 to run away(costs stamina)")
        inp_fg = int(input())

        if inp_fg == 1:
            print("You launch an attack!")
            p_ac = random.randint(1, 5)
            e_ac = random.randint(1, 5)
            eh -= p_ac
            ph -= e_ac
            print(f"You dealt {p_ac} damage to the goblin, took {e_ac} damage in return")
            
            if ph <= 0:
                print("You died")
                return
            if eh <= 0:
                print("You won")
                return
            actions()
        elif inp_fg == 2:
            # 可自行补充消耗耐力的逃跑逻辑
            if psta >= 10:
                print("You successfully ran away from the battle")
                return
            else:
                print("You don't have enough stamina to run away")
                actions()
        else:
            print("Invalid input, please try again")
            actions()
    actions()

关键修改说明

  • 对用户输入结果做int()类型转换,保证和判断条件的数值类型匹配,让攻击分支可以正常触发
  • 修正随机数方法的拼写错误,避免运行时报错
  • 用nonlocal关键字声明内部函数使用外层的血量变量,解决作用域引用问题
  • 修正选项提示笔误,将逃跑操作的输入值改为2,同时补充非法输入的重试逻辑
  • 调整血量判定顺序:优先判定玩家死亡、再判定哥布林死亡,双方均存活时才递归进入下一轮行动,避免分支被覆盖
  • 补充了基础的伤害打印、耐力消耗逃跑的逻辑占位,可根据实际需求调整数值和规则

内容的提问来源于stack exchange,提问作者Kawalpreet Singh_ 52

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 23:21:41