清洁整个屏幕

时间:2014-09-19 18:45:20

标签: python pygame screen

import pygame
from pygame.constants import *

pygame.init()                                       # inicializa el display

ventana = pygame.display.set_mode((640, 480))       # variable de la superficie de la ventana
pygame.display.set_caption("prueba")                # titulo de ventana

funcionando = True                                  # variable del booleano del mainloop

unRect = (50, 50, 100, 100)                         # variable de posicion de rectangulo
colorRect = (0, 255, 0)                             # variable de color de retangulo
colorTitulo = (0, 0, 0)
color2= (30,120,180)
aA = True
colorFTitulo = (30, 30, 180)
textoTitulo = "BIENVENIDO A BATTLESHIPS"
texto1 = "Pulse cualquier tecla para jugar"

my_font = pygame.font.SysFont("Courier", 16)        # Instantiate 16 point Courier font to draw text.

ventana.fill(colorTitulo)



while funcionando:                                  # mainloop del juego

    for event in pygame.event.get():                # checkea todos los eventos en cola

        if event.type == pygame.QUIT:               # checkea si hay un .QUIT entre los eventos
            funcionando = False                     # si lo hay funcionando cambia a False, el juego se cierra

        if event.type == pygame.MOUSEBUTTONDOWN:    # checkea si hay un evento de tipo click en cola
            posClick = event.dict["pos"]            # recoge las coordenadas en una variable
            print(posClick)                         # imprime la posicion en la variable

        if event.type == KEYDOWN:
            ventana.fill(color2)

    titulo = my_font.render(textoTitulo, aA, colorFTitulo)
    txt1 = my_font.render(texto1, aA, colorFTitulo)
    ventana.blit(titulo, (180, 50))
    ventana.blit(txt1, (180, 370))

    ventana.fill(colorRect, unRect)                 # cada vez que se actualiza la ventana, pinta un rectangulo

    pygame.display.flip()                           # actualiza toda la ventana

按下键后,我应该怎样做我的脚本,清除屏幕上的所有内容?我已经设法改变了背景颜色,但现在我想要清除文本和矩形。

对于如何编写脚本的任何评论都表示赞赏。

2 个答案:

答案 0 :(得分:2)

在我看来,你的问题是你正在清理屏幕(重新填充背景),但是在绘制矩形之前你正在这样做。

因此,每当你点击一个键时,它只会被color2清除,就像你说的那样。

我不确定你想要你的游戏做什么或者你希望你的代码如何构建,所以我不建议将条件移到你绘制矩形的语句之后,这将起作用并且将是简单的解决方案。

你可以做的只是在敲击一个键时设置一个标志,并在绘制矩形/文本的部分之后检查标志。

这样:

...
...

if event.type == KEYDOWN:
        ventana.fill(color2)
        clearScreen=True   #<- set your flag

titulo = my_font.render(textoTitulo, aA, colorFTitulo)
txt1 = my_font.render(texto1, aA, colorFTitulo)
ventana.blit(titulo, (180, 50))
ventana.blit(txt1, (180, 370))

ventana.fill(colorRect, unRect)                 # cada vez que se actualiza la ventana, pinta un rectangulo

if clearScreen:
     ventana.fill(color2)

另外,或者,您可以将条件(或所有条件)移动到绘制其他元素的部分之后。

取决于您计划使用代码的计划。

P.S。 os.system(&#39; clear&#39;)清除TERMINAL屏幕上的文本,而不是你用pygame制作的屏幕。

答案 1 :(得分:0)

您可以使用清洁屏幕 进口口 os.system('cls')#on windows

和 os.system('clear')#on linux和mac