如何修改全局变量的值,并使全局变量保留新值?

2024-09-28 01:23:13 发布

您现在位置:Python中文网/ 问答频道 /正文

一般来说,我对编码还比较陌生,我选择python作为我的第一门语言学习,因为一些朋友说它简单有趣。我决定做一个基于文本的小游戏,除了一个问题,我的演示进行得很顺利。我不能让健康的调整继续下去,经过大量的测试和搜索,我仍然不知道如何使这项工作

def combat():
    global playerhealthpoints
    playerhealthpoints = 100
    def cavecombat():
        combatroundinput = raw_input("The round has begun. Do you Block, Dodge, or Run?").lower()
        if combatroundinput == "block":
            enemyattackroll = random.randrange(1,10)
            if enemyattackroll < 5:
                print "Enemy has missed their attack this round."
                cavecombat()
            elif enemyattackroll >= 5:
                enemydamageroll = random.randrange(1,10) / 2
                playerhealthpoints = playerhealthpoints - enemydamageroll
                print "You have taken %s damage." %enemydamageroll
                print "You have %s health remaining." %playerhealthpoints
                cavecombat()
        elif combatroundinput == "dodge":
            enemyattackroll = random.randrange(1,10) / 2
            if enemyattackroll < 5:
                print "Enemy has missed their attack this round."
                cavecombat()
            elif enemyattackroll >= 5:
                enemydamageroll = random.randrange(1,10)
                playerhealthpoints = playerhealthpoints - enemydamageroll
                print "You have taken %s damage." %enemydamageroll
                print "You have %s health remaining." %playerhealthpoints
                cavecombat()
        elif combatroundinput == "run":
            playerrunroll = random.randrange(1,10)
            enemyattackroll = random.randrange(1,10) * 2
            if enemyattackroll < 5 and playerrunroll <5:
                print "Enemy has missed their attack this round."
                print "You have failed to run from this encounter."
                cavecombat()
            elif enemyattackroll >= 5 and playerrunroll >= 5:
                enemydamageroll = random.randrange(1,10)
                playerhealthpoints = playerhealthpoints - enemydamageroll
                print "You have taken %s damage." %enemydamageroll
                print "You have %s health remaining." %playerhealthpoints
                print "You have succeeded in escaping the enemy."

            elif enemyattackroll < 5 and playerrunroll >= 5:
                print "Enemy has missed their attack this round."
                print "You have succeeded in escaping the enemy."

            elif enemyattackroll >= 5 and playerrunroll < 5:
                 enemydamageroll = random.randrange(1,10)
                 playerhealthpoints = playerhealthpoints - enemydamageroll
                 print "You have taken %s damage." %enemydamageroll
                 print "You have %s health remaining." %playerhealthpoints
                 print "You have failed to run from this encounter."
                 cavecombat()
        else:
            print "Learn to type, you suck."
            cavecombat()
    cavecombat()
combat()

这是我最近一次尝试保持健康,任何建议都很感激


Tags: youhaverandomthishasprintelifrandrange
1条回答
网友
1楼 · 发布于 2024-09-28 01:23:13

你需要保持健康。我也是python新手,所以最好四处看看。一个函数里面的IMO函数很奇怪。尝试将函数分离并使用return保留值

只是为了说明我的意思

以下是return一个pl值:

def cavecombat():
    combatroundinput = input("The round has begun. Do you Block, Dodge, or Run?").lower()
    if combatroundinput == "block":
        enemyattackroll = random.randint(1, 10)
        if enemyattackroll < 5:
            print("Enemy has missed their attack this round.")
            pl = 0
            return pl
        elif enemyattackroll >= 5:
            enemydamageroll = random.randint(1, 10) / 2
            pl = enemydamageroll
            print("You have taken %s damage." % enemydamageroll)
            return pl

现在可以执行以下操作:

damage = cavecombat()

它将执行函数,然后将pl的值置于损坏状态

所以如果上面的指纹说“你受到了3点伤害。 伤害值是3

相关问题 更多 >

    热门问题