当前位置: 首页 > 面试题库 >

根据pygame中的点击更改图片

景宏盛
2023-03-14
问题内容

我已经完成了一次Google搜索,并搜索了我的两本python初学者书籍,以查找执行此操作的方法。我认为这必须是一个简单的任务。基本上,我正在与python一起使用pygame。

我希望如果我单击button1_image,它会更改为button1select_image,对吗?如果单击button2_image,它将button1select_image设置回button1_image,而button2_image更改为button2select_image。

所以我想知道的是这是一个简单的if
else语句还是更复杂的语句。显然,这些按钮稍后会执行其他操作,但是我无法找到基于如何通过单击用户鼠标来执行类似操作的教程。

# Button Mouse Click Image Change
# Demonstrates changing from one button image to another based on click of mouse.

from livewires import games, color

games.init(screen_width = 281, screen_height = 500, fps = 50)

button1_image = games.load_image("button1.png", transparent = False)
button1 = games.Sprite(image = button1_image, x = 28,y = 18)
games.screen.add(button1)

button1select_image = games.load_image("button1select.png", transparent = False)
button1select = games.Sprite(image = button1select_image, x = 28,y = 18)
games.screen.add(button1select)

button2_image = games.load_image("button2.png", transparent = False)
button2 = games.Sprite(image = button2_image, x = 56,y = 18)
games.screen.add(button2)

button2select_image = games.load_image("button2select.png", transparent = False)
button2select = games.Sprite(image = button2select_image, x = 56,y = 18)
games.screen.add(button2select)

games.screen.mainloop()

问题答案:

在这里,我进行了简单介绍,以展示鼠标的工作原理。该行if event.button == 1:检查是否已按下鼠标左键,如果要使用鼠标右键,请将1更改为2。

import pygame, sys
from pygame.locals import *

TIMER = 30
SCREEN_X = 200
SCREEN_Y = 200

screen = pygame.display.set_mode((SCREEN_X, SCREEN_Y))
clock = pygame.time.Clock() #tick-tock

ending = button1 = button2 = False

corner1 = (28,18)  #Top Left corner of button 1
corner2 = (56,18)  #Top Left corner of button 2

image_length = 100 #length of the buttons
image_height = 100 #height of the buttons

counter = 0

#Main Loop:
while ending==False:
    counter+=1
    clock.tick(TIMER)
    for event in pygame.event.get():
        if event.type == KEYDOWN:
            if event.key == K_ESCAPE:
                ending=True # Time to leave
                print("Game Stopped Early by user")
        elif event.type == MOUSEBUTTONDOWN:
            if event.button == 1:
                mouse_x, mouse_y = event.pos
                if (mouse_x >= corner1[0]) and (mouse_x <= corner1[0]+image_length) and (mouse_y >= corner1[1]) and (mouse_y <= corner1[1]+image_height):
                    print ("Button one is selected")
                    button1=True
                    button2=False
                elif (mouse_x >= corner2[0]) and (mouse_x <= corner2[0]+image_length) and (mouse_y >= corner2[1]) and (mouse_y <= corner2[1]+image_height):
                    print ("Button two is selected")
                    button1=False
                    button2=True
                else:
                    print ("That's not a button")
                    button1=False
                    button2=False
    if counter == TIMER:  #prints the statements once a second
        counter=0
        if button1==True:
            print ("Button one is currently selected")
        elif button2==True:
            print ("Button two is currently selected")
        else:
            print ("No buttons currently selected")

在底部的打印语句中。如果button1或button2变量分别为,则只需将选择的图像用于按钮1或2
True。否则将是如果未选择任何图像,则将两个图像都作为未选择的按钮。如果您不知道如何使用图像等,请在此处查看:http
:
//www.pygame.org/docs/确实对我有所帮助。自己尝试一下,如果仍然遇到问题,Stack
Exchange仍然会在这里提出您的问题:)

希望能帮助到你



 类似资料:
  • 我有一个组件如下所示: 目前,我使用的是圆形薄图标。我想更改它,以便每次单击图标时,它都会更改为圆点图标。比如单选按钮。不过,我不太清楚如何做到这一点。 https://snack.expo.io/toTSYc2fD 我希望能够选择多个/取消选择选项。我不想在所有字段上同时应用相同的规则。 注意:onPress功能也可以直接用于图标,而不是TouchableOpacity(尽管不是首选)

  • 问题内容: 有人知道如何更改pygame图标吗?我在pygame网站上发现了一个可以让您执行此操作的东西,但是当我尝试操作时,它只会使pygame窗口很小。 问题答案: 首先将图标图像加载为表面,然后用于更改图标。 编辑:由于询问者不知道什么是表面 来自http://www.pygame.org/docs/ref/surface.html上的文档 “ pygame Surface用于表示任何图像。

  • 我有一个带有ActionListener的JRadioButton,但我不知道如何在点击另一个面板时触发JButton的图标更改。下面列出了两者的代码。选择正确的单选按钮后,图像需要从左键切换到右键。 }

  • 问题内容: 我有一个图像,单击该图像时,我想在其下方显示另一个图像。我正在寻找一个简单的CSS only解决方案。 那可能吗? 问题答案: 您可以使用具有不同样式的标签:

  • 问题内容: 可以更改按钮功能吗? 例如 点击,再点击一次 我已经尝试过类似,但没有结果。 我设法使叠加工作并在其中插入所需的数据。但是没有找到任何可以帮助我的帖子。我正在使用react-bootstrap。这是我的代码。 问题答案: 您可以尝试使用状态来存储颜色。也许这会让您想到解决问题的方法: 这是一个小提琴。

  • 我正在为我的游戏添加一个标题屏幕,我想添加一个“播放”按钮,当用户点击它时,它将启动主游戏。 我已经把一切都设置好了,但我不确定鼠标与播放按钮图像交互的命令是什么。 首先,我将播放按钮图像加载到主循环之外 然后,我把它放在屏幕上,后面有一个矩形作为标记