问题
I am working with pygame, to display the score I have images from 0 to 9 and need to place them centralized, but i can't just put it in the middle because the size of the score can change, the only solution I found until now is to hardcode it for scores up to 9, then up to 99 etc like in the code below
if len(str(self.value)) == 1:
win.blit(self.imgs[self.value],
((x - self.imgs[self.value].get_width(), y)))
elif len(str(self.value)) == 2:
win.blit(self.imgs[int(str(self.value)[0])],
(x - self.imgs[int(str(self.value)[0])].get_width(), y))
win.blit(self.imgs[int(str(self.value)[1])],
(x, y))
Is there a generic way to do display n numbers centralized looping for all the numbers of the score?
回答1:
Get a pygame.Rect object with the size of the image (pygame.Surface) by get_rect(). Set the center of the rectangle by an keyword attribute (center = (x, y)
) and use the rectangle to blit the image:
centered_rect = self.imgs[self.value].get_rect(center = (x, y))
win.blit(self.imgs[self.value], centered_rect)
来源:https://stackoverflow.com/questions/62728473/is-there-a-way-to-place-number-on-the-center-of-the-screen-in-pygame