2016-11-15 5 views
0

Also ich versuche, einen Timer zu erstellen, in dem, wenn das Spiel läuft, eine Anzahl von Sekunden, in denen das Spiel ausgeführt worden wäre, in meinem Pygame-Fenster angezeigt würde. Aber aus irgendeinem Grund scheint es nicht zu funktionieren. Ich bin mir nicht ganz sicher, was genau das Problem ist.(Pygame) .blit wird nicht angezeigt Während Funktion

Linie 35-44 ist, wo der Timer-Funktion ist ... Zeile 71 ist, wo die Zeit ...


import pygame 

pygame.init() 
pygame.font.init() 

FPS = 60 
fpsClock = pygame.time.Clock() 

time = 10 

WHITE = (255,255,255) 

dimension = [936, 520] 

SCREEN = pygame.display.set_mode(dimension) 

font = pygame.font.Font("8-BIT WONDER.TTF",16) 

gameEnd= False 

#Images 
blacksmith = pygame.image.load("blacksmith.png") 
blacksmith = pygame.transform.scale(blacksmith,(144,144)) 

background = pygame.image.load("background_img.png") 

#Positions 
blacksmith_position = [400,275] 

anvil_position = [0,0] 

song = pygame.mixer.music.load("Pixelland.mp3") 
pygame.mixer.music.play(0, 0.0) 

#Time 
get_time = True 

#Clock 
while get_time == True: 
    time = pygame.time.get_ticks()/1000 
    pygame.time.delay(1000) 

display_time = font.render(time, True, WHITE) 

#Game Loop 

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



    #Player Controls 

    keys = pygame.key.get_pressed() 

    if keys[pygame.K_F11]: 
     pygame.display.toggle_fullscreen() 

    if keys[pygame.K_LEFT]: 
     blacksmith_position[0] = max(95, blacksmith_position[0] - 12) 

    if keys[pygame.K_RIGHT]: 
     blacksmith_position[0] = min(685, blacksmith_position[0] + 12) 



    SCREEN.blit(background, (0, 0)) 
    SCREEN.blit(blacksmith,(blacksmith_position)) 
    SCREEN.blit(display_time, (70,10)) 
    pygame.display.update() 
    fpsClock.tick(FPS) 

pygame.quit() 
quit() 
+1

Sie laufen 'während get_time == True:' denen stoppt alles. Sie können nur eine while-Schleife haben, die immer läuft (endlos) – furas

Antwort

1

Sie while get_time == True:, die alles hält laufen angezeigt werden soll. Es läuft die ganze Zeit.

Sie können nur eine while Schleife haben, die die ganze Zeit läuft (Endlosschleife) - mainloop.

Arbeitsbeispiel (ohne Bitmaps und Schriftarten-Dateien)

import pygame 

# --- constants --- 

FPS = 60 

WHITE = (255, 255, 255) 
BLACK = ( 0, 0, 0) 

DIMENSION = (936, 520) 

# --- classes --- 
# empty 

# --- functions --- 
# empty 

# --- main --- 

# - init -  

pygame.init() 
#pygame.font.init() # pygame.init() should run `pygame.font.init()` automatically 
screen = pygame.display.set_mode(DIMENSION) 

# - resources - 

font = pygame.font.Font(None, 16) 

# - mainloop - 

fps_clock = pygame.time.Clock() 
game_end = False 

while not game_end: 

    # - events - 

    for event in pygame.event.get(): 
     if event.type == pygame.QUIT: 
      game_end = True 
     elif event.type == pygame.KEYDOWN: 
      if event.key == pygame.K_F11 
       pygame.display.toggle_fullscreen() 

    #keys = pygame.key.get_pressed() 

    #if keys[pygame.K_F11]: 
    # pygame.display.toggle_fullscreen() 

    # - updates (without draws) - 

    # render current time 
    cur_time = pygame.time.get_ticks()/1000 
    display_time = font.render(str(cur_time), True, WHITE) 

    # - draws (without updates) - 

    screen.fill(BLACK) 
    screen.blit(display_time, (70,10)) 
    pygame.display.update() 

    # - FPS - 

    fps_clock.tick(FPS) 

# - end - 

pygame.quit() 
#quit() # doesn't need it 
Verwandte Themen