Я разрабатываю простую двумерную настольную игру, используя карты гексагональной плитки, я прочитал несколько статей (в том числе гамедеевский, каждый из которых связан с вопросом о шестиугольных плитках) о том, как рисовать гексы на экране и как управлять движением (хотя многое из того, что я уже делал раньше). Моя главная проблема - найти смежные плитки на основе заданного радиуса.
Вот как работает моя карточная система:
(0,0) (0,1) (0,2) (0,3) (0,4)
(1,0) (1,1) (1,2) (1,3) (1,4)
(2,0) (2,1) (2,2) (2,3) (2,4)
(3,0) (3,1) (3,2) (3,3) (3,4)
и т.д...
То, с чем я борюсь, заключается в том, что я не могу просто "выбрать" смежные плитки с помощью for(x-range;x+range;x++); for(y-range;y+range;y++);
, потому что он выбирает нежелательные плитки (в примере, который я дал, выбирая (1,1) плитки и давая диапазон 1 также даст мне (3,0) плитки (те, которые мне действительно нужны (0,1) (0,2) (1,0) (1,2) (2,1) (2,2 )), который немного похож на плитку (из-за того, как структурирован массив), но это не совсем то, что я хочу выбрать. Я мог бы просто грубо заставить его, но это было бы не красиво и, вероятно, не охватывало бы все аспект "выбора радиуса".
Может ли кто-нибудь указать мне в правильном направлении здесь?