Чтобы это работало, mainl oop вашей игры должен быть в функции (назовем это play
). Допустим, у вас очень простой код.
Когда условие выполнено, вы можете получить доступ к новой функции popUp
. Который может иметь ваше окно tkinter. Когда кнопка нажата, ее команда может быть ...command=play)
, если игрок хочет перезагрузить. Так как функция popUp
не находится внутри mainl oop, игра не будет отвечать на запросы. Пример:
def play():
while carryOn:
for event in pygame.event.get():
if event.type==pygame.QUIT:
carryOn=False
#Checking if a key is pressed and then responding e=with function in the sprite class
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
player.moveLeft(5)
if keys[pygame.K_RIGHT]:
player.moveRight(5)
if keys[pygame.K_UP]:
player.moveUp(5)
if keys[pygame.K_DOWN]:
player.moveDown(5)
if keys[pygame.K_a]:
player.moveLeft(5)
if keys[pygame.K_d]:
player.moveRight(5)
if keys[pygame.K_w]:
player.moveUp(5)
if keys[pygame.K_s]:
player.moveDown(5)
#yourcondition
# if ... :
# carryOn = False
# popUp()
#Game Logic
all_sprites_list.update()
#Setting the background
screen.fill(GREEN)
#Now let's draw all the sprites
all_sprites_list.draw(screen)
#Refresh Screen
pygame.display.flip()
#Number of frames per second
clock.tick(60)
Это не полный код - отсутствующий класс спрайта и код перед этим. После этого вы можете получить окно tkinter (после импорта tkinter), например:
global window #so it can be destroyed in the other function
window = Tk()
#message = ...
#message.grid ...
button = Button(window, text="restart", width=5, command=play)
button.grid # where you want it
Игра будет заморожена до тех пор, пока пользователь не нажмет перезапуск (вы также можете захотеть где-то в своем коде window .destroy()
. это в значительной степени все, что вы хотите, но это не близко к завершению кода. Я надеюсь, что это было полезно.