2015-03-02 1 views
0

Я пытаюсь создать программу, которая работает в аналогичном формате с показами обратного отсчета игры.Создание таймера в python при записи ввода

Я нашел различные способы создания таймера, наиболее успешно с помощью команды time.sleep и цикла while.

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

+0

Я думаю, вам нужно использовать темы [это] (http://www.tutorialspoint.com/python/ python_multithreading.htm) может быть полезным – lelloman

+0

Возможный дубликат [Как запустить фоновый таймер в Python] (http://stackoverflow.com/questions/26002497/how-to-run-a-background-timer-in-python) – aruisdante

+0

Проблема с предложениями по потоку заключается в том, что вы не можете легко прекратить поток «ожидания ввода» из потока «смотрит часы». – Kevin

ответ

0

Это сработало для меня ранее ... Использует time.time(). Если это не то, что вы ищете, возможно, проверить perf_counter()

import msvcrt 
import time 

def Countdown(): 
    p = 3.00 
    alarm = time.time() + p 
    text = [] 
    while True: 
     n = time.time() 
     if msvcrt.kbhit(): 
      text.append(msvcrt.getche())  
     if n < alarm: 
      print(round(alarm - n)) 
     else: 
      print("Time's up!") 
      break 

Countdown() 

Making a countdown timer with Python and Tkinter?

+1

Хорошо, но как он может в то же время использовать 'raw_input' или' input', чтобы получить ответ от пользователя, пока он работает? – Kevin

+0

Ну что-нибудь в цикле while должно выполняться до тех пор, пока не истечет время. Поэтому я бы добавил функцию ввода во время цикла while, возможно, внутри, если n pmat

+0

Хорошо, но тогда 'input' будет блокироваться, и никакой другой код не будет выполняться до тех пор, пока пользователь не введет какой-либо текст и не нажмет Enter. Таким образом, они могли подождать миллион секунд, прежде чем нажимать клавишу ввода, и ваш сценарий не будет печатать «Время вверх» до тех пор, пока это миллион секунд. – Kevin

 Смежные вопросы

  • Нет связанных вопросов^_^