Search code examples
pythonpython-2.7pygameclockpygame-clock

How to make a digital clock within a status bar in pygame (without tkinter)?


Currently I am doing an assignment for school to create a game in Pygame. I am stuck on the process of creating a clock which determines the; days, hour, and minute.

So far I have created some code but my Pygame crashes when ever I run it. I know this is probably a bit nooby but I would really appreciate some help.

This is my code:

import sys, pygame, random, time
pygame.init()

size = width, height = 1280, 720
screen = pygame.display.set_mode(size)

done = False

Black=0,0,0
White=255,255,255

Time = 0
Minute = 0
Hour = 0
Day = 0

#Fonts
Font = pygame.font.SysFont("Trebuchet MS", 25)

#Day
DayFont = Font.render("Day:"+str(Day),1, Black)
DayFontR=DayFont.get_rect()
DayFontR.center=(985,20)
#Hour
HourFont = Font.render("Hour:"+str(Hour),1, Black)
HourFontR=HourFont.get_rect()
HourFontR.center=(1085,20)
#Minute
MinuteFont = Font.render("Minute:"+str(Minute),1, Black)
MinuteFontR=MinuteFont.get_rect()
MinuteFontR.center=(1200,20)

Clock = pygame.time.Clock()

while not done:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            done = True

    screen.fill(White)

    #Timer
    while Time==0:
        time.sleep(1)
        Minute=Minute+1
        screen.blit(MinuteFont, MinuteFontR)
        if Minute == 60:
            Hour=Hour+1        
            screen.blit(HourFont, HourFontR)
        if Hour==12:
            Hour=0
            Day=Day+1
            screen.blit(DayFont, DayFontR)

    pygame.display.flip()

    Clock.tick(60)

pygame.quit()

Solution

  • Your problem is:

    while Time==0: # <--- here
        time.sleep(1)
        # ...    
    

    You initialize Time with 0 but you never change it's value. That causes an endless loop.