Это часть курса Змейка на Rust, JavaScript и WebAssembly.

В этой части мы завершим разработку игры, добавив логику, которая перезапустит игру, когда игрок проиграет. Изменения, которые мы внесем в этой части, отражены в this commit.

Игра закончена

Чтобы определить, когда змея ест свой хвост, мы будем использовать метод Segment, который вернет проекцию точки на сегменте.

Магия, связанная с нахождением проекции точки на сегменте, выходит за рамки этого курса.

Теперь мы готовы добавить метод, который сообщит нам, должна ли игра закончиться.

Сначала проверяем, находится ли голова змеи за пределами игрового поля. Если у змеи более пяти сегментов, мы хотим проверить самопересечение.

Мы объявляем самопересечение, когда проецируемая голова находится внутри одного из сегментов хвоста, а расстояние между проецируемой точкой и головой меньше половины ячейки.

Давайте скомпилируем Rust и закончим со стороной JavaScript!

Перезапуск игры

Мы проверим, закончилась ли игра, сразу после вызова метода process.

Теперь мы можем открыть веб-страницу и наслаждаться игрой!

Достигните нового уровня сфокусированности и продуктивности с Increaser.org.