成就系统和IDLE python游戏中使用pycharm



我正在尝试在游戏中使用成就系统。游戏就像饼干点击器,除了你一遍又一遍地输入字母"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("")

当然,您必须根据自己的需求熟练地编写代码,但它应该使问题清楚!

相关内容

最新更新