重复一段“如果”语句

2021-05-16 08:43:52 发布

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

我正在尝试做一个基于文本的游戏,为了让我的战斗机制,我必须重复一个if语句,直到你或怪物死亡。你知道吗

在这里--
Ph代表玩家健康,str代表玩家力量,mdam代表怪物伤害,mstr代表怪物力量,monsterh代表怪物健康,random.random()是你得到的攻击加成(加上这个,有没有办法把数字四舍五入到一位或不到小数位?)谢谢您!:D个

if fight == "A" and ph > 0:
    damage = (str) + (random.random())
    monsterh = 6
    mstr = 0.9
    monsterh = (monsterh) - (damage)
    print(damage)
    print(damage - str)
    print('You attack the monster. You deal %s damage.' % damage ) 
    time.sleep(3)
    if monsterh > 0:
        mstr = 0.9
        mdam = (mstr) + (random.random())
        print('The monster attacks you!')
        ph = ph - mstr
        print("You get hit %s" % mdam )
    else:
        xpgain = damage + 5
        print("You won! You've gained %s XP!" % xpgain)
2条回答
网友
1楼 ·

将从中得到的值四舍五入

random.random() 

你能做到的

round(random.random(),1) 

要四舍五入到小数点后1位,或者如果要去掉小数点,请替换

random.random() 

int(random.random())

至于重复if语句,您可以将其放入一个循环中,当满足某个条件时,该循环将中断

while true:
    if fight == "A" and ph > 0:
        damage = (str) + (int(random.random()))
        monsterh = 6
        mstr = 0.9
        monsterh = (monsterh) - (damage)
        print(damage)
        print(damage - str)
        print('You attack the monster. You deal %s damage.' % damage ) 
        time.sleep(3)
    elif ph<=0 or fight!="A":
        print("You lose!")
        break
    if monsterh > 0:
        mstr = 0.9
        mdam = (mstr) + (int(random.random()))
        print('The monster attacks you!')
        ph = ph - mstr
        print("You get hit %s" % mdam )
    else:
        xpgain = damage + 5
        print("You won! You've gained %s XP!" % xpgain)
        break

尽管你不需要

^{pr6}$,因为我认为你根本不会改变战斗的价值。

你也不必这么做

mdam = (mstr) + (int(random.random()))

你可以这样做

mdam = mstr+int(random.random())

上面的^也适用于代码中的其他地方。如果您有任何问题,请随时提出。你知道吗

网友
2楼 ·

我会把你的战斗循环起来。例如:

while (ph > 0 or monsterh > 0)
    # combat rules

# Check who died and move on from there
if (ph > 0)
    # next thing the player does
else
    # print "You died"

关于舍入,有多种选择,具体取决于您想要做什么:python: getting only 1 decimal place

相关问题