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
按下键后,我应该怎样做我的脚本,清除屏幕上的所有内容?我已经设法改变了背景颜色,但现在我想要清除文本和矩形。
对于如何编写脚本的任何评论都表示赞赏。
答案 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