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

Меню реализовано кнопками, которые представляют из себя окна с предопределенным классом button.

Все остальные элементы  реализованы выводом графической информации в клиентскую область главного окна. Рассмотрим, что из себя представляет каждый из объектов:

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

Меню представляет собой 5 кнопок расположенных в верхнем правом углу.

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

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

Змея состоит из головы и хвоста. Идея головы взята из игры Packman и немного модифицирована: она состоит из постоянно открывающегося и закрывающегося рта, который фактически представляет из себя прозрачный сектор, и глаза, который расположен сверху рта. Хвост, который у змеи фактически является туловищем сделан по идее традиционных версий игры, а именно состоит из некоторого числа сегментов, одинаковой длинны но с переменной толщиной, увеличивающейся к голове и уменьшающейся к хвосту. Цвет сегментов постепенно изменяется с зеленого к желтому, и обратно, образуя некое подобие полос. При поглощении змеей яблока, смоделировано образование утолщения, которое соответствует проглоченному яблоку, и перемещается до конца хвоста, постепенно уменьшаясь в результате переваривания яблока. Когда остаток яблока доходит до хвоста, то общая длинна змеи увеличивается. В процессе поглощения яблока начисляются очки. Соответственно чем длиннее змея, тем дольше яблоко поглощается, и тем больше очков игрок получает за каждое следующее проглоченное яблоко.