我还有另一个与此游戏相关的问题,这里是: https://stackoverflow.com/questions/28545444/python-3-game-bug-message-repeating
我制作的游戏是Cookie Clicker(仅用于编码练习!)。我遇到了一个问题,用户可以按住回车键,并快速获得硬币。我想阻止这一点。这是我的代码:
coin = 0
keepgoing = True
while keepgoing == True:
print('You have ' + str(coin) + ' cmd-coins' )
response = input('Press enter to get a coin!')
if response == 'q':
keepgoing = False
print('Thanks for playing!')
coin = coin + 1
答案 0 :(得分:2)
我为你的问题写了一个相当“噱头”的解决方案,它在某种程度上工作但绝对不是完美的。根据您的编译器,您可能需要更改start-end
的条件值,使其成为一个值,允许您尽可能快地按静态按下而不会中断但不允许用户按住enter
键。对于WingIde中的我来说,0.03是最佳值。
如果您要导入像Pygame这样的模块,您会发现这种游戏更容易制作。
import time
coins = 0
keepgoing = True
end = -1
while keepgoing:
print('You have ' + str(coins) + ' cmd-coins' )
response = input('Press enter to get a coin!')
start = time.time()
if start-end < 0.03:
print ("Don't hold down the Enter key you cheater!")
keepgoing = False
if response == 'q':
print('Thanks for Playing!')
keepgoing = False
coins = coins + 1
end = time.time()
注意:此解决方案适用于Python 3,适用于&lt;在Python 3中,您必须将raw_input()
替换为input()
。另外,我不建议尝试在在线编译器上使用它。
答案 1 :(得分:0)
G Force dog, 你可以通过做一些改变来改变你的游戏,直到某人或我找到一个好的解决方案(妈妈下令上床睡觉)。直到我们找不到解决方案,请使用这个不完全是解决方案的代码。
coins = 0
real = 0
while real == 0:
if True:
print('You have ' + str(coins) + ' cmd-coins' )
response = input('Press c to get a coin, then press ENTER!')
if response == 'c' or response == 'C':
coins = coins + 1
if response == 'q':
print('Thanks for playing!')
real = 1
还有两件事: -
我认为我确实有一个想法形成...如果我们在导入'time'之后再创建一个while循环,其条件通过赋值变量'time.clock()每2秒激活一次循环'当它的值是2的倍数时,它会激活! 得到它了?我知道该怎么做,但似乎无法将其放入代码中。看看你是否可以,读者(特别是Elizion和Yeniaul)
答案 2 :(得分:-1)
尝试使用time.sleep(延迟秒数)来减速 所以你可以做到
coin = 0
keepgoing = True
while keepgoing == True:
time.sleep(0.25)
print('You have ' + str(coin) + ' cmd-coins' )
response = input('Press enter to get a coin!')
if response == 'q':
keepgoing = False
print('Thanks for playing!')
coin = coin + 1
这可能会让他们在获得另一枚硬币之前延迟四分之一秒。