gpt4 book ai didi

python - 如何在 Pygame 中制作弹出式径向菜单?

转载 作者:太空宇宙 更新时间:2023-11-04 01:22:30 25 4
gpt4 key购买 nike

我想知道是否有人可以给我任何关于如何创建带有选项的径向菜单的建议,例如当您点击游戏中的某个对象时,“攻击”、“对话”会自动弹出……有点像许多策略/RPG 游戏等中使用的径向菜单。

我对 Python/Pygame 很陌生,所以请尽可能完整地解释。

提前致谢,伊尔米奥特

最佳答案

我实际上最近在我正在编写的一款游戏中使用了它。因此,您通常需要做的是检查 Sprite /对象的点击情况。

#example
def make_popup(self):
popupSurf = pygame.Surface(width, height)
options = ['Attack',
'Talk']
for i in range(len(options)):
textSurf = BASICFONT.render(options[i], 1, BLUE)
textRect = textSurf.get_rect()
textRect.top = self.top
textRect.left = self.left
self.top += pygame.font.Font.get_linesize(BASICFONT)
popupSurf.blit(textSurf, textRect)
popupRect = popupSurf.get_rect()
popupRect.centerx = SCREENWIDTH/2
popupRect.centery = SCREENHEIGHT/2
DISPLAYSURFACE.blit(popupSurf, popupRect)
pygame.display.update()

好的,现在来解释这个以及它是如何工作的。

带有 popupSurf = pygame.Surface 的行创建了 popupSurf 作为一个表面来绘制东西。

选项是非常 self 解释的。然后我们有一个 for 循环,它将获取所有选项并单独显示每个选项。所以接下来是 textSurf = BASICFONT ... BASICFONT 是您在开始时创建的字体,我个人最喜欢使用 SysFont,因为它很容易与 py2exe 一起使用。

然后是 textRect,它创建了一个矩形,用于在将文本 block 传送到屏幕时使用。然后将顶部坐标更改为当前顶部坐标。然后你对左边做同样的事情。然而,下一行“self.top += ...”是针对之前 blit 到屏幕的文本进行调整,这样您就不会以文本重叠文本结束。然后你只需将它 blit 到 popupSurf。

在每个选项被 blit 传送到 popupSurf 之后,您需要将 popupSurf blit 传送到您的主表面,该表面是在程序开始时使用“pygame.display.set_mode”创建的。根据您提供的所有信息,假设您希望弹出窗口出现在屏幕中央,所以我采用了 centerx 和 centery 并将它们置于屏幕中央。然后剩下要做的就是将其 blit 到屏幕并更新显示。如果您不完全理解,请发表评论。

关于python - 如何在 Pygame 中制作弹出式径向菜单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20264403/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com