在Python clicker游戏中每秒添加硬币

2024-10-03 02:48:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我是python新手。我正试图建立一个空闲的点击游戏。如果你点击,你会得到一枚硬币。您应该能够购买“自动舔币器”,这意味着您每秒自动获得硬币。 我现在把代码放在一个while循环中,这个循环在我写“EXIT”时结束。我不知道如何在其他事情发生时实现时间和添加自动硬币。 总而言之:想要实现每秒硬币数吗

我的代码:

print("Welcome to the game")

coins = 1
a = 0
shop = 0
coinsperclick = 1
nothing = 999
coinspersec = 1


def help():
    print("'help' für Hilfe", '\n', "Enter für coins", '\n', "'shop' für den Shop")


help()


a = input()
while a != "EXIT":
    a = input()
    if a == "shop":
        print("Number 0:     EXIT Shop      Cost: 0")
        print("Number 1:     Clicker +1     Cost: 50")
        print("Number 2:     CPS +1         Cost: 100")
        shop = eval(input("What do you want to buy?"))
        if shop == 0:
            nothing = nothing
        if shop == 1:
            kaufmenge = eval(input("How many do you want to buy?"))
            coinsperclick = coinsperclick+kaufmenge
            coins = coins-(kaufmenge*50)
        if shop == 2:
            kaufmenge = eval(input("How many do you want do buy?"))
            coinspersec = coinspersec+kaufmenge
            coins = coins-(kaufmenge*100)
    if a == "help":
        help()
    if a == "":
        coins = coins+coinsperclick
        print(coins)
        a = 1

Tags: tonumberinputifexithelp硬币shop
2条回答

您可以使用2个属性:1个用于硬币计数器,1个用于每秒硬币。每次使用硬币属性时,您都会计算自上次使用硬币计数器以来您赚取的新硬币,这有点“假装”硬币一直在计数,而只是在硬币重要时“物化”硬币

import time

class Game:
  def __init__(self):
    self._coins = 0
    self._last_time = time.time()
    self._cps = 1
  
  @property
  def coins(self):
    self._collect_coins()
    return self._coins

  def _collect_coins(self):
    new_time = time.time()
    self._coins += self._cps * (new_time - self._last_time)
    self._last_time = new_time

  @property
  def coins_per_second(self):
    return self._cps

  @coins_per_second.setter
  def coins_per_second(self, value):
    self._collect_coins()
    self._cps = value

无论何时使用新硬币,此代码都会计算新硬币的价值:

>>> g = Game()
>>> g.coins
0
>>> time.sleep(2)
>>> g.coins
2

它还确保每当游戏的coins_per_second发生变化时,你都会收集你在每秒更换硬币之前赚取的硬币数量,从那时起,你将开始以新的速度赚取:

>>> g = Game()
>>> time.sleep(1)
>>> g.coins_per_second = 2
>>> time.sleep(1)
>>> g.coins
3

如果当每秒硬币数发生变化时,您没有收集硬币,那么您将以每秒2枚硬币的变化率错误地计算这两秒

import time

coins = 0
while True:
     coins += 1
     time.sleep(1)

每秒添加一个

相关问题 更多 >