How to get rid of the surfaces of the pygamum?

In the following code, not only one circle is displayed on the screen at any given time . I want to fix this so that it looks like there is only one circle, instead of leaving smudge marks where the mouse cursor has ever been.

import pygame,sys
from pygame.locals import *
pygame.init()

screen = pygame.display.set_mode((640,400),0,32)

radius = 25
circle = pygame.Surface([radius*2]*2,SRCALPHA,32)
circle = circle.convert_alpha()
pygame.draw.circle(circle,(25,46,100),[radius]*2,radius)

while True:
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()

    screen.blit(circle,(pygame.mouse.get_pos()[0],100))

    pygame.display.update()
    pygame.time.delay(10)
+3
source share
1 answer

, . , , , , . , , "" , , / ( Pygame , ). surface.fill(COLOR), COLOR - ; , (255,255,255) :

# ...
screen = pygame.display.set_mode((640,400),0,32)
backgroundColor = (255,255,255)
# ...
while True:
    # ...
    screen.fill(backgroundColor)
    screen.blit(circle,(pygame.mouse.get_pos()[0],100))
    pygame.display.update()
    pygame.time.delay(10)

: - .

, ( ( ), ). pygame.sprite. , self.image self.rect ( - , rect - Pygame.rect ). pygame.group. , , draw , (.. pygame.display.update()) clear . , (.. screen ), .

, :

while True:
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()

    circle.rect.center = (pygame.mouse.get_pos()[0],100)
    circleGroup.draw(screen)

    pygame.display.update()
    circleGroup.clear(screen, backgroundSurface)
    pygame.time.delay(10)

. Sprite Group.

+6
source

Source: https://habr.com/ru/post/1731723/


All Articles