DevBlog 004. SCP 2844. Карта и перемещение юнитов. Часть 3
Реализация алгоритма перемещения слегка затянулась, но таки удалось исправить различные баги встречавшиеся ранее.Карта была разбита на "слои". Точнее на этапы генерации. Террейн был вынесен в отдельный лист, где он лежит как источник данных и никому не мешает. Юниты (B и U) были вынесены в отдельный лист Units, а ресурсы в отдельный лист Resources. Теперь карта из себя представляет не один забитый данными и артефактами оставшимся от расчёта пути, а несколько отдельных источников данных, и финальный результат наложенный на лист GUI. Сначала берутся данные о террейне, на них исходя из данных во вкладе Units накладываются имеющиеся там юниты, и поверх имеющегося результата накладываются ещё и ресурсы. После уже готовый результат размещается на вкладе GUI и уже от этого пляшет алгоритм поиска пути, повторно считывающий и модифицирующий карту уже своими данными и пвторно её перерисовывающий.
Как оказалось ранее реализованный алгоритм поиска пути, удалось перестроить с поиска пути от U до Res, на поиск пути от U до B, всего парой правок. Это потенциально облегчит доведение элементов работы с перемещением и карты до ума. Хотя как правильно заметили в комментариях ранее, я очень сильно перемудрил, и мне это перемещение вообще было не нужно, для проверки концепта можно было бы убрать лабирин и просто двигать юнит до ресурса по прямой, без лишних расчётов.
Строим путь от U до B
Исправив всего пару строк, строим путь от U до Res
Хоть пока что не очень гибко и тем более не динамично, но таки по крайней мере оно уже работает, хоть пока и кривенько :)
Подробнее
16 15 14 13 12 16 15 14 13 12 31 31 311 В 16 15 14 13 12 30 30 * 30 30 16 15 14 13 12 29 * 29 29 30 16 15 14 13 12 * 28 28 * 27 27 27 27 27 15 14 13 12 * * 26 26 26 26 26 15 14 13 * 11 * 25 25 25 25 25 15 14 * 11 25 * 24 24 24 24 45 * 14 11 25 24 * 23 23 23 * 15 15 11 25 24 23 * 22 22 * 16 16 11 25 24 23 22 * 21 * 17 17 11 25 24 23 22 21 * * 18 18 11 25 24 23 22 21 20 * 19 19 19 11 25 24 23 22 21 20 20 20 20 20 11 25 24 23 22 21 21 21 21 21 21 11 25 24 23 22 22 22 22 22 22 22 11 I 25 24 23 23 23 23 23 23 23 23 12 [зо 29 28 27 26 25 24 23 22 21 20 19 30 29 28 27 26 25 24 23 22 21 20 19 130 29 28 27 26 25 24 23 22 21 20 19 01 23456789 10 11 12 11 10 9 8 7 11 10 9 8 7I 11 10 9 8 8 11 10 [Re 9 9 11 11 10*10 101 16 15 14 16 15 15 16 16 16 6 6 6 5 5 5 4 4 4 3 3 3 2 2 2 * * 1 2 1 U 2 1 il 2 2 2 3 3 3 4 4 4 5 5 5 6 6 6 7 7 7 8 8 8 9 9 9 10 10 10 11 11 11 12 12 12 13 13 13 14 14 14 15 15 15 16 16 16 13 14 15 16 17 18 19 20 21 22 23
vv w vv w vv vv vv w VV w 9 8 7 9 8 * I 9 * 8 Res w w vv vv w vv vv w w w vv vv w w w w w w vv w w w w vv w 24 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 vv vv w vv 6 6 6 w 5 5 5 vv 4 4 4 vv 3 3 3 vv if 2 2 vv I 2 * 1 vv 2 и vv 2 1 1 vv 2 2 2 w 3 3 3 vv 4 4 4 vv 5 5 5 vv 6 6 6 V/ 7 7 7 vv 8 8 8 w vv w vv vv vv w vv w vv vv vv vv 21 22 23 24 0 1 2 3 4 5 6 7 8 9
песочница,2844,geek,Прикольные гаджеты. Научный, инженерный и айтишный юмор,devblog,adminguide,gamedev,Игры,реактора
на первом скрине, кстате, хорошо видно что путь не оптимальный, и его можно сократить ещё.