如何清除pygame中的屏幕?

时间:2014-01-21 12:14:45

标签: python pygame

我的朋友和我正在PyGame中制作一个问答游戏,并且想知道当用户按下按钮时,他可以转到下一个问题(不留下前面的文字)。

2 个答案:

答案 0 :(得分:4)

首先,我建议你去PyGame文档并阅读一些关于PyGame的内容。 (Link

然而,为了节省您的时间,您需要做的是在屏幕上绘制新的形状/文字集之前,您必须使用函数screen.fill(#Your chosen colour)。这是PyGame中的功能,可以摆脱旧屏幕,并允许您将新项目绘制到清晰的屏幕上,而不会留下可透过的图纸。

示例:

import pygame
import sys
from pygame.locals import *

white = (255,255,255)
black = (0,0,0)
red = (255, 0, 0)

class Pane(object):
    def __init__(self):
        pygame.init()
        self.font = pygame.font.SysFont('Arial', 25)
        pygame.display.set_caption('Box Test')
        self.screen = pygame.display.set_mode((600,400), 0, 32)
        self.screen.fill((white))
        pygame.display.update()


    def addRect(self):
        self.rect = pygame.draw.rect(self.screen, (black), (175, 75, 200, 100), 2)
        pygame.display.update()

    def addText(self):
        self.screen.blit(self.font.render('Hello!', True, black), (200, 100))
        pygame.display.update()

    def addText2(self):
        self.screen.blit(self.font.render('Hello!', True, red), (200, 100))
        pygame.display.update()


    def functionApp(self):
        if __name__ == '__main__':
            self.addRect()
            self.addText()
            while True:
                for event in pygame.event.get():
                    if event.type == pygame.QUIT:
                        pygame.quit(); sys.exit();

                    if event.type == pygame.KEYDOWN:
                        if event.key == pygame.K_ESCAPE:
                            self.screen.fill(white)
                            self.addRect()
                            self.addText2() #i made it so it only changes colour once.



display = Pane()
display.functionApp()

答案 1 :(得分:2)

在游戏循环中,在绘制新框架之前,请使用背景颜色填充框架。

示例:

ball = pygame.Rect(0,0,10,10)
while True:
    mainSurface.fill((0,0,0))
    pygame.draw.circle(display,(255,255,255),ball.center,5)
    ball.move_ip(1,1)
    pygame.display.update()

关键点是mainSurface.fill,它将清除前一帧。