2014-01-21 2 views
2

Мои друзья и я делаем викторину в PyGame и хотели бы знать, как, когда пользователь нажимает кнопку, он может перейти к следующему вопросу (не оставляя прежнего текста позади).Как очистить экран в pygame?

ответ

1

В вашем игровом цикле, прежде чем рисовать новый кадр, заполните рамку цветом фона.

Пример:

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, который очистит предыдущий кадр.

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() 
Смежные вопросы