Скорее всего, вы имеете в виду "изображение должно быть выравнено" по центру клетки.
1. реализация сетки
Для создания сетки много не нужно: достаточно научится верно представлять координаты. Для нахождения позиции отрисовки в левом-верхнем углу, достаточно умножить координаты
по сетке на размер 1 кл.
2. реализация отрисовки по центру клетки
Для отрисовки по центру клетки, нужно больше сделать. Я написал функцию, которая возвращает поверхность, которую следует отрисовывать слева-сверху клетки. Возможно, вы сами разберётесь, как она работает. Простая геометрия)
import pygame
def align_center(cell_width, cell_height, surface_to_align, not_return_surface_but_coords=False):
cw, ch, sf = cell_width, cell_height, surface_to_align
cx, cy = cw//2, ch//2
dx, dy = sf.get_width()//2, sf.get_height()//2
tx, ty = cx-dx, cy-dy
ret = pygame.Surface((cw, ch), pygame.SRCALPHA)
ret.blit(sf, (tx, ty))
if not not_return_surface_but_coords:
return ret
else:
return [tx, ty]
return -1
#
Если помимо всех аргументов передать переменную или значение, НЕ равное 0 или False, то вместо поверхности вы получите координаты, где отрисовывать. Это может быть полезно для оптимизации, если игру нужно оптимизировать, то воспользуйтесь не готовой выровненной поверхностью, а координатами, и уже добавив их к основнным координатам клетки, отрисуйте.
3. реализация нахождения клетки по координате
Здесь всё просто.
x = mx // cw
y = my // ch
,
где mx, my - координаты клика, а cw, ch - ширина и высота клетки.
Удачи в разработке!