Как перезапустить графическую программу черепахи с самого начала?

Кто-нибудь знает, как перезапустить программу, например, когда игрок набирает 5 очков, после текста Player a Wins он дает определенную временную задержку, а затем напрямую перезапускает игру с 0 0. Я создал счет но застряли при перезапуске программы, как только она достигает 5 баллов?

Сначала я импортировал turtle как игру.

if (scoreboard_a > 4):
    win.write("Player A WINS!", font=textfont2)
    game.reset()
elif (scoreboard_b > 4):
    win.write("Player B WINS!", font=textfont2)
    game.reset()

person Beginner12345    schedule 11.01.2021    source источник


Ответы (2)


Вы можете перезапустить всю программу следующим образом:

import os
import sys
import time
time.sleep(2)
os.execl(sys.executable, sys.executable, *sys.argv)

Или вы можете сбросить баллы и другие элементы, например:

time.sleep(2)
# reset variables 
person Programmer    schedule 11.01.2021
comment
спасибо, помог мне перезапустить игру сейчас @Programmer - person Beginner12345; 12.01.2021

Вы можете использовать цикл while; поместите весь ваш код, за исключением, возможно, импорта, в цикл while:

import turtle
from time import sleep

while True:
    # All your game code here
    scoreboard_a = 0
    scoreboard_b = 0
    if (scoreboard_a > 4):
        win.write("Player A WINS!", font=textfont2)
    elif (scoreboard_b > 4):
        win.write("Player B WINS!", font=textfont2)
    sleep(2)

Если ваша игра уже находится в цикле while, используйте break, когда игра закончится:

import turtle
from time import sleep

while True:
    # All your game code here
    scoreboard_a = 0
    scoreboard_b = 0
    while True:
        # All your game code here
        if (scoreboard_a > 4):
            win.write("Player A WINS!", font=textfont2)
            sleep(2)
            break
        elif (scoreboard_b > 4):
            win.write("Player B WINS!", font=textfont2)
            sleep(2)
            break
person Ann Zen    schedule 12.01.2021
comment
Вот совет: использование цикла while или time.sleep() не является хорошей идеей для программ, управляемых событиями, поскольку это может сделать графический интерфейс невосприимчивым. Итак, вместо time.sleep() используйте черепаху ontimer() - person JacksonPro; 13.01.2021