Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
284 views
in Technique[技术] by (71.8m points)

python - Is there a way to place number on the center of the screen in pygame?

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?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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)

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

1.4m articles

1.4m replys

5 comments

57.0k users

...