gpt4 book ai didi

python - 如何从我单击的点单击并拖动图像,而不是在 python 的中心

转载 作者:太空宇宙 更新时间:2023-11-03 17:45:52 24 4
gpt4 key购买 nike

import pygame

pygame.init()

width = 272
height = 552

white = 255,255,255

gameDisplay = pygame.display.set_mode((width,height))
pygame.display.set_caption('War Games')

Map = pygame.image.load("SPEMap.jpg"); pygame.Surface((800,552))
rect = Map.get_rect(); rect.center = (400,286)

stop = False

while not stop:

gameDisplay.blit(Map, rect)


if pygame.mouse.get_pressed()[0]:
if rect.collidepoint(pygame.mouse.get_pos()):
rect.center = pygame.mouse.get_pos()

for event in pygame.event.get():

if event.type == pygame.QUIT:
pygame.quit()
quit()


pygame.display.update()

这里我有一张比屏幕大的 map 图像。我将其设置为当我单击图像时,图像会移动,以便图像的中心位于鼠标下方,然后我可以拖动图像。我想知道如何才能将图像从单击的位置拖动,而不是让它跳到中心。我希望这不会太令人困惑。

最佳答案

就像 sshashank124 所说,你需要用图像的宽度、高度尺寸来偏移图像的 x、y 位置。一个例子是:

imageX = mouseX - (imageWidth / 2)
imageY = mouseY - (imageHeight / 2)

我希望我没有错误地阅读你的问题。

编辑:上面的代码片段将在您的程序中翻译成类似于下面的代码。

import pygame

pygame.init()
gameDisplay = pygame.display.set_mode((272, 552))

mapWidth = 0 # MUST FILL IN SIZE
mapHeight = 0 # MUST FILL IN SIZE
gameMap = pygame.image.load("SPEMap.jpg")
mapRect = map.get_rect()

stop = False
while not stop:
if pygame.mouse.get_pressed()[0]:
if mapRect.collidepoint(pygame.mouse.get_pos()):
mapRect.x = pygame.mouse.get_pos()[0] - (mapWidth / 2)
mapRect.x = pygame.mouse.get_pos()[0] - (mapWidth / 2)

for event in pygame.event.get():
if event.type == pygame.QUIT:
stop = True

gameDisplay.blit(gameMap, mapRect)
pygame.display.update()

pygame.quit()
exit()

如果值得,请选择最佳答案以表达您的赞赏。 :)

关于python - 如何从我单击的点单击并拖动图像,而不是在 python 的中心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29808634/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com