我一直在打一场格斗游戏,但伤害不会随机化。
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点伤害。这是为什么?我该如何解决?
提前感谢您提供的任何帮助。
答案 0 :(得分:2)
您可以在以下函数中指定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
值。
答案 1 :(得分:0)
你用这一行选择伤害量:
playerD = randint(0,5)
然后在之后的几行进入你的循环:
while slay:
之后你永远不会再次设置伤害,因此它永远不会改变。
基本上,你在开始玩之前掷骰子,然后把它放在桌子上,每次你想要一个新的数字时都看一眼。您需要在游戏过程中将其拾取并再次滚动,即在循环内选择一个新的随机数。
我有点提醒this xkcd comic。