2016-06-26 12 views
0

Derzeit mache ich einen Auftrag für die Schule, um ein Spiel in Pygame zu erstellen. Ich stehe auf dem Prozess der Schaffung einer Uhr, die die bestimmt; Tage, Stunde und Minute.Wie erstellt man eine digitale Uhr in einer Statusleiste in Pygame (ohne Tkinter)?

Bis jetzt habe ich etwas Code erstellt, aber mein Pygame stürzt ab, wenn ich es jemals ausgeführt habe. Ich weiß, das ist wahrscheinlich ein bisschen nooby, aber ich würde wirklich etwas Hilfe schätzen.

Dies ist mein 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() 
+0

Welche Linie verursacht den Absturz? Was ist die Ausnahme? –

+0

Es heißt nicht Entschuldigung. Wenn ich im Idle Run drücke, startet das Programm normal, dann reagiert es nicht mehr und stürzt ab. Der Bildschirm bleibt normalerweise schwarz, zeigt aber manchmal die richtige Farbe Weiß an. Ich hoffe, das hilft:/@Ni. – Joshua

Antwort

0

Ihr Problem ist:

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

Sie initialisieren Time mit 0 aber man kann nie Wert es ändern. Das verursacht eine endlose Schleife.

+0

Vielen Dank. Ich schaffte es, den Absturz zu stoppen, indem ich das 'while' in ein 'if' Statement änderte und die Schleife nur noch passieren konnte: wenn Time <60. Ich habe es auch so gemacht, wenn die Minute == 60, Minute = 0. Jetzt brauche ich nur das Display, um den Code anzuzeigen. Nächster Teil in diesem Geheimnis wirklich haha – Joshua