📜  如何在 PyGame 中用鼠标移动图像?

📅  最后修改于: 2022-05-13 01:55:32.997000             🧑  作者: Mango

如何在 PyGame 中用鼠标移动图像?

Pygame 是一个Python库,用于创建跨平台视频游戏。 Pygame 创建的游戏可以通过鼠标、键盘和操纵杆等任何输入设备轻松运行。你想制作一个通过鼠标控制运行的游戏吗?你不知道如何用鼠标移动图像吗?别着急,你需要做的是声明两个值,即running和moving。声明值后,设置您的应用程序在运行状态时应执行的操作。阅读下面给出的文章以了解更多详细信息。

方法:

步骤1:首先,导入库pygame。

import pygame
from pygame.locals import *

第 2 步:现在,将颜色作为我们要在游戏中使用的输入。

color_1 = #RGB value of color 1
color_2 = #RGB value of color 2
color_n = #RGB value of color n

第 3 步:然后,构建一个 GUI 游戏。

pygame.init()

第 4 步:此外,设置 GUI 游戏的尺寸。



w, h = #Width dimension, #Height dimension
screen = pygame.display.set_mode((w, h))

第 5 步:接下来,将要用鼠标移动的图像作为输入

img = pygame.image.load('#Enter the image')
img.convert()

第 6 步:此外,您可以通过在图像周围添加矩形边框来使图像看起来更有吸引力。

rect = img.get_rect()
rect.center = w//2, h//2

第七步:稍后,设置运行游戏的运行值和移动图像的移动值。

running = True
moving = False

第 8 步:设置您希望应用在运行状态时执行的操作。

while running:
   for event in pygame.event.get():
  • 步骤8.1:一旦应用程序处于运行状态,如果用户想退出,请使其退出。
if event.type == QUIT:
           running = False
  • 步骤 8.2:如果用户不想退出,请围绕 GUI 应用程序的尺寸移动您的图像。
elif event.type == MOUSEBUTTONDOWN:
          if rect.collidepoint(event.pos):
              moving = True  
  • 步骤 8.3:接下来,如果您只想通过鼠标点击移动图像,则将移动值设置为 False,如果您想在不点击鼠标的情况下移动图像,则将移动设置为 True。
elif event.type == MOUSEBUTTONUP:          
           moving = False
  • 步骤 8.4:此外,如果您的图像曾经移动过,请将其设置为移动状态。
elif event.type == MOUSEMOTION and moving:
           rect.move_ip(event.rel)  

第 9 步:接下来,您需要在屏幕上设置屏幕颜色和图像。

screen.fill(YELLOW)
   screen.blit(img, rect)

步骤 10:此外,通过构建图像的边框使您的图像看起来很有吸引力。

pygame.draw.rect(screen, BLUE, rect, 2)

步骤 11:此外,更新在 GUI 游戏中所做的更改。

pygame.display.update()

第 12 步:最后,退出 GUI 游戏。

pygame.quit()

下面是实现。

Python
# Python program to move the image
# with the mouse
  
# Import the library pygame
import pygame
from pygame.locals import *
  
# Take colors input
YELLOW = (255, 255, 0)
BLUE = (0, 0, 255)
  
# Construct the GUI game
pygame.init()
  
# Set dimensions of game GUI
w, h = 640, 350
screen = pygame.display.set_mode((w, h))
  
# Take image as input
img = pygame.image.load('geek.jpg')
img.convert()
  
# Draw rectangle around the image
rect = img.get_rect()
rect.center = w//2, h//2
  
# Set running and moving values
running = True
moving = False
  
# Setting what happens when game 
# is in running sate
while running:
      
    for event in pygame.event.get():
  
        # Close if the user quits the 
        # game
        if event.type == QUIT:
            running = False
  
        # Making the image move
        elif event.type == MOUSEBUTTONDOWN:
            if rect.collidepoint(event.pos):
                moving = True
  
        # Set moving as False if you want 
        # to move the image only with the 
        # mouse click
        # Set moving as True if you want 
        # to move the image without the 
        # mouse click
        elif event.type == MOUSEBUTTONUP:
            moving = False
  
        # Make your image move continuously
        elif event.type == MOUSEMOTION and moving:
            rect.move_ip(event.rel)
  
    # Set screen color and image on screen
    screen.fill(YELLOW)
    screen.blit(img, rect)
  
    # Construct the border to the image
    pygame.draw.rect(screen, BLUE, rect, 2)
  
    # Update the GUI pygame
    pygame.display.update()
  
# Quit the GUI game
pygame.quit()


输出:

pygame 移动图像鼠标