Как я могу получить "счет", чтобы показать в окне игры? - PullRequest
2 голосов
/ 24 октября 2011

До сих пор в моей игре со змеями счет печатался в оболочке 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)

Edit-

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)

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

Ответы [ 2 ]

1 голос
/ 24 октября 2011

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

1 голос
/ 24 октября 2011

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

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

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))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...