Можно ли как-либо отследить есть ли на данной координате объект?

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

Имеющийся код :

Main.py

import pygame

from classes import *

pygame.init()

screen_x, screen_y = pygame.display.list_modes()[3]

screen_y -= 100
print(screen_x, screen_y)

window = pygame.display.set_mode((screen_x, screen_y))

in_App = True
materials = []
selected_material = 'sand'
font = pygame.font.Font(None, 15)
clock = pygame.time.Clock()



def control_materials() :
    for mat in materials :
        if type(mat) == sand :
            for i in materials :
                if i != mat :
                    if type(i) == sand :
                       if mat.y < screen_y - mat.height and i.y != mat.y :
                           mat.y += mat.speed



def add_material(x, y) :
    if selected_material == 'sand' :
        materials.append(sand(x, y))

def draw_window() :
    window.fill((0, 0, 0))
    fps = clock.get_fps()
    fps_p = font.render(str(round(fps, 2)), 1, (255, 255, 255))

     window.blit(fps_p, (0, 0))

    for material in materials :
        material.Draw(window)

    pygame.display.flip()



while in_App : 
    clock.tick(60)

    mouse = pygame.mouse.get_pressed()    
    mouse_x, mouse_y = pygame.mouse.get_pos()


    for event in pygame.event.get() :
        if event.type == pygame.QUIT :
            in_App = False

    if mouse[0] :
        add_material(mouse_x, mouse_y)

    control_materials()

    draw_window()

classes.py

import pygame


class sand:
    def __init__(self, x, y) :
        self.x = x
        self.y = y
        self.width = 3
        self.height = 3
        self.speed = 1

    def Draw(self, window) :
        pygame.draw.rect(window, (255, 255, 0), (self.x, self.y, 3, 3))  

Ответы (0 шт):