1 回答
TA贡献1810条经验 获得超4个赞
PyGame 中的单位是像素。您的对象重叠,因为垂直和水平位置的差异只有一个像素。
imgPos = pygame.Rect((0, 0), (0, 0))
imgPos1 = pygame.Rect((1, 1), (1, 1))
增加对象的距离并根据相应图像的大小设置矩形的大小。例如
imgPos = pygame.Rect((0, 0), img.get_size())
offsetX = img.get_width()
imgPos1 = pygame.Rect((offsetX, 0), img1.get_size())
或者,可以从 by生成pygame.Rect
对象。矩形的位置必须由关键字参数设置:pygame.Surface
get_rect
imgPos = img.get_rect(topleft = (0, 0)) imgPos1 = img1.get_rect(topleft = (img.get_width(), 0))
如果要选择要移动的图像,则需要添加一个变量来指示当前选择的图像:
current_image = None
单击图像时,会发生变化current_image
。用于collidepoint()
验证鼠标是否单击了图像:
if e.type == pygame.MOUSEBUTTONDOWN:
if imgPos.collidepoint(e.pos):
current_image = 0
elif imgPos1.collidepoint(e.pos):
current_image = 1
else:
current_image = None
移动img如果current_image == 0和移动img1如果current_image == 1:
if e.type == MOUSEMOTION:
if e.buttons[LeftButton]:
rel = e.rel
if current_image == 0:
imgPos.x += rel[0]
imgPos.y += rel[1]
elif current_image == 1:
imgPos1.x += rel[0]
imgPos1.y += rel[1]
import pygame
from pygame.locals import *
pygame.display.init()
screen = pygame.display.set_mode((1143,677 ))
img = pygame.image.load(r"C:\Users\ga-sa\Downloads\As.png")
img1 = pygame.image.load(r"C:\Users\ga-sa\Downloads\03.png")
imgPos = img.get_rect(topleft = (20, 20))
imgPos1 = img1.get_rect(topleft = (60, 20))
current_image = None
LeftButton = 0
while 1:
for e in pygame.event.get():
if e.type == QUIT:
pygame.quit()
exit(0)
if e.type == pygame.MOUSEBUTTONDOWN:
if imgPos.collidepoint(e.pos):
current_image = 0
elif imgPos1.collidepoint(e.pos):
current_image = 1
else:
current_image = None
if e.type == MOUSEMOTION:
if e.buttons[LeftButton]:
rel = e.rel
if current_image == 0:
imgPos.x += rel[0]
imgPos.y += rel[1]
elif current_image == 1:
imgPos1.x += rel[0]
imgPos1.y += rel[1]
screen.fill(0)
screen.blit(img, imgPos)
screen.blit (img1, imgPos1)
pygame.display.flip()
pygame.time.delay(30)
添加回答
举报