我正在重新创建Pong,并且我正在尝试添加显示分数的文本。
我已经尝试了很多方法来添加文本,但他们从来没有工作。我只是需要有人来帮助我,教我可能做错了什么。
这是我的代码:
# Set up the display surface
DISPLAYSURF = pygame.display.set_mode((500, 400))
# Set up the clock
fpsClock = pygame.time.Clock()
# Set up the colors
BLACK = pygame.Color(0, 0, 0)
WHITE = pygame.Color(255, 255, 255)
BLU = pygame.Color(0,0,255)
RED = pygame.Color(255,0,0)
#!!!ADD TEXT SCORE HERE!!!
while True:
# Handle events
for event in pygame.event.get():
if event.type == pygame.locals.QUIT:
pygame.quit()
sys.exit()
# Check for ball scoring
if ball_x - ball_radius < 0:
paddle2_score += 1
ball_x = 250
ball_y = 200
ball_dx = 3
print("Red: ",paddle2_score)
elif ball_x + ball_radius > 500:
paddle1_score += 1
ball_x = 250
ball_y = 200
ball_dx = -3
print("Blu: ",paddle1_score)
#!!!UPDATE TEXT SCORE HERE!!!
# Keep the paddles on the screen
if paddle1_y < 0:
paddle1_y = 0
elif paddle1_y + paddle1_h > 400:
paddle1_y = 400 - paddle1_h
if paddle2_y < 0:
paddle2_y = 0
elif paddle2_y + paddle2_h > 400:
paddle2_y = 400 - paddle2_h
# Update the display
pygame.display.flip()
# Control the frame rate
fpsClock.tick(30)
这只是部分代码。
试试把这个函数放在while循环之前。
font = pygame.font.Font("freesansbold.ttf", size)
def text(x, y, txt, size, txtcolor):
display_text = font.render(txt, True, txtcolor)
display.blit(display_text, (x, y))
从那里,您将能够在while循环的任何地方调用该函数,它将显示您想要的任何文本。确保你给它正确的参数- x =文本的x坐标
- y =文本的y坐标。
- txt =要显示的文本(在本例中为分数)。
- size =文本的大小
- txtcolor =文本的颜色(使用您的颜色变量)。
PS:你可以尝试改变字体为其他东西,如果你想,但我以前试过,它没有工作。所以你必须自己做实验(对不起)。
edit:将字体移出函数以获得更好的性能。