#python #multithreading #time #timer
Вопрос:
Я делаю простую игру с таблицей умножения на python просто для практики, и до сих пор она работала нормально. Сама игра-это просто случайно сгенерированный a x b, в котором у вас есть определенное количество времени, чтобы ответить на него, пока вы не введете неправильный ответ или время не закончится. Я просто не знаю, как я мог бы добавить обратный отсчет таймера, который отображается и обновляется каждую секунду. Вот мой код:
import random
import time
from threading import Timer
def timeout():
print('nnO tempo acabou!nnttGAME OVER!')
def newTimer(seconds):
global t
t = Timer(seconds, timeout)
# -------- Instructions --------
def instructions():
print("Como funciona?n")
print("Irão aparecer na tela várias contas da tabuada de 1 a 10. Você terá 3, 5 ou 7 segundos para responder.n")
print("A cada resposta que você acertar você ganhará um ponto. Quanto mais você acertar em sequêncian")
print("mais pontos fará! Se errar ou acabar o tempo, GAME OVER! Boa sorte!nn")
print("ATENÇÃO: Para digitar as respostas e selecionar opções no menu digite o número e aperte ENTER.n")
input("Aperte ENTER para continuar ...")
# ----------------------------
# ----------- Menu -----------
def main():
opt1 = '0'
opt2 = '0'
right = 0
points = 0
best = 0
seconds = 5
while opt1 < '1' or opt1 > '5':
print("33c")
print('tJOGO DA TABUADAn')
print('Menu')
if best != 0:
print('ttMelhor pontuação: {}'.format(best))
print('nDigite a opção: (escreva o numero)n')
print('1 - Jogarn')
print('2 - Instruçõesn')
print('3 - Escolher tempo de respostan')
print('4 - Zerar pontosn')
print('5 - Sairn')
opt1 = input('')
if opt1 < '1' or opt1 > '5':
print('opção inválidan')
input("Aperte ENTER para continuar ...")
else:
if opt1 == '3':
while opt2 < '1' or opt2 > '3':
print("33c")
print('Selecione o tempo:')
print('1 - 3 segundos')
print('2 - 5 segundos')
print('3 - 7 segundos')
opt2 = input('')
if opt2 < '1' or opt2 > '3':
print('opção inválida')
else:
if opt2 == '1':
seconds = 3
if opt2 == '2':
seconds = 5
if opt2 == '3':
seconds = 7
elif opt1 == '4':
best = 0
# ------ actual game -------
elif opt1 == '1':
print("33c")
points = 0
print('Você tem {} segundos para responder!!n'.format(seconds))
print('Se prepare!')
time.sleep(2)
print("33c")
right = 0
while right == 0:
a = random.randint(1, 10)
b = random.randint(1, 10)
answer = None
newTimer(seconds)
t.start()
answer = input('{} x {} = '.format(a, b))
t.cancel()
if answer != str(a * b):
if answer == '':
if points == 1:
print('nVocê fez {} ponto!n'.format(points))
else:
print('nVocê fez {} pontos!n'.format(points))
input("Aperte ENTER para continuar ...")
break
right = 1
print('Resposta errada!nnttGAME OVER!')
if points == 1:
print('nVocê fez {} ponto!n'.format(points))
else:
print('nVocê fez {} pontos!n'.format(points))
input("Aperte ENTER para continuar ...")
break
else:
points = 1
if points > best:
best = points
elif opt1 == '2':
print("33c")
instructions()
else:
exit()
opt1 = '0'
opt2 = '0'
instructions()
main()
Язык-португальский, но все переменные на английском. Заранее спасибо