根据pygame中的点击更改图片

发布于 2021-01-29 14:59:51

我已经完成了一次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()
关注者
0
被浏览
93
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    在这里,我进行了简单介绍,以展示鼠标的工作原理。该行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仍然会在这里提出您的问题:)

    希望能帮助到你



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看