python - 类属性未在程序中更新
问题描述
我对 Python 编码相当陌生。在我的代码中,我试图根据 myPlayer.job 更改 myPlayer.hp 和 myPlayer.sp 的值。但是,出于某种原因,无论工作如何,当我在程序中检查它们时,HP 和 SP 值仍然为 0。如果您知道如何更改它们,请告诉我并感谢您。这是处理我的问题的代码:
class player:
def __init__(self):
self.name = ''
self.job = ''
self.hp = 0
self.sp = 0
self.pwr = 0
self.res = 0
self.agi = 0
self.smr = 0
self.wll = 0
self.status_effects = []
self.location = 'b2'
self.game_over = False
myPlayer = player()
def main_game_loop():
while myPlayer.game_over is False:
prompt()
def setup_game():
os.system('cls')
question1 = "Hello, what's your name?\n"
for character in question1:
sys.stdout.write(character)
sys.stdout.flush()
time.sleep(0.05)
player_name = input("> ")
myPlayer.name = player_name
question2 = "Hello, what role do you want to play?\n"
question2added = "(You can play as a warrior, mage, or priest)\n"
for character in question2:
sys.stdout.write(character)
sys.stdout.flush()
time.sleep(0.05)
for character in question2added:
sys.stdout.write(character)
sys.stdout.flush()
time.sleep(0.01)
player_job = input("> ")
valid_jobs = ['warrior', 'mage', 'priest']
if player_job.lower() in valid_jobs:
myPlayer.job = player_job
print("You are now a " + player_job + "!\n")
while player_job.lower() not in valid_jobs:
player_job = input("> ")
if player_job.lower() in valid_jobs:
myPlayer.job = player_job
print("You are now a " + player_job + "!\n")
if myPlayer.job == 'warrior':
myPlayer.hp = 25
myPlayer.sp = 0
elif myPlayer.job == 'mage':
myPlayer.hp = 15
myPlayer.sp = 20
elif myPlayer.job == 'priest':
myPlayer.hp = 20
myPlayer.sp = 15
解决方案
您的代码不一定不正确,但是当玩家进入他们的工作时很有可能出错。
您有以下代码:
if player_job.lower() in valid_jobs:
这意味着如果玩家进入Warrior
你就会明白他们的意思warrior
。那很好。但是,当您分配玩家的工作时,您需要执行以下操作:
myPlayer.job = player_job
这可能会导致问题,因为您没有lower()
在工作。
相反,您可能想要:
myPlayer.job = player_job.lower()
这样,当您查看要分配的玩家工作时sp
,hp
它将匹配您要与之比较的小写字符串。
推荐阅读
- c# - 如何检测光标是否悬停在 DataGridViewCell 内的文本上
- python - 随机森林特征重要性 Python
- scala - 使用scala spark读取csv并得到错误:线程“main”java.lang.NoClassDefFoundError中的异常:org/apache/spark/sql/SparkSession$
- docker - 不支持overlay2驱动
- javascript - 在文件输入上更改事件监听器不起作用
- google-sheets - 当我打开 Google 表格时,按钮会变得凌乱(错位、重叠)
- python - Django 管理员无法访问特定项目
- javascript - JS 中定义的自定义 HTML 元素不继承父元素样式
- javascript - 如何在 sveltekit SPA 模式中构建单个(非 ESM)bundle.js 文件?
- django - 美丽的汤问题,for循环问题