我正在尝试在游戏中使用成就系统。游戏就像饼干点击器,除了你一遍又一遍地输入字母"L",可以升级每种类型完成的效果。我试图做到这一点,所以当你得到一定数量的硬币时,比如 1000,它会显示你已经实现了 1000 个硬币的成就,但它似乎不起作用。这是代码:
if coins == 1000:
print("")
print("You have a new achievement!")
print("[✔] - Earn 1,000 points")
print("You have 1/6 coin achievements")
print("")
if coins == 10000:
print("")
print("You have a new achievement!")
print("[✔] - Earn 10,000 points")
print("You have 2/6 coin achievements")
print("")
您的具体问题是您使用了错误的比较器。 如果使用==
.您正在检查该值是否完全相等。 您对玩家何时"实现"值感兴趣,因此请将比较器切换为>=
。 这样,当玩家从 980 分上升到 1001 分时,1001 >= 1000
评估为 True
.
请注意,每次检查时都会打印文本,即使他们已经取得了成就,因此也许以下内容会很有用:
has_1000_achievement = False
has_10000_achievement = False
if coins >= 1000 and not has_1000_achievement:
has_1000_achievement = True
print("")
...
P i 提供的解决方案无疑会奏效,但我相信这不是您目前水平可以流利理解的东西。
编辑:在OP添加评论后,这个问题对我来说变得更加清晰。也许您可以尝试以下方法(当然这只是一个例子,因为 OP 没有提供代码的最小运行和平):
# -*- coding: utf-8 -*-
numCoinAchievements = 0
nextCoinLevel = 1000
for coins in range(0, 100000, 33):
if coins >= nextCoinLevel:
numCoinAchievements += 1
if numCoinAchievements == 1:
nextCoinLevel = 10000
elif numCoinAchievements == 2:
nextCoinLevel = 15000
else:
break
print("")
print("You have a new achievement!")
print("[✔] - Earn %d points" % nextCoinLevel)
print("You have %d/6 coin achievements" % numCoinAchievements)
print("")
当然,您必须根据自己的需求熟练地编写代码,但它应该使问题清楚!