更新pygame中的数字

2024-06-16 10:59:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个相当简单的问题。 我想每秒更新一次值,我的代码就是这样做的。更新后的数字确实显示在表面后面,尽管顺序应该是正确的

我怎样才能使它显示在顶部

(我画了一个圆圈,看看如果我不做屏幕填充,它是在圆圈的后面还是前面。填充)

此外,如果这些数字不能相互叠加,我将不胜感激,但一旦另一个问题得到解决,我可以自己解决

代码:

import pygame
from pygame.locals import *

pygame.init()
display_width = 1600
display_height = 800

color = 23,52,85
color2 = 43,200,8

screen = pygame.display.set_mode((display_width,display_height))

wood = 0

myFont = pygame.font.SysFont('Arial', 25)
someEvent = pygame.key.get_pressed()

MOVEEVENT = pygame.USEREVENT+1
t = 1000
pygame.time.set_timer(MOVEEVENT,t)

def increaseWood():
  global wood
  wood+=3
  print("The wood was increased")
  return wood

def drawEverySecond():
  text = "Wood: " + str(increaseWood())
  label = myFont.render(text,1,color2)
  screen.blit(label, (1000,300))
  print('Current Wood:', wood)

while True:
  pygame.display.update()
  screen.fill(color)
  pygame.draw.circle(screen, (220,40,100),(1000,300), 20,4 )
  #drawEverySecond()

  for event in pygame.event.get():
      #print(event)
      if event.type == pygame.QUIT:
          pygame.display.quit()
          quit()
      if event.type == MOUSEBUTTONDOWN:
          print("Mouse was pressed!")
      if event.type == MOVEEVENT:
        drawEverySecond()

Tags: 代码importeventiftypedisplay数字width
1条回答
网友
1楼 · 发布于 2024-06-16 10:59:14

必须增加该数字,并每秒渲染一次label曲面(每次发生MOVEEVENT):

label = label = myFont.render("Wood: 0", 1, color2) 
def drawEverySecond():
    global label
    text = "Wood: " + str(increaseWood())
    label = myFont.render(text,1,color2)  
    print('Current Wood:', wood)

但您必须在任何帧中绘制label曲面:

while True:
    pygame.display.update()
    screen.fill(color)
    pygame.draw.circle(screen, (220,40,100),(1000,300), 20,4 )
    screen.blit(label, (1000,300))

    # [...]

相关问题 更多 >