在游戏 ( it is c++ board game like matrix with soldiers which can use formation
) 中,士兵可以编队部署。(在地图/矩阵的一个单元格上只能部署一名士兵,编队可以在 8 个方向上,角度为 0、45、90、135、180、225、270、315 度与 x 轴,当士兵编队时,他们是在相邻的单元格中,例如在 0 度 y 中的形成对于除 x2 - x1 =1 等之外的所有人都是相同的,在 45 度 y2-y1=1 和 x2-x1=1 上)。阵型是线和hollow_square。我需要一种非常有效的方法来检查士兵是否在编队(士兵在班级中有 x 和 y 自己的位置)。对于线,我按 x 排序(我有它代表部队中士兵的位置)并检查相邻 ( )std::list<std::pair<int,int> >
之间的差异是否为 1 。in case 0, 180; in case 45, 135 ,225, 315 also check for difference for y is 1 or -1
如果士兵在编队,如何检查hollow_square?
(就像这张丑陋的图片一样,澄清一下)