Как мне заставить «score» отображаться в окне игры?

#python #pygame

#python #pygame

Вопрос:

До сих пор в моей игре snake оценка печатается в оболочке python. Как я могу вместо этого напечатать его в окне игр? Чтобы игра и счет были в одном окне? Спасибо, Эрик

 while running:


    screen.fill((0, 0, 0))
    worm.move()
    worm.draw()
    food.draw()

    if worm.crashed:
        exit();
    elif worm.x <= 0 or worm.x >= w -1:
        running = False
    elif worm.y <= 0 or worm.y >= h-1:
        running = False
    elif worm.position() == food.position():
        score  = 1
        worm.eat()
        print " score: %d" % score
        food = Food(screen)
    elif food.check(worm.x, worm.y):
        score  = 1
        worm.eat()
        print "score: %d" % score
        food = Food(screen)
    elif running == False:
        exit();

    for event in pygame.event.get():
        if event.type == pygame.quit:
            running = False
        elif event.type == pygame.KEYDOWN:
            worm.event(event)

    pygame.display.flip()
    clock.tick(100)
  

Редактировать-

 while running:


screen.fill((0, 0, 0))
worm.move()
worm.draw()
food.draw()
pygame.font.init()
pygame.font.get_fonts() 

if worm.crashed:
    exit();
elif worm.x <= 0 or worm.x >= w -1:
    running = False
elif worm.y <= 0 or worm.y >= h-1:
    running = False

elif food.check(worm.x, worm.y):
    score  = 1
    worm.eat()
    food = Food(screen)
    message = 'score: %d' % score
    font = pygame.font.Font(None, 40)
    text = font.render(message, 1, white)
    screen.blit(text, (50, 50))

elif running == False:
    exit();

for event in pygame.event.get():
    if event.type == pygame.quit:
        running = False
    elif event.type == pygame.KEYDOWN:
        worm.event(event)
  

Почему счет не отображается, я не получаю никаких ошибок?

Ответ №1:

Используйте модуль шрифтов для отображения шрифтов на экране.

Из пользовательского руководства:

 white = (255, 255, 255)

message = 'your message'
font = pygame.font.Font(None, 40)
text = font.render(message, 1, white)
screen.blit(text, (x_position,y_position))
  

Комментарии:

1. Спасибо, остальное я понял сам

Ответ №2:

В ответ на вашу правку: вы выводите текст на экран только тогда, когда берете эту конкретную ветку elif (т.Е. Только тогда, когда червь получает пищу). В следующем кадре вы очищаете экран, но еды там нет, поэтому счет не отображается. Вместо этого вы должны выводить счет на экран в каждом кадре.