首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何去除游戏表面?

如何去除游戏表面?
EN

Stack Overflow用户
提问于 2010-02-06 23:46:53
回答 1查看 11.6K关注 0票数 3

在下面的代码中,在任何给定的时间点,屏幕上都不只是一个循环。我想要修复它,使它看起来只有一个圆圈,而不是留下一个污迹,无论鼠标光标曾经在哪里。

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

发布于 2010-02-06 23:57:32

你需要明确地删除圆圈,然后再把它擦掉。根据场景的复杂程度,您可能需要尝试不同的方法。一般情况下,我所做的是有一个“背景”表面,一个blit在屏幕上每帧,然后blit的精灵/其他表面在他们的新位置(blits在游戏非常快,所以即使在相当大的屏幕,我没有速度问题这样做)。对于上面的代码,只使用surface.fill(COLOR)就足够简单了,其中COLOR是您的背景色;例如,(255,255)表示白色:

代码语言:javascript
复制
# ...
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.imageself.rect属性(图像是您的图面,rect是带有位置的Pygame.rect )。将所有的精灵添加到pygame.group对象中。现在,每个帧都调用组上的draw方法,在更新显示(即使用pygame.display.update())之后,调用组上的clear方法。此方法要求您同时提供目标面(即上面的screen )和背景图像。

例如,主循环看起来可能更像这样:

代码语言:javascript
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2215227

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档