python - 游戏中的while循环问题(python文本游戏)
问题描述
我一直在做一个游戏,我所拥有的就是我放在下面的东西。问题在于,无论你是否成功,无论何时你逃离敌人,你都会逃跑,我不知道如何阻止这种情况发生。有没有人有什么建议?
编辑:为了解决问题,我删除了 if slime_rank1_chances > 0: 因为它应该在游戏开始时是 100%,我将 while slime_rank1_health != 0: 更改为 while slime_rank1_health > 0:
import random
#rng
dice = random.randrange(1,7)
critical_hit_chance = 15
run_chance = 10
#characters
name_1_health = 10
name_1_attack = 10
name_1_luck = 10
name_1_exp = 0
#enemies
slime_rank1_health = 10
slime_rank1_attack = 1
slime_rank1_luck = 1
slime_rank1_exp = 5
slime_rank1_chances = random.randrange(1,10)
#simulating an attack by a slime rank 1
if slime_rank1_chances > 0:
print("you are suddenly attacked by a slime rank 1!")
while slime_rank1_health != 0:
if random.randrange(1, 16) == critical_hit_chance:
name_1_health = name_1_health - (slime_rank1_attack*2)
print("Its a critical hit!")
print("you have lost " + str(slime_rank1_attack*2) + " health")
else:
name_1_health = name_1_health - slime_rank1_attack
print("you have lost " + str(slime_rank1_attack) + " health")
print("your current health is " + str(name_1_health))
slime_rank1_choice1 = input("What will you do?: A)Attack B)Run [A/B]")
while True:
if slime_rank1_choice1 in ["A","B"]:
break
if slime_rank1_choice1 == "A":
print("You attack slime rank 1")
if random.randrange(1, 16) == critical_hit_chance:
slime_rank1_health = slime_rank1_health - (name_1_attack*2)
print("You attack and deal "+str(name_1_attack*2)+" damage")
print("Its a critical hit!")
else:
slime_rank1_health = slime_rank1_health - name_1_attack
print("You attack and deal "+str(name_1_attack)+" damage")
elif slime_rank1_choice1 == "B":
print("you have chosen to run")
if random.randrange(1,11) == run_chance:
print("you have succesfully escaped!")
slime_rank1_health = slime_rank1_health - slime_rank1_health
else:
print("you failed to escape")
if random.randrange(1, 16) == critical_hit_chance:
name_1_health = name_1_health - (slime_rank1_attack*2)
print("Its a critical hit!")
print("you have lost " + str(slime_rank1_attack*2) + " health")
else:
name_1_health = name_1_health - slime_rank1_attack
print("you have lost " + str(slime_rank1_attack) + " health")
break
解决方案
我认为您的问题是每次尝试运行时代码都会结束,无论您是否成功。您的 if/else 语句看起来不错,但无论哪种方式,它都会在最后遇到中断。
考虑创建一个函数来管理你的游戏玩法和更小的函数来管理运行、攻击、改变生命值等机制。这可能有助于你更好地组织代码并使事情更清晰。坚持下去——看起来不错!
推荐阅读
- reactjs - 与 babel 7 反应,babel 6 似乎被其他一些依赖加载
- php - 更新 WooCommerce 可变产品变化库存数量问题
- javascript - 下载的 Javascript 照片库在我的网站上不起作用
- php - 从两个表中选择所有具有不同别名的 id 列
- ios - 群组推送通知
- html - HTML + RoR 下拉菜单在移动设备上不可点击
- docker - Docker 并尝试使用 Azure Pipelines 构建映像
- javascript - 如何在使用“包含”选项在“续集”中查询时获得一个具有关联子嵌套数组的父对象?
- python - AttributeError:模块 'socket' 没有属性 'AF_INET'
- ssrs-2008 - 根据参数显示或隐藏 tablix