Как найти местоположение изображения, которое было перетянуто на экран (python,pygame)

Если я перетаскиваю изображение на экран, как я могу найти местоположение этого изображения на экране после. Я использую Pygame в Python

2 ответа

Когда вы разбиваете одну поверхность на другую, они становятся одним и тем же объектом. Поняв это, вы не сможете восстановить исходную поверхность, на которую вы влепили, на чужую позицию. Однако, если вы сохранили положение, в котором вы перелистали поверхность, вы можете получить исходное положение объекта на новой поверхности.

пример:

import pygame
white, red = (255, 255, 255), (255, 0, 0)
screen = pygame.display.set_mode((500, 500))
a = pygame.Surface((100, 100))
b = pygame.Surface((10, 10))
b_pos = (30, 42)
a_pos = (300, 125)
a.fill(white)
b.fill(red)
a.blit(b, b_pos)
screen.blit(a, a_pos)
new_b_pos = a_pos[0] + b_pos[0], a_pos[1] + b_pos[1]
print(new_b_pos)
pygame.quit()

Эта программа даст:

 (330, 167)

Ответ на мой собственный вопрос:

Объекты класса:

def __init__(self, screen, image_location, xposition, yposition):
    image = pygame.image.load(image_location)
    screen.blit(image, [xposition, yposition])
    self.height = image.get_height()
    self.width = image.get_width()
    self.xposition = xposition
    self.yposition = yposition

def collision(object1, object2):
    if object1.xposition <= object2.xposition <= object1.xposition + object1.width:
        if object1.yposition <= object2.yposition <= object1.yposition + object1.height:
            return True
    if object1.xposition <= object2.xposition + object2.width <= object1.xposition + object1.width:
        if object1.yposition <= object2.yposition <= object1.yposition + object1.height:
            return True
    if object1.xposition <= object2.xposition <= object1.xposition + object1.width:
        if object1.yposition <= object2.yposition + object2.height <= object1.yposition + object1.height:
            return True
    if object1.xposition <= object2.xposition + object2.width <= object1.xposition + object1.width:
        if object1.yposition <= object2.yposition + object2.height <= object1.yposition + object1.height:
            return True
    if object2.xposition <= object1.xposition <= object2.xposition + object2.width:
        if object2.yposition <= object1.yposition <= object2.yposition + object2.height:
            return True
    if object2.xposition <= object1.xposition + object1.width <= object2.xposition + object2.width:
        if object2.yposition <= object1.yposition <= object2.yposition + object2.height:
            return True
    if object2.xposition <= object1.xposition <= object2.xposition + object2.width:
        if object2.yposition <= object1.yposition + object1.height <= object2.yposition + object2.height:
            return True
    if object2.xposition <= object1.xposition + object1.width <= object2.xposition + object2.width:
        if object2.yposition <= object1.yposition + object1.height <= object2.yposition + object2.height:
            return True
    return False
Другие вопросы по тегам