Жиректор
> Она обычная ячейка = квадрат.
У меня самая обычная сетка. Просто по дизайну вид сетки как выше на примере.
> Просто внутрь ты вставляешь изображения
Дык в том-то и дело, что это непросто. Там целая архитектура. Я ж не просто про сетку. Я непосредственно про код. Какие создать массивы и как они будут между собой общаться.
711
> Какие создать массивы и как они будут между собой общаться.
Обычный вложенный список или словарь?
Жиректор
> Обычный вложенный список или словарь?
И что с ними делать ? Как мне получать id объекта ? Как проверять положение камеры, мышки, монитора ? Как мне всё это сохранять/загружать ? Как мне устанавливать таймер в каждой клетке ? Ну и так далее по бесконечному списку всей архитектуры.
711
> таймер в каждой клетке
Один таймер под ближайшее событие в очереди или интервальный, бинарная вставка по времени события в очередь
> получать id объекта
quadtree или варианты проще и быстрее для тайловых игр (CSR поверх jagged array или что-то подобное для статики)
> проверять положение камеры, мышки, монитора
это уже частность для определённой среды исполнения кода, ничего сложного нет, гуглилось и гуглится до сих пор
Это всё обычная сетка - 2д массив (лучше индексами Мортона на 1д массив отобразить для локальности данных), хоть 33 раза её искази
Единственная сложность - точная трансляция в/из ху холста из/в ху 2д массива (простая математика, загуглил/забямил и всё). Отображение в общем случае никак не должно влиять на логику point&click - сегодня в 2д отрисуем, завтра в 3д и т.д.. Наличие жёсткой связи между сильно независимыми частями - косяк
А так это обычный тайловый рендер (их уже очень много написано, думать здесь не нужно)
Не тратьте своё время на подсказки. Я вообще ничего не понимаю.
1
Наметился небольшой прогресс.
Сетка состоит из индексов, где один полноценный шаг равен 1 (единице). А не координатам (х=376, у=82).
Единица - это абсолютная величина, это есть 100%.
Единица - не меняет другие числа при умножении или делении.
Чтобы понять сетку, нужно, во-первых, понять, как её считать.
x
y 0,0 1,0 2,0 3,0
0,1 1,1 2,1 3,1
0,2 1,2 2,2 3,2
0,3 1,3 2,3 3,3
Чтобы понять, какой клетке соответствует положение мышки, мы делим её положение на ширину клетки и получаем индекс клетки.
2
Рис 1.
Чтобы грани клеток на стыках не дублировались, то рисуем только две из четырех.
Каждая левая и верхняя грань клетки - это её начало отсчёта. Нижней и правой грани нету. И если они появляются, то это начало следующей клетки.
Рис 2.
Ячейка: косоугольный параллелограммом с боковыми рёбрами 45 градусов.
Ширина ячейки: 10.
Высота ячейки: 5.
Чтобы найти сдвиг, достаточно из “х” вычесть “у”. А потом разделить на ширину. И мы получим индекс столбца “х”.

Синий пиксель - это как-бы математический оригинал. Белый - эго проекция на нарисованной карте мира в игре, которая имитирует 3д.
Переводим глобальные координаты положения мышки из игры в математическую сетку с индексами.
А. (х15-у12):10 = 0,3 округляем в меньшую сторону и получаем индекс столбца “х” = 0
В. (х15-у18):10 = -0,3 округляем и получаем индекс “х” = -1 (вышли за пределы)
С. (х37-у13):10 = 2,4 округляем и индекс столбца “х” = 2.
D. (х18-у27):10 = -0,9 индекс -1 (при округлении в меньшую сторону при отрицательном значении отрицание станет больше (абсолютное значение): -1 меньше (математическое значение), чем 0.9)
Рис 3.
Просто для наглядности
“у” будет одинаковый что у программной сетки (прямой), что и у сдвинутой (которая визуально в игре).
Процессор всё считает по вертикали и горизонтали. Без всяких искажений и градусов.
Смещение сетки (её искажение) не случайное. При 45 градусах это 1 шаг (пиксель) вправо и 1 шаг вниз. Если клетка с размером 10 на 10 с индексом 0.0 начинается на х0 у0, то клетка с индексом 0.1 будет начинаться на х0 у10. А при искажении она будет начинаться на х10 у10.
Процессор экономит ресурсы при “делении” чисел в степени 2 (4,8,16…) Битовый сдвиг - вместо деления.