当前位置: 首页 > 知识库问答 >
问题:

pygame-点击图像的代码是什么[复制]

巫马望
2023-03-14

我正在为我的游戏添加一个标题屏幕,我想添加一个“播放”按钮,当用户点击它时,它将启动主游戏。

我已经把一切都设置好了,但我不确定鼠标与播放按钮图像交互的命令是什么。

首先,我将播放按钮图像加载到主循环之外

play = pygame.image.load("play.png").convert()

然后,我把它放在屏幕上,后面有一个矩形作为标记

play_button = pygame.draw.rect(screen, WHITE, [365, 515, 380, 180])
screen.blit(play, [350, 500])

共有1个答案

黄弘盛
2023-03-14

PyGame是一个低级库,它没有GUI小部件,您必须自己做很多事情。

创建类按钮并多次使用它更容易。

下面是使用class按钮的示例。当你点击它时,改变颜色。

事件处理程序()检查按钮单击。

import pygame

# --- class ---

class Button(object):

    def __init__(self, position, size):

        # create 3 images
        self._images = [
            pygame.Surface(size),    
            pygame.Surface(size),    
            pygame.Surface(size),    
        ]

        # fill images with color - red, gree, blue
        self._images[0].fill((255,0,0))
        self._images[1].fill((0,255,0))
        self._images[2].fill((0,0,255))

        # get image size and position
        self._rect = pygame.Rect(position, size)

        # select first image
        self._index = 0

    def draw(self, screen):

        # draw selected image
        screen.blit(self._images[self._index], self._rect)

    def event_handler(self, event):

        # change selected color if rectange clicked
        if event.type == pygame.MOUSEBUTTONDOWN: # is some button clicked
            if event.button == 1: # is left button clicked
                if self._rect.collidepoint(event.pos): # is mouse over button
                    self._index = (self._index+1) % 3 # change image

# --- main ---

# init        

pygame.init()

screen = pygame.display.set_mode((320,110))

# create buttons

button1 = Button((5, 5), (100, 100))
button2 = Button((110, 5), (100, 100))
button3 = Button((215, 5), (100, 100))

# mainloop

running = True

while running:

    # --- events ---

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

        # --- buttons events ---

        button1.event_handler(event)
        button2.event_handler(event)
        button3.event_handler(event)

    # --- draws ---

    button1.draw(screen)
    button2.draw(screen)
    button3.draw(screen)

    pygame.display.update()

# --- the end ---

pygame.quit()

https://github.com/furas/my-python-codes/blob/master/pygame/button-click-cycle-color/main_class.py

 类似资料:
  • 问题内容: 我想知道如何使用pygame绘制图像。我知道如何加载它们。我做了一个空白的窗口。当我使用时,它不会绘制图像,而是将屏幕留空。 问题答案: 这是一个典型的布局:

  • 有人能解释这些代码吗?为什么它有<code>在那里?

  • Python 是当下最为火热,且功能最为全面的一门编程语言。Python 之所以深受大家喜爱, 除了可以被应用到“人工智能”领域之外,还可以延伸到数据分析、Web 开发、自动化测试、自然语言处理、游戏开发等各个领域。这一切的实现得益于 Python 有一个强大的第三方库(网址: https://pypi.org/),这个第三方库相当于一个手机软件市场,允许我们随意下载各式各样的软件包,并且开箱即用

  • 我正在做一个基本的游戏,如果我点击一张牌,就会显示一张图片。这些照片是随机挑选的。到目前为止,我已经将随机图片分配给一张卡片,卡片正面朝下显示。因此,如果我单击卡片,我希望显示指定的图片(在字典中)。 我想知道如何检测我是否点击了(卡片的)图像,因为图像的x,y坐标在左上角。现在,我正试图找到一种方法,使用鼠标点击的xy坐标来检测图像是否被点击。有没有一种方法可以使用“碰撞”或使事情变得太复杂?我

  • 在docker图像剪枝的docker文档中,可以使用-a标志来 删除所有未使用的图像,而不仅仅是悬空的图像 而后来

  • 问题内容: 我已经完成了一次Google搜索,并搜索了我的两本python初学者书籍,以查找执行此操作的方法。我认为这必须是一个简单的任务。基本上,我正在与python一起使用pygame。 我希望如果我单击button1_image,它会更改为button1select_image,对吗?如果单击button2_image,它将button1select_image设置回button1_imag