Вопрос:

Как не позволить тексту перекрывать друг друга в пигме?

python text pygame

301 просмотра

2 ответа

6 Репутация автора

У меня есть два текстовых примера, но они просто появляются друг над другом. как сделать так, чтобы второй заменял первый?

if player_x_coor <= -2750:
        text = font.render("text 1", True, WHITE)
        screen.blit(text, [100, 150])

if player_x_coor <= -6310:
        text = font.render("text 2", True, WHITE)
        screen.blit(text, [100, 150])

как вы можете видеть, я попытался заменить первый текст вторым текстом, назначив text = font.render("text 2", ...)

но первый тест все еще показывает, что второй перекрывается с ним.

Автор: glad0s Источник Размещён: 22.08.2016 09:42

Ответы (2)


-1 плюса

13491 Репутация автора

Вы должны стереть первый текст, прежде чем писать другой.

Смотрите подобные вопросы здесь и здесь .

Я думаю, что есть много способов сделать то, что вы хотите. Лучший способ может быть:

  • скопировать текущую поверхность (без текста) в кеш
  • визуализировать текст
  • стереть текст в вашей кэшированной поверхности
Автор: Laurent LAPORTE Размещён: 22.08.2016 09:59

2 плюса

1197 Репутация автора

Когда вы рисуете на экране, все, что там уже есть, не очищается само по себе. Вы должны очистить экран, используя какой-то цвет, скажем, черный. Как только экран очистится от предыдущего кадра, вы можете перерисовать каждый объект снизу вверх.

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

В общем, игровой цикл используется для перерисовки кадров xраз в секунду. Шаблон выглядит следующим образом:

def game_loop():
    BLACK = (0, 0, 0)

    while True:
        # Do this loop, at maximum, 50 times a second
        clock.tick(50)

        # Clear screen
        screen.fill(BLACK)
        # Draw background
        #      characters
        #      user interface

        # Get user input
Автор: francium Размещён: 23.08.2016 06:16
Вопросы из категории :
32x32