I made a quiz game in which I needed a countdown timer to show up till the player answered it. In this code, all numbers show at the end of the time, not second by second. Could anyone tell me what the problem is?
After you run the game, you should press these keys in order: q --> f1 or f2 or f3 --> r --> a
As the original code contains many different elements, I try to delete not relevant parts but keep some of them because I am not sure if they affect this part or not.
enter code here
import pygame
import time
import sys
pygame.init()
class Test:
def __init__(self):
self.clock = pygame.time.Clock()
self.test = pygame.display.set_mode((500, 500))
self.test.fill((255, 255, 255))
self.i = 10
self.base_font = pygame.font.Font(None, 42)
self.i_text= None
self.Q_level_Choosed = False
self.Qclicking = False
self.ready_key_pressed = False
self.answer_key_pressed = False
def QTimer(self):
for i in reversed(range(self.i)):
time.sleep(1)
self.i_text = self.base_font.render(str(i), True, (0, 0, 0))
self.test.blit(self.i_text, (250, 250))
print("Timer", I)
def Q_level_choosing(self, event):
if event.key == pygame.K_F1:
self.Q_level_Choosed = True
elif event.key == pygame.K_F2:
self.Q_level_Choosed = True
elif event.key == pygame.K_F3:
self.Q_level_Choosed = True
print("Q_level_Choosed", self.Q_level_Choosed)
return self.Q_level_Choosed
def Ready(self, event):
if event.key == pygame.K_r:
self.ready_key_pressed = True
print("Ready_key_pressed", self.ready_key_pressed)
return self.ready_key_pressed
def Answer(self, event):
if event.key == pygame.K_a:
self.answer_key_pressed = True
self.Qclicking = False
self.Q_level_Choosed = False
self.ready_key_pressed = False
print("answer_key_pressed", self.answer_key_pressed)
return self.answer_key_pressed
def Check_keydwon_events(self, event):
if event.key == pygame.K_ESCAPE:
sys.exit()
elif event.key == pygame.K_q:
self.Qclicking = True
print("Qclicking", self.Qclicking)
def Check_events(self):
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
elif event.type == pygame.KEYDOWN:
self.Check_keydwon_events(event)
if self.Qclicking:
self.Q_level_Choosed = self.Q_level_choosing(event)
if self.Q_level_Choosed:
self.ready_key_pressed = self.Ready(event)
if self.ready_key_pressed:
self.QTimer()
self.answer_key_pressed = self.Answer(event)
def Run_game(self):
while True:
self.Check_events()
self.Update_Window()
def Update_Window(self):
pygame.display.flip()
self.clock.tick(60)
if __name__ == "__main__":
Test = Test()
Test.Run_game()