ПрограммированиеФорумОбщее

Вопросы от Непрограммиста (61 стр)

Страницы: 1 … 56 57 58 59 60 61
#900
14:42, 14 сен 2026

Жиректор
> Она обычная ячейка = квадрат.
  У меня самая обычная сетка. Просто по дизайну вид сетки как выше на примере.
> Просто внутрь ты вставляешь изображения
  Дык в том-то и дело, что это непросто. Там целая архитектура. Я ж не просто про сетку. Я непосредственно про код. Какие создать массивы и как они будут между собой общаться.

#901
(Правка: 16:50) 16:33, 14 сен 2026

711
> Какие создать массивы и как они будут между собой общаться.
Обычный вложенный список или словарь?

#902
16:59, 14 сен 2026

Жиректор
> Обычный вложенный список или словарь?
  И что с ними делать ? Как мне получать id объекта ? Как проверять положение камеры, мышки, монитора ? Как мне всё это сохранять/загружать ? Как мне устанавливать таймер в каждой клетке ? Ну и так далее по бесконечному списку всей архитектуры.

#903
8:21, 16 сен 2026

711
> таймер в каждой клетке
Один таймер под ближайшее событие в очереди или интервальный, бинарная вставка по времени события в очередь
> получать id объекта
quadtree или варианты проще и быстрее для тайловых игр (CSR поверх jagged array или что-то подобное для статики)
> проверять положение камеры, мышки, монитора
это уже частность для определённой среды исполнения кода, ничего сложного нет, гуглилось и гуглится до сих пор

Это всё обычная сетка - 2д массив (лучше индексами Мортона на 1д массив отобразить для локальности данных), хоть 33 раза её искази
Единственная сложность - точная трансляция в/из ху холста из/в ху 2д массива (простая математика, загуглил/забямил и всё). Отображение в общем случае никак не должно влиять на логику point&click - сегодня в 2д отрисуем, завтра в 3д и т.д.. Наличие жёсткой связи между сильно независимыми частями - косяк

А так это обычный тайловый рендер (их уже очень много написано, думать здесь не нужно)

#904
0:54, 19 сен 2026

  Не тратьте своё время на подсказки. Я вообще ничего не понимаю.


                                      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

  Чтобы понять, какой клетке соответствует положение мышки, мы делим её положение на ширину клетки и получаем индекс клетки.

#905
(Правка: 20:28) 20:15, 20 сен 2026

                                      2
Рис 1.
  Чтобы грани клеток на стыках не дублировались, то рисуем только две из четырех.
  Каждая левая и верхняя грань клетки - это её начало отсчёта. Нижней и правой грани нету. И если они появляются, то это начало следующей клетки.

Рис 2.
  Ячейка: косоугольный параллелограммом с боковыми рёбрами 45 градусов.
  Ширина ячейки: 10.
  Высота ячейки: 5.

  Чтобы найти сдвиг, достаточно из “х” вычесть “у”. А потом разделить на ширину. И мы получим индекс столбца “х”.

84lkh | Вопросы от Непрограммиста

  Синий пиксель - это как-бы математический оригинал. Белый - эго проекция на нарисованной карте мира в игре, которая имитирует 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…) Битовый сдвиг - вместо деления.

Страницы: 1 … 56 57 58 59 60 61
ПрограммированиеФорумОбщее