#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 (т.Е. Только тогда, когда червь получает пищу). В следующем кадре вы очищаете экран, но еды там нет, поэтому счет не отображается. Вместо этого вы должны выводить счет на экран в каждом кадре.