Делаю игру "змейка" на канвасе. Имеется такой код
function randomNumber(max) {
return Math.floor(Math.random() * max) ;
} // генерит случайное число от 0 до (но не включая) max
function Position(x, y, side) {
this.x = x ;
this.y = y ;
if(side !== undefined)
this.movementToSide = side ;
} // конструктор позиций, x и y - координаты, movementToSide - сторона, в которую двигаемся
function Food() {
this.position = new Position(randomNumber(canvas.width), randomNumber(canvas.height)) ;
} // конструктор еды, которую ест змейка; position - позиция, где эта еда находится, она может появиться в любом месте на поле
function Snake() {
this.positionsOfTurns = [] ;
this.head = new Position(canvas.center.x + canvas.cellSize, canvas.center.y, "right") ;
this.tail = new Position(canvas.center.x - canvas.cellSize, canvas.center.y, "right") ;
}
/* positionOfTurns - массив позиций, где и в какую сторону поворачивает змейка
пример этого массива:
[{
x: 250,
y: 250,
movementToSide: "top"
},
{
x: 250,
y: 200,
movementToSide: "left"
}], т.е. первый поворот змейка делает вверх в позиции x:250, y:250; далее передвигается на 50пикселей вверх и следующий поворот она делает влево в позиции x:250, y:200
head - позиция головы змейки
tail - позиция хвоста змейки
*/
// прочий код
Так вот, когда создается позиция для еды, нужно проверить, не попала ли она на змейку (нельзя же, чтоб еда появилась на змейке). Следовательно, вопрос: как максимально эффективно (т.е. наиболее быстро) и можно ли вообще проверить, совпала позиция еды с какой-либо координатой, где ползет сейчас змейка, не имея при этом массива всех этих координат змейки (у меня же только хранятся позиции головы, хвоста и поворотов змейки). Я не вижу никакого варианта, кроме как с использованием массива всех координат