Извините за любые грамматические ошибки, так как я не английский sh спикер
Я работаю над небольшой игрой во время этого карантина и хотел создать картографа, чтобы ускорить процесс проектирования уровней. Моя проблема в том, что даже если сетка показывает, как я ожидаю, на экране, функция «getcollide» не учитывает «блики» поверхности. Я потратил два дня на это и не могу придумать другой способ обойти это, вот пример кода:
import pygame
def run(l, h, fps, scene):
pygame.init()
ecran = pygame.display.set_mode((l, h))
clock = pygame.time.Clock()
scene_active = scene
while scene_active != None:
key = pygame.key.get_pressed()
filtre_touche = []
for event in pygame.event.get():
close = False
if event.type == pygame.QUIT:
close = True
elif event.type == pygame.KEYDOWN:
alt = key[pygame.K_LALT] or touche_active[pygame.K_RALT]
if event.key == pygame.K_ESCAPE:
close = True
elif event.key == pygame.K_F4 and alt:
close = True
if close :
scene.quit()
else :
mouse_pos = pygame.mouse.get_pos()
filtre_touche.append(event)
scene_active.traite_input(filtre_touche, key, mouse_pos)
scene_active.update()
scene_active.render(ecran)
scene_active = scene_active.next
pygame.display.flip()
clock.tick(fps)
surface = pygame.Surface((320,320))
M = []
for i in range(10):
x = []
for j in range(10):
x.append(pygame.draw.rect(surface, (255,255,255),(i*32, j*32, 32,32), 1))
M.append(x)
print(M)
class FirstScreen():
def __init__(self):
self.next = self
def traite_input(self, evenement, touche, mouse_pos):
for event in evenement :
if event.type == pygame.KEYDOWN and event.key == pygame.K_RETURN:
pygame.quit()
for line in M :
for row in line:
if row.collidepoint(mouse_pos):
print('collide')
def update (self):
pass
def render(self, ecran):
ecran.fill((200,200,200))
ecran.blit(surface, (350,250), surface.get_rect())
run(800,600,60, FirstScreen())
Если вы запустите это, вы увидите, что поверхность находится там, где мы ожидаем быть и плитка на самом деле имеют 32 на 32. Но наведение мыши над сеткой не имеет никакого эффекта. Оператор печати вызывается, когда вы наводите указатель мыши на то место, где должна быть сетка, если я перевернул поверхность на 0,0.
Я что-то упустил? После поиска на этом сайте, pygame do c и все виды форумов, я, кажется, единственный, с этой проблемой, что я делаю не так?