Разработка программы-игры «Змея» на языке С++ с использованием функций WinAPI, страница 3

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

Игрок управляет длинным, тонким существом, напоминающим змею, которое ползает по плоскости (как правило, ограниченной стенками), собирая еду (или другие предметы), избегая столкновения с собственным хвостом и краями игрового поля. В некоторых вариантах на поле присутствуют дополнительные препятствия. Каждый раз, когда змея съедает кусок пищи, она становится длиннее, что постепенно усложняет игру. Игрок управляет направлением движения головы змеи (обычно 4 направления: вверх, вниз, влево, вправо), а хвост змеи движется следом. Игрок не может остановить движение змеи.

Поле при этом разбито на некоторое количество квадратов. Каждый из таких квадратов является отдельной частью поля, которая может быть либо стеной, либо обычным полем по которому можно ползать, либо едой.

В своей реализации хотелось оставить те правила, которые и составляют основу данной игры, однако исходя из реалий текущего развития игр, хотелось отойти от поля, разделенного на квадратики, и реализовать «непрерывное» поле, по которому змея может ползать в любом направлении на плоскости поля, и при движении извиваться на подобии настоящее змеи. При этом никакие объекты на поле, не привязаны ни к какой сетке, и могут находиться в любом месте на поле. Также хотелось реализовать уровни, переход между которыми осуществляется по достижении определенного уровня очков. При переходе на новый уровень количество препятствий, мешающих змее, должно было бы увеличиваться.

Выбрана идея змеи ползающей по лесу, при этом столкновение ее с пеньком, оставшимся от яблочного дерева, приводит к проигрышу, а питается змея яблоками. При достижении следующего уровня змея заползает дальше в лес, где пеньки расположены гуще. Выигрыш определяется моментом, когда змея настолько сильно увеличивается в длине, что понимает невозможность дальнейшего поглощения яблок, и необходимость отдохнуть от этого процесса и лечь в спячку до следующей трапезы. Столкновение с пеньком не является смертельным для змеи, но это приводит к тому, что змея обижается на этот лес и не хочет больше собирать в нем яблоки.

Для реализации выбрана VS при этом предполагается, что она будет реализована на языке C++ с использованием WinAPI, что позволит быть игре маленькой и не требовать большого количества ресурсов. Управление змейкой будет происходить путем помещения курсора на место на поле, куда змейка должна ползти, при этом она сама повернется и поползет в указанном направлении. С помощью нажатия на пробел можно установить в игре паузу, если необходимо по некоторым причинам отвлечься от игры.