Python数字不会随机化

2024-09-28 05:28:59 发布

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

我一直在做一个格斗游戏,但伤害不会随机化。你知道吗

from random import randint
import time
#playerHealth = 20 
#trollHealth = 10
#dragonHealth = 15
#playerDamage = randint(0,5)
#trollDamage = randint(0,4)
#dragonDamage = randint(0,7)
#slay = True
#######Variables.

#print("""Random fight""")




def fight(enemy):

    playerH = 20 
    trollH = 10
    dragonH = 15
    playerD = randint(0,5)
    trollD = randint(0,4)
    dragonD = randint(0,7)
    slay = True

    if enemy == "troll":
        enemyH = trollH
        enemyD = trollD
    elif enemy == "dragon":
        enemyH = dragonH
        enemyD = dragonD
    else:
        print("Invalid")

    print"You are fighting a ", enemy
    while slay:
        print"Your health:",playerH
        print"Enemy health:",enemyH
        time.sleep(1)

        #########When player is attacking###########################
        if playerD == 5 or playerD == 4:
            print"You deal",playerD,"damage points. A critical hit!"
            time.sleep(1)
            enemyH = enemyH - playerD
            print"The",enemy,"has",enemyH,"health points remaining."
            time.sleep(1)
        elif playerD == 0:
            print"You missed and deal 0 damage points."
            time.sleep(1)
            enemyH = enemyH - playerD
            print"The enemy has",enemyH,"health points remaining."
            time.sleep(1)
        else:
            print"You deal",playerD,"damage points."
            time.sleep(1)
            enemyH = enemyH - playerD
            print"The enemy has ", enemyH, "health points remaining."
            time.sleep(1)
        #############################################################

        ########When troll is attacking##############################
        if enemy == "troll":
            if enemyD == 4:
                print"The troll deals 4 damage points. A critical hit!"
                time.sleep(1)
                playerH = playerH - enemyD
                print"You have",playerH,"health points remaining."
                time.sleep(1)
            elif enemyD == 0:
                print"The troll missed and deals 0 damage points."
                time.sleep(1)
                playerH = playerH - enemyD
                print"You have",playerH,"health points remaining."
                time.sleep(1)
            else:
                print"The troll deals",enemyD,"damage points."
                time.sleep(1)
                playerH = playerH - enemyD
                print"You have",playerH,"health points remaining."
                time.sleep(1)
        ##############################################################

        ##########When dragon is attacking############################        
        if enemy == "dragon":
            if enemyD == 6 or enemyD == 7:
                print"The dragon deals",enemyD,"damage points. A critical hit!"
                time.sleep(1)
                playerH = playerH - enemyD
                print"You have",playerH,"health points remaining."
                time.sleep(1)
            elif enemyD == 0:
                print"The dragon missed deals 0 points of damage."
                time.sleep(1)
                playerH = playerH - enemyD
                print"You have",playerH,"health points remaining."
                time.sleep(1)
            else:
                print"The dragon deals",enemyD,"damage points."
                time.sleep(1)
                playerH = playerH - enemyD
                print"You have",playerH,"health points remaining."
                time.sleep(1)
        ###############################################################

        if enemyH == 0:
            slay = False
            print("You won the battle!")
        elif playerH == 0:
            slay = False
            print("You lost the battle. Better luck next time.")
##############################End of function##################################


#########Begining of game############################
enemyTest = True
print("Prepare yourself for battle.")
time.sleep(1)
while enemyTest:
    enemy = raw_input("Would you like to fight a 'dragon' or a 'troll'? ")
    enemy = enemy.lower()
    if enemy == "troll" or enemy == "dragon":
        enemyTest = False
    else:
        print("Invalid.")
        time.sleep(1)

if enemy == "troll":
    fight(enemy)
elif enemy == "dragon":
    fight(enemy)
else:
    print("Restart the program.")
    time.sleep(3)








#To fix:
#Enemy still attacks after death(test for death after each attack. Function?
#Damage doesn't vary
#Speed too fast at parts

在函数中,我希望它保持随机伤害,所以我为每个角色设置一个randint。但是,比如说我想和一条龙战斗,战斗就开始了,如果玩家先造成4点伤害,龙先造成2点伤害,那么在整个战斗中他们只会造成4点和2点伤害。为什么?我该怎么修?你知道吗

提前谢谢你能给我的任何帮助。你知道吗


Tags: youiftimesleeppointsprinthealthdamage
2条回答

你可以用这一行选择伤害金额:

 playerD = randint(0,5)

然后在之后的几行进入循环:

 while slay:

之后你再也不会造成伤害,所以它永远不会改变。你知道吗

基本上,你在开始玩之前先掷骰子,然后把它放在桌子上,每次你想要一个新的数字时都会瞥一眼。在游戏过程中,你需要把它捡起来再掷一次,也就是说,在循环中选择一个新的随机数。你知道吗

我有点想起this xkcd comic。你知道吗

在以下函数中指定randint值:

def fight(enemy):
    playerH = 20 
    trollH = 10
    dragonH = 15
    playerD = randint(0,5)
    trollD = randint(0,4)
    dragonD = randint(0,7)

import random
rand_value=   random.randint(0,10)

for i in range(5):
    print rand_value
2
2
2
2
2


for i in range(5):
    print random.randint(0,5)
2
1
3
2
5

然后输入while slay loop,这样循环中的值就不会改变。 您需要在循环中设置randint值。你知道吗

相关问题 更多 >

    热门问题