Проблема в том, чтобы найти направление, которое даст кратчайшее расстояние.
Однако , вычитание может привести к отрицательным числам, и это необходимо учитывать.
Если вы перемещаете пистолет по одному шагу при каждой проверке, я не знаю, когда вы будете выполнять модуль.
И, если вы хотите переместить пистолет за один шаг, вы просто добавите / вычтите дельту правильно.
С этой целью Киршштейн , кажется, думает, что рядом со мной.
Я работаю с целым числом в этом простом псевдокоде.
if (objdeg != gundeg)
{
// we still need to move the gun
delta = gundeg - objdeg
if (delta > 0)
if (unsigned(delta) > 180)
gundeg++;
else
gundeg--;
else // delta < 0
if (unsigned(delta) > 180)
gundeg--;
else
gundeg++;
if (gundeg == 360)
gundeg = 0;
else if (gundeg == -1)
gundeg = 359;
}
Попробуйте работать с этим постепенно с gundeg = 10 и objdeg = 350, чтобы увидеть, как gundeg будет перемещен с 10 до 0, а затем с 359 до 350.