如何在按键时创建暂停功能
How to create a pause function when pressing a key
我正在尝试发明一种在按下 P 时暂停游戏的功能。我还希望它在游戏 运行 时显示在屏幕上。但是,我不知道如何继续我的职能。另外,是否可以在不使用 import time
的情况下执行此操作?
用我的代码,开始游戏后,P只暂停其中一个方块,它再也不会移动了。
def play():
onkey(None,"space")
clear()
hanoi(6, t1, t2, t3)
write("press STOP button to exit",
align="center", font=("Courier", 16, "bold"))
def pause():
onkey(None,"p")
clear()
hanoi(6, t1, t2 ,t3)
write("Press P to Pause",
align="center", font=("Courier", 16, "bold"))
if onkeypress("p"):
Pause = True
def main():
global t1, t2, t3
ht(); penup(); goto(0, -225) # writer turtle
t1 = Tower(-250)
t2 = Tower(0)
t3 = Tower(250)
# make tower of 6 discs
for i in range(6,0,-1):
t1.push(Disc(i))
# prepare spartanic user interface ;-)
write("Aleksandar Stefanov's ToH. Press spacebar to start game",
align="center", font=("Courier", 16, "bold"))
onkey(play, "space")
onkey(pause, "p")
listen()
return "EVENTLOOP"
if __name__=="__main__":
msg = main()
print(msg)
mainloop()
您应该跟踪游戏状态以在按下 p
时切换它
类似的东西:
def pause():
if (GameStatus == 'play'):
GameStatus = 'pause'
#GAME IS ON PAUSE
elif (GameStatus == 'pause'):
GameStatus = 'play'
#GAME IS ON PLAY
def main():
global GameStatus
GameStatus = 'play'
onkey(pause, "p")
如果您想暂停 onpress
和取消暂停 onrelease
,您可以使用 onkeypress
和 onkeyrelease
注册您的活动
类似的东西:
def pause():
if (GameStatus == 'play'):
GameStatus = 'pause'
#GAME IS ON PAUSE
def unpause():
if (GameStatus == 'pause'):
GameStatus = 'play'
#GAME IS ON PLAY
def main():
global GameStatus
GameStatus = 'play'
onkeypress(pause, "p")
onkeyrelease(unpause, "p")
我刚刚完成了这个工作,在开始工作之后我将它简化为这个。它通过将内容包装在 if 语句中来暂停 while 循环。
#screen.tracer is set to 0
#variable for if statement
PAUSED = False
#function to change variable
def pause_game():
global PAUSED
if PAUSED:
PAUSED = False
elif not PAUSED:
PAUSED = True
#function tied to key press
screen.onkeypress(pause_game, "space")
#if statement I wrapped all content of while game_is_on loop
if not PAUSED:
#(perform all function of game)
elif PAUSED:
time.sleep(.01)
screen.update()
C/P将此代码添加到我的贪吃蛇游戏中,效果相同。
我正在尝试发明一种在按下 P 时暂停游戏的功能。我还希望它在游戏 运行 时显示在屏幕上。但是,我不知道如何继续我的职能。另外,是否可以在不使用 import time
的情况下执行此操作?
用我的代码,开始游戏后,P只暂停其中一个方块,它再也不会移动了。
def play():
onkey(None,"space")
clear()
hanoi(6, t1, t2, t3)
write("press STOP button to exit",
align="center", font=("Courier", 16, "bold"))
def pause():
onkey(None,"p")
clear()
hanoi(6, t1, t2 ,t3)
write("Press P to Pause",
align="center", font=("Courier", 16, "bold"))
if onkeypress("p"):
Pause = True
def main():
global t1, t2, t3
ht(); penup(); goto(0, -225) # writer turtle
t1 = Tower(-250)
t2 = Tower(0)
t3 = Tower(250)
# make tower of 6 discs
for i in range(6,0,-1):
t1.push(Disc(i))
# prepare spartanic user interface ;-)
write("Aleksandar Stefanov's ToH. Press spacebar to start game",
align="center", font=("Courier", 16, "bold"))
onkey(play, "space")
onkey(pause, "p")
listen()
return "EVENTLOOP"
if __name__=="__main__":
msg = main()
print(msg)
mainloop()
您应该跟踪游戏状态以在按下 p
时切换它类似的东西:
def pause():
if (GameStatus == 'play'):
GameStatus = 'pause'
#GAME IS ON PAUSE
elif (GameStatus == 'pause'):
GameStatus = 'play'
#GAME IS ON PLAY
def main():
global GameStatus
GameStatus = 'play'
onkey(pause, "p")
如果您想暂停 onpress
和取消暂停 onrelease
,您可以使用 onkeypress
和 onkeyrelease
注册您的活动
类似的东西:
def pause():
if (GameStatus == 'play'):
GameStatus = 'pause'
#GAME IS ON PAUSE
def unpause():
if (GameStatus == 'pause'):
GameStatus = 'play'
#GAME IS ON PLAY
def main():
global GameStatus
GameStatus = 'play'
onkeypress(pause, "p")
onkeyrelease(unpause, "p")
我刚刚完成了这个工作,在开始工作之后我将它简化为这个。它通过将内容包装在 if 语句中来暂停 while 循环。
#screen.tracer is set to 0
#variable for if statement
PAUSED = False
#function to change variable
def pause_game():
global PAUSED
if PAUSED:
PAUSED = False
elif not PAUSED:
PAUSED = True
#function tied to key press
screen.onkeypress(pause_game, "space")
#if statement I wrapped all content of while game_is_on loop
if not PAUSED:
#(perform all function of game)
elif PAUSED:
time.sleep(.01)
screen.update()
C/P将此代码添加到我的贪吃蛇游戏中,效果相同。