在声明变量增量之前,我遇到了错误。因此,当我打开商店并每次点击购买更多$$$时
请帮忙。
这是我的代码:
from time import sleep as wait
import os
coin = 0
autoclick = 0
incrementation = 25
uppergrades_bought = 1
increment = 1
clear = lambda: os.system('clear')
def store():
cmd = int(input("What do you want to do? 1 to buy autoclick and 2 to buy more money per click").strip())
if cmd == 1:
coin-incrementation*uppergrades_bought
autoclick+=1
elif cmd == 2:
coin-incrementation*uppergrades_bought
increment+=1
clear()
while 1 == 1:
print("You have {} coins!".format(coin))
coins = input("Press enter")
clear()
coin+=increment
if coin>=incrementation*uppergrades_bought:
storeyn = input("Hi, would you like to go into the store? you have enough to buy the next uppergrade")
if storeyn.strip().lower() == "yes" or storeyn.strip().lower() == "y":
store()
elif storeyn.strip().lower() == "no" or storeyn.strip().lower() == "n" :
pass
else:
pass
else:
pass
您的store
函数无权访问其尝试更新的值。有很多方法可以解决这个问题- global
/nonlocal
正如codewelldev所建议的那样,现在需要更改的代码量最少,但是随着程序的增长,这很可能在以后给您带来很多问题,而作为IMO的新手,您应该完全避免。我的建议是重组程序,以便将所有这些信息存储在一个类中:
from time import sleep as wait
import os
class ClickerGame:
def __init__(self):
self.coin = 0
self.autoclick = 0
self.incrementation = 25
self.upgrades_bought = 1
self.increment = 1
def click(self) -> None:
"""Click once, gaining coins"""
self.coin += self.increment
def can_afford_upgrade(self) -> bool:
"""Check if there are enough coins to afford an upgrade"""
return self.coin >= self.incrementation * self.upgrades_bought
def buy(self, upgrade: int) -> None:
"""1 to buy autoclick and 2 to buy more money per click"""
if upgrade == 1:
self.autoclick += 1
elif upgrade == 2:
self.increment += 1
else:
raise ValueError(f"Invalid upgrade option {upgrade}")
self.coin -= self.incrementation * self.upgrades_bought
self.upgrades_bought += 1
def store(self) -> None:
"""Visit the store, prompting the user for a purchase."""
try:
cmd = int(input(
f"What do you want to do? {self.buy.__doc__}"
).strip())
self.buy(cmd)
except ValueError as e:
print(e)
def clear() -> None:
os.system('clear')
clicker = ClickerGame()
while True:
print(f"You have {clicker.coin} coins!")
input("Press enter")
clear()
clicker.click()
if clicker.can_afford_upgrade():
storeyn = input(
"Hi, would you like to go into the store? "
"you have enough to buy the next upgrade"
).strip().lower()
if storeyn in {"yes", "y"}:
clicker.store()
elif storeyn in {"no", "n"}:
pass
else:
pass
else:
pass
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句