Не очищаются следы старых спрайтов, хотя все методы на очищение присутствуют PyGame

Делаю шашки на pygame. При движении шашек обновляется массив с полем и рисуются новые шашки, но старые по какой то причине никуда не пропадают, хотя все screen.fill присутствуют. Что делать?

import pygame
from sprites import Checker

WIDTH = 800
HEIGHT = 600
FPS = 60
WHITE = (227, 230, 255)
BACKCOLOR = (18,32,32)
BLACK = (74, 84, 98)
SELECT = (89, 193,53)
cellSize = 68.75
cellsRect = []
# Инициализация
pygame.init()
pygame.mixer.init()
screen = pygame.display.set_mode((WIDTH, HEIGHT))
screen.fill(BACKCOLOR)
pygame.display.set_caption("vladOS Checkers.")
pygame.display.set_icon(pygame.image.load("sprites/icon.png"))
clock = pygame.time.Clock()
gameField = pygame.Surface((549, 549))
gameField.fill((255, 255, 255))
# Управление правилами (туфтология ахах)
field = [[0,3,0,3,0,3,0,3],
         [3,0,3,0,3,0,3,0],
         [0,3,0,3,0,3,0,3],
         [0,0,0,0,0,0,0,0],
         [0,0,0,0,0,0,0,0],
         [1,0,1,0,1,0,1,0],
         [0,1,0,1,0,1,0,1],
         [1,0,1,0,1,0,1,0]]
checkerList = []
checkers = pygame.sprite.Group()
# Рисование поля
def fieldDraw():
    gameField.fill(WHITE)
    cellsRect.clear()
    blackOrWhite = True
    for x in range(8):
        colorStart = WHITE
        if blackOrWhite:
            colorStart = BLACK
        else:
            colorStart = WHITE
        blackOrWhite = not blackOrWhite
        for y in range(8):
            color = WHITE
            if blackOrWhite:
                color = BLACK
            else:
                color = WHITE

            blackOrWhite = not blackOrWhite
            pygame.draw.rect(gameField, color, (x * cellSize, y * cellSize, cellSize, cellSize))
            rect = pygame.Rect((gameField.get_rect(topleft = (cellSize * 2,cellSize * 2)).x + x * cellSize  -5,
                                gameField.get_rect(topleft = (0,0)).x + y * cellSize + 27,
                                cellSize, cellSize))
            cellsRect.append((rect, (y,x)))
    pygame.draw.rect(gameField,(0,0,0,0), (0,0,549,549), 5)
    pygame.display.update()
def checkersRender():
    checkerList.clear()
    checkers.clear(gameField, screen)

    for x in range(8):
        for y in range(8):
            coordWithSpacing = (y * cellSize + 2, x * cellSize + 2)
            whiteChecker = Checker(coordWithSpacing[0], coordWithSpacing[1], "sprites/white_checker.png")
            blackChecker = Checker(coordWithSpacing[0], coordWithSpacing[1], "sprites/black_checker.png")

            if field[x][y] == 1:
                whiteChecker.update(coordWithSpacing[0], coordWithSpacing[1])
                checkers.add(whiteChecker)
                checkerList.append((whiteChecker, x,y))
            elif field[x][y] == 3:
                blackChecker.update(coordWithSpacing[0], coordWithSpacing[1])
                checkers.add(blackChecker)
                checkerList.append((blackChecker, x,y))

    checkers.draw(gameField)
    checkers.update(gameField)
def makeATurn(fig, cell):
    try:
        field[fig[1]][fig[2]] = 0
        field[cell[1][0]][cell[1][1]] = 1
        gameField.fill(WHITE)
        fieldDraw()
        checkersRender()
    except TypeError:
        return

def turnIsPossible(x,y):
    return false
def findFigure(x,y):
    for i in range(len(checkerList)):
        if checkerList[i][1] == x and checkerList[i][2] == y:
            return checkerList[i][0]
    return None

# Игровой цикл
fieldDraw()
checkersRender()
screen.blit(gameField, (130, 25))
running = True
global selectedFigure
global selectedCell
figureHas = False

while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            exit()
            running = False
        if event.type == pygame.MOUSEBUTTONDOWN and event.button == 1:
            #screen.fill(BACKCOLOR)
            pos = pygame.mouse.get_pos()
            for cellRect in cellsRect:
                if cellRect[0].collidepoint(pos):
                    figure = findFigure(cellRect[1][0], cellRect[1][1])
                    if figure is not None:
                        selectedFigure = (figure,cellRect[1][0], cellRect[1][1])
                        figureHas = True
                        print("Выбрана фигура", figure)
                    elif figureHas:
                        selectedCell = cellRect
                        makeATurn(selectedFigure, cellRect)
                        figureHas = False
                        print("Выбрана клетка поля", cellRect[1][0], cellRect[1][1])
            screen.blit(gameField, (130, 25))
        #if event.type == pygame.MOUSEBUTTONUP and event.button == 1:
            # if paraHas:

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

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

Автор решения: web developer

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

import pygame as pg
win = pg.display.set_mode((width, height)) # the set up of the window
all_sprites = pg.sprite.Group() # this is the group where the sprites live 

all_sprites.draw(win) # this draws the whole window
→ Ссылка