Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
direction = { Δx: 1, Δy: 0} — просто и понятно.if allowed(X + Δx, Y + Δy) return [Δx, Δy] // Движение вперёд
if allowed(X - Δx, Y + Δy) return [-Δx, Δy] // отражение по X
if allowed(X + Δx, Y - Δy) return [Δx, -Δy] // отражение по Y
return [-Δx, -Δy] // возвратВ буквальном смысле четыре строчки. Ну ещё пяток чтобы реально точку передвинуть. Как это делать непосредственно с градусами — я вообще себе представить не могу! Собственно тот алгоритм, что у вас реализован так и работает — с той только разницей, что у вас там есть ещё дополнительная сущность предназначенная «для запутывания противника».В ксониксе захваченная территория всегда та, на которую, после очередного прокладывания следа, не могут попасть «морские» точки-враги. Не важно какая часть больше, а какая меньше.В таком случае всё как-то слишком уж упрощается. Главное — стек не переполнить при рекурсивной заливке :)
clearRect).
Xonix на Javascript с картинками