Можно ли как-либо отследить есть ли на данной координате объект?
Пытаюсь сделать мини-песочницу. Хочу реализовать песок, который падает либо пока не достигнет самого низа, либо пока не столкнется с другим объектом. Первое сделать конечно легко, но вот второе вызывает трудности. Кто-нибудь знает как это реализовать ?
Имеющийся код :
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))