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

·  INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)

является оконной процедурой окна «О программе». Она обрабатывает только события создания окна и его закрытия.

         Рассмотрим теперь принцип взаимодействия реализованных классов. Для этого разделим  их по основным функциям.

         Для обновления объектов системы вызывается метод Move класса Snake, в котором мы определяем, насколько должна проползти змея с момента предыдущего шага. Это осуществляет обеспечение одинаковой скорости движения змеи на компьютерах с разной мощностью. Затем осуществляется передвижение каждого сегмента тела на определенное расстояние к голове по тому же маршруту, по которому передвигалась сама голова, на этом этапе мы добавляем очки за каждое яблоко, находящееся в пищеводе, и если очков достаточно для перехода на следующий уровень, то вызываем соответствующий метод Next класса Level. Потом производится определение нового положения головы в зависимости от положения курсора, в этот момент также добавляется эффект извивания змеи. Далее определяем? поглотилось ли полностью хоть одно из проглоченных яблок, если да то удлиняем змею. Затем мы проверяем не столкнулась ли голова с каким либо объектом. Если она столкнулась с препятствием или с телом, то вызывается метод Lose класса View, где происходит реинициализация данных в связи с тем что после проигрыша игра начинается заново, а также отмечается что при перерисовке выведется табличка с сообщением о проигрыше. Если голова змеи коснулось яблока, то мы формируем в этом месте тела змеи утолщение, которое соответствует яблоко в пищеводе тела змеи, а также помещаем новое яблоко где-то на новом месте на поле.

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

         Размещение нового яблока аналогично размещению нового пня, т.е оно не должно появится на пне, или под телом змеи.