Постоянно изменяется текст в pygame

У меня возникла проблема с постоянным обновлением текста в pygame. Проблема в том, что когда красный круг, приближается к черному, то появляется текст не один раз, а постоянно обновляется. Суть в том, что когда красный круг приближается к черному, выводить одно значение за раз, каждый раз когда красный круг подходит к черному.Я уже пробовал создавать переменную и присваивать ей значение True, потом ставить условие для проверки равняется ли переменная True, если да, то изменить ее на False, вывести на экран, и опять поставить значение True, но ничего не меняется.

Чтобы было понятней, вот код. Буду очень благодарен!

Код:

import pygame
import random

pygame.init()

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

WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
RED = (255, 0, 0)
LIGHTGREEN = (10, 170, 70)

x_game = 750
y_game = 750

x_main_cahracter = x_game // 2
y_main_cahracter = y_game // 2

An_pos_x = 100
An_pos_y = 500

TOP = "to the top"
LEFT = "to the left"
RIGHT = "to the right"
DOWN = "to the down"
STOP = "stop"

motion = STOP

game = pygame.display.set_mode((x_game, y_game))
text_frame = pygame.image.load("TextFrame.png")

main_personage = pygame.image.load("Personage.png")
woman1 = pygame.image.load("Woman1.png")

A_list = [("1"), ("2"), ("3"), ("4")]

while True:
    game.fill(LIGHTGREEN)

    Man1 = pygame.draw.circle(game, RED, [x_main_cahracter, y_main_cahracter], 25)
    Man2 = pygame.draw.circle(game, BLACK, [An_pos_x, An_pos_y], 20)

    def foht_text_frame(a):
        font_text = pygame.font.Font(None, 23)
        text_font = font_text.render(random.choice(a), 1, WHITE)
        true_or_false = True
        if true_or_false == True:
            true_or_false = False
            game.blit(text_font, [x_game - 580, 60])
            true_or_false = True

    for i in pygame.event.get():
        if i.type == pygame.QUIT:
            exit()

        elif i.type == pygame.KEYDOWN:
            if i.key == pygame.K_w:
                motion = TOP

            elif i.key == pygame.K_a:
                motion = LEFT

            elif i.key == pygame.K_d:
                motion = RIGHT
            elif i.key == pygame.K_s:
                motion = DOWN

        elif i.type == pygame.KEYUP:
            if i.key in [pygame.K_w, pygame.K_a, pygame.K_d, pygame.K_s]:
                motion = STOP

    def stoping(x1, x2, y1, y2):
        if (x1 < x2 + 42) and (x1 > x2 - 42) and (y1 < y2 + 30) and (y1 > y2 - 30):
            return 1
        else:
            return 0

    if stoping(x_main_cahracter, An_pos_x, y_main_cahracter, An_pos_y):
        foht_text_frame(A_list)

    if motion == TOP:
        y_main_cahracter -= 1
        if y_main_cahracter == 0:
            y_main_cahracter += 1

    elif motion == LEFT:
        x_main_cahracter -= 1
        if x_main_cahracter == 23:
            x_main_cahracter += 1

    elif motion == RIGHT:
        x_main_cahracter += 1
        if x_main_cahracter == 735:
            x_main_cahracter -= 1

    elif motion == DOWN:
        y_main_cahracter += 1
        if y_main_cahracter == 688:
            y_main_cahracter -= 1

    pygame.display.update()

clock.tick(FPS)

Ответы (1 шт):

Автор решения: RemDemon

Вынеси переменную или функцию из цикла

→ Ссылка