2 回答

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超2個(gè)贊
import time
coins = 0
while True:
coins += 1
time.sleep(1)
每秒添加一個(gè)

TA貢獻(xiàn)1874條經(jīng)驗(yàn) 獲得超12個(gè)贊
您可以使用 2 個(gè)屬性:1 個(gè)用于硬幣計(jì)數(shù)器,1 個(gè)用于每秒硬幣數(shù)。每當(dāng)您使用硬幣屬性時(shí),您都會(huì)計(jì)算自上次使用硬幣計(jì)數(shù)器以來(lái)您賺取的新硬幣,這有點(diǎn)“假裝”就像硬幣一直在計(jì)數(shù)一樣,而只是“具體化”了硬幣,無(wú)論何時(shí)都很重要。
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
每當(dāng)您使用新硬幣時(shí),此代碼都會(huì)計(jì)算它的價(jià)值:
>>> g = Game()
>>> g.coins
0
>>> time.sleep(2)
>>> g.coins
2
并且它確保每當(dāng)游戲coins_per_second發(fā)生變化時(shí),無(wú)論每秒更改硬幣之前您賺取多少硬幣,您都會(huì)從那時(shí)開始以新的比率開始賺?。?/p>
>>> g = Game()
>>> time.sleep(1)
>>> g.coins_per_second = 2
>>> time.sleep(1)
>>> g.coins
3
如果您在每秒金幣發(fā)生變化時(shí)沒有收集金幣,那么您就會(huì)以每秒 2 個(gè)金幣的變化率錯(cuò)誤地計(jì)算這兩個(gè)秒。
添加回答
舉報(bào)