-1

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()

0 Answers0