制作Cookie Clicker时如何阻止两位数变为00?
嘿,我看到你在做Cookie Clicker时遇到了出售饼干后的数值显示问题,这就来帮你搞定!
问题根源分析
你的代码里出售逻辑的两个错误导致了数值混乱:
- 变量被意外覆盖:在
if click == "1"的块里,你写了for cookies in range(cookies)——这里你把原本存储饼干数量的cookies变量,当成了循环的迭代变量。循环执行时,cookies会被逐个替换成range(cookies)里的数值(比如原来有10个饼干,循环结束后cookies会变成9),这直接破坏了原本的饼干计数,导致后续显示异常。 - 低效且错误的累加逻辑:就算循环没覆盖变量,逐个累加
offer1也完全没必要,还容易因为循环逻辑出错导致数值计算偏差。
另外还有个小问题:你代码里没定义offer1变量,运行时会直接抛出NameError,这个也得补上。
修复后的完整代码
from getkey import getkey # 初始化变量,先定义offer1的单个饼干售价 money = 0 cookies = 0 offer1 = 1 # 可以根据需求修改这个售价数值 while True: print(f"🍪{cookies}\n${money}\n\n[1]offer1: ${offer1} per cookie") click = getkey() if click == "\n": cookies += 1 elif click == "1": # 直接计算出售所有饼干的总收益 money += cookies * offer1 # 出售完成后清空饼干数量 cookies = 0
关键修改点说明
- 补上
offer1变量定义:给它设置一个合理的单饼干售价,避免运行报错。 - 简化出售逻辑:用
cookies * offer1直接算出总收益,一次性加到money里,高效又准确。 - 出售后清零饼干:把
cookies设为0,符合“卖掉所有饼干”的业务逻辑。 - 改用
elif分支:确保同一时间只会执行点击或出售的其中一个逻辑,避免潜在的分支冲突。
现在测试一下:比如你攒了20个饼干,按下1后,money会增加20×offer1的金额,cookies会变成0,数值显示完全正常,不会再出现随机数字或异常的00啦!
内容的提问来源于stack exchange,提问作者user20984384
相关产品推荐
相关产品推荐

