【发布时间】:2018-03-28 21:38:37
【问题描述】:
所以我在 Pygame 中制作了一个 rpg 项目,我需要一个包含文本的按钮类。到目前为止,这是我的代码。我试图在网上和这个网站上使用一些代码示例,但我无法让它们以我想要的方式工作。 ;-;
我想要的是一个可以绘制到包含文本的 GameWindow 的按钮。稍后我会弄清楚事件处理。
如果有人能给我解释一下使用文本的按钮类如何在 pygame 中工作,并以我可以在我的按钮类中实现的方式进行解释,我将不胜感激。以前,我尝试通过将宽度和高度除以 2 并将彩色矩形与文本相邻放置以尝试标记矩形,以便我可以将它们用作按钮,从而将文本简单地放置在屏幕的中心。但是我意识到这不是一个实用的解决方案,因为我在整个游戏过程中需要很多按钮,而且这种方法占据了我屏幕的大部分。 我不明白如何使用类将消息粘贴到矩形上。下面的 Button 类是我尝试将文本放在矩形顶部的地方,但我发现这很难。 理想情况下,我的目标是能够调用我可以用作按钮的按钮类的实例。
顺便说一句,在这里询问是最后的手段。我花了将近三个小时试图弄清楚这一点,长时间盯着屏幕对我不利。
import pygame, random, sys, math, time
from pygame.locals import *
pygame.init()
FPS = 30
fpsClock = pygame.time.Clock()
GameWindow = pygame.display.set_mode((650,520))
#Variables
Blue = (0,0,255)
Green = (0,255,0)
Red = (255,0,0)
White = (255,255,255)
Black = (0,0,0)
def Button():
def__init__(self, surface, x, y, width, height, colour, message, action=None)
self.x = x
self.y = y
self.width = width
self.height = height
self.font = pygame.font.Font(None, 20)
self.message = message
background_image = pygame.image.load('map.JPG')
title_image = pygame.image.load('title.PNG')
while True:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
GameWindow.blit(background_image, [0,0])
GameWindow.blit(title_image, [100,0])
pygame.display.flip()
fpsClock.tick(FPS)
【问题讨论】:
-
请准确告诉我们您想要什么。告诉我们“帮我完成我的 Button 课程”是没有帮助的。另外,请告诉我们您的尝试以及出了什么问题,或者您对什么感到困惑。谢谢。
-
好点哈哈。我的问题现在好了吗? :)
-
看看examples here,尤其是第二个面向对象的示例。或者您可以使用其中一个 GUI 库,例如 SGC。
标签: pygame