Как остановить программу, когда игрок достигнет установленного времени в игре Python - PullRequest
2 голосов
/ 23 мая 2019

Я только что вошел в python и пытаюсь создать игру-викторину. Я хотел бы добавить таймер обратного отсчета в 2 минуты к моей викторине, чтобы, когда таймер достигнет нуля, вопросы прекратились и сказали, что у вас нет времени. Я также пытался сделать это с помощью секундомера, но не мог понять, как прекратить игру, так что если вы знаете, как это сделать, это будет так же хорошо.

Примечание: я НЕ использую pygame. Многие другие пользователи спрашивали в предыдущих темах.

Это код, который я собрал из других документов, но он не останавливается, когда достигает 2 минут или 0 минут.

def countdown():
    t = 60
    while t:
        mins, secs = divmod(t, 60)
        timeformat = '{:02d}:{:02d}'.format(mins, secs)
        print(timeformat, end='\r')
        time.sleep(1)
        t -= 1
    print("You're out of time!\n")
    sys.exit ("goodbye")

def main_game():
    count_thread = threading.Thread(None, countdown)
    question_4 = ("question 1?")
    option_4 = (" a. 1 \n b. 5 \n c. 3 \n d. 7")
    print(question_4)
    print(option_4)            
    answer_4 = input (">")
    if answer_4.lower()== "b":
        score = score + 100
    else:
        print("Incorrect")
import time
start1 = time.time()
if start1 >= 120:
      import sys
      sys.exit
question_a = ("question?")
option_a = (" a. 7 \n b. 8 \n c. 2 \n d. 1")
print(question_a)
print(option_a)            
answer_a = input (">")
if answer_a.lower()== "b":
     score = score + 100
else:
    print("Incorrect")
###rest of questions

end1 = time.time()

Оба кода - две разные версии, которые я пробовал. Оба кода не работают. Нижний код умножает время воспроизведения, но не останавливается на отметке 2 минуты.

Буду признателен за любую помощь, совет или обратную связь!

1 Ответ

1 голос
/ 23 мая 2019

Поскольку вы используете Pygame.

Самый простой код , который у вас может быть (по хорошим стандартам кодирования), должен включать pygame.quit(). Как это:

import pygame, sys
from pygame.locals import *
pygame.init()
DISPLAYSURF = pygame.display.set_mode((400, 300))
pygame.display.set_caption('Hello World!')
while True: # main game loop
    for event in pygame.event.get():
        if event.type == QUIT:
               pygame.quit()
               sys.exit()
               pygame.display.update()

С последующим Python sys.exit функция.

Выход из Python. Это реализуется путем вызова исключения SystemExit, поэтому выполняются действия по очистке, указанные в предложениях finally для операторов try, и можно перехватить попытку выхода на внешнем уровне.

Вы можете сделать игру-викторину без явного использования потоков Python, но если вы планируете использовать потоки Python, вы можете начать с простого и грязного примера из здесь .

Надеюсь, это поможет. Вы уже можете найти викторины в онлайн-игре Pygame и, возможно, изменить их.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...