这是我的代码:
import pygame
import time
pygame.init()
display_width = 800
display_height = 600
window = pygame.display.set_mode((display_width,display_height))
pygame.display.set_caption('Draw')
clock = pygame.time.Clock()
p1Img = pygame.image.load('player.png')
p2Img = pygame.image.load('player2.png')
bullet = pygame.image.load('bullet.png')
id = 1
white = (255,255,255)
black = (0,0,0)
def player(x,y):
window.blit(p1Img,(p1x,p1y))
def player2(x,y):
window.blit(p2Img,(p2x,p2y))
def text_objects(text,font):
textSurface = font.render(text, True, black)
return textSurface, textSurface.get_rect()
def messageDisplay(text):
largeText = pygame.font.Font('freesansbold.ttf',115)
TextSurf, TextRect = text_objects(text,largeText)
TextRect.center = (display_width/2, display_height/2)
window.blit(TextSurf,TextRect)
pygame.display.update()
def countDown(drawTime):
while drawTime <= 5:
time.sleep(1)
pygame.display.update()
messageDisplay(str(drawTime))
drawTime += 1
else:
pygame.display.update()
messageDisplay('Draw')
p1x = -5
p1y = 500
b1x = 56
b1y = 510
p2x = 740
p2y = 500
b2x = 740
b2y = 500
while(id != 0):
for event in pygame.event.get():
if event.type == pygame.QUIT:
id = 0
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_q:
window.blit(bullet,(b1x, b1y))
pygame.display.update()
if event.type == pygame.KEYUP:
if event.key == pygame.K_q:
window.blit(bullet,(b1x, b1y))
window.fill(white)
player(p1x,p1y)
player2(p2x,p2y)
pygame.display.update()
countDown(1)
clock.tick(120)
pygame.quit()
问题在于文本是否超越了自身。我已经阅读了无数关于如何重绘表面的事情,但我不完全确定它们是什么意思?我做了window.fill(白色),但似乎并没有这样做。
答案 0 :(得分:0)
您在while
循环中绘制并且在绘制新文本之前不要清除此位置。在绘制新文本之前,您必须使用背景颜色或背景图像填充此位置。可能您可以使用fill(white, TextRect)
填充(清除)屏幕的一部分。
您在window.fill(white)
中使用while
但不在countDown
循环内部,因此在完成计数后会清除文本(以及所有屏幕)。
redraw
表示&#34;清除屏幕并再次绘制所有内容&#34;。要清除屏幕,请使用fill(white)
我不知道你要做什么 - 但是sleep
和while
(countDown
)可能不是一个好主意。