Мобильная версия сайта | |||||||||
[Главная] | [Новости] | [Статьи] |
[Проекты] |
[Ссылки] |
[Автор] |
||||
[Архив новостей] | |||||||||
[Форум] | на форуме можно задать вопрос, посмотреть ответы на часто задаваемые вопросы | ||||||||
Здравствуйте! Вы попали на информационно-образовательный сайт посвященный информатике, информационным технологиям и компьютерным играм. Подробнее о целях и задачах сайта в разделе Главная. [English version of this page here...] | |||||||||
[Базовые уроки по DirectX] [Основы DirectMusic на Delphi] [Основы DirectInput8 на Delphi] [Основы DirectSound8 на Delphi] | |||||||||
[Разработка компьютерной игры] [Пример игры Donuts3D] [Delphi DirectX] | |||||||||
Эмулятор электронной игры Электроника ИМ-02 "Ну, Погоди!" | |||||||||
скачайте полную версию игры, зарегистрируйтесь и получите бесплатно полный исходный код игры для компиляции в delphi 7 или 2006 и уроки delphi directx 8.1 содержащие статьи по созданию собственной 2D/3D игры в среде delphi directx | |||||||||
Урок 6 Игровая логика | |||||||||
О том, что потребуется для данного урока читайте в основном разделе - уроки delphi directx 8.1 | |||||||||
Далее у читателя подразумевается наличие базовых знаний языка Delphi. | |||||||||
[назад] [страница 1] [далее] [к содержанию] | |||||||||
Игровая логика - это формализованный в коде набор игровых идей, которые составляют игровой геймплей. В игре "Ну, Погоди!" игровая логика сводится к следующему алгоритму, выраженному в словесной форме - игрок должен управлять положением волка, располагая его в одном из 4х возможных. С лотков катятся яйца. По достижении конца лотка яйца падают, если у этого лотка не стоял волк, при этом выглядывающий из окошка заяц вызывает появление из разбитого яйца бегущего цыпленка. Отсутствие зайца приводит к полному разбиванию яйца. За пойманные яйца начисляются призовые очки, за разбитые - штрафные. Бегущему цыпленку соответствует пол-штрафного очка, полностью разбитому яйцу - 1 штрафное очко. Игра продолжается до 3 штрафных очков или до троекратного набора 999 очков. В последнем случае отображается поздравительный текст и небольшой мультфильм. |
|||||||||
Теперь посмотрим на код, который должен реализовать описанную логику - в методе TD3DGameApp.UpdateInput изменение положения волка происходит следующим образом {...} if
PressButton in m_DXInput.States //панели путем наведения на неё указателя мыши и нажатия левой кнопки мыши {...} if
LeftUpCatch in m_DXInput.States then begin //т.
к. на больших скоростях игры потребуется прямое управление {...} Далее текущее положение волка заносится в специальную переменную - Это происходит в реализации метода TD3DGameApp.FrameMoveGameSituation - //положение
волка и далее - //если
игра не остановлена из-за разбитого яйца
//появление нового яйца на лотке
//качение яиц по лоткам
//появление зайца из окошка
//счетчик изменения темпа игры CrashEggs; //разбивание яиц, бег цыплят
|
|||||||||
Реализацию показанных методов Вы можете посмотреть в исходном коде игре "Ну, Погоди!". Как видим игровая логика тесно взаимосвязана, с тем, что происходит на экране и собственно для этого и предназначена - управлять игровым процессом. Значит реализовав игровой процесс мы тем самым создаем игровую логику нашей игры. |
|||||||||
Переходим к практическим упражнениям. | |||||||||
Используя код приложения из предыдущего - 5 урока - GameClasses_src попробуйте реализовать такой простейший игровой процесс: на экране выводится какая-либо картинка, поверх ее игровой курсор в виде прицела, перемещая указатель мыши мы тем самым перемещаем прицел, левая кнопка вызывает выстрелы, при этом капли жидкости попадают на картинку |
|||||||||
В законченном виде это уже реализовано в проекте "В плену желаний". Можете скачать и посмотреть, но обязательно попробуйте реализовать это сами в качестве практики. | |||||||||
В ходе реализации плена желаний я разрешил одну логическую ошибку, в результате которой код, отвечающий за формирование рельефа и перемещение по нему персонажа из примера 3D-игры Scene2Game будет работать корректно. Это полноценный пример по построению сложной игровой 3d-сцены с анимированными персонажами, игровыми панелями и прочими атрибутами. Пример также способен отображать рельеф и перемещать персонажей по нему, но для этого его немного надо доработать. Можете попробовать сами. Для компиляции примера понадобится библиотека delphi directx. |
|||||||||
Особенности примера: - вывод 9 зон земной поверхности и объектов на ней (деревья), возможно построение сцены по данным файла - карты; - свободная и привязанная к персонажу камера (переключение клавишей [V]); - переключение между персонажами [пробел]; - анимированные персонажи (хотьба, прыжки, падение); управление персонажем j, k, l, i - игровые панели - жизни, сила броска; - падающие с неба предметы (кубики) и взаимодействие с ними - при подбегании к кубику он начинает медленно взмывать в воздух, при падении на персонажа персонаж получает повреждения; - поиск ближайших кубиков, показ их стрелками; - рассчет траекторий полета (не доделано); |
|||||||||
В завершение данного урока хотелось бы обратить Ваше внимание на реализацию алгоритма постепенного нарастания темпа в игре "Ну, Погоди!". Для этого загляните в реализацию метода TD3DGameApp.IncreaseGameSpeed разобравшись с тем, как он работает, а также учтя тот важный момент, который применяется для того, чтобы игрок сумел поймать катящиеся яйца со всех лотков, Вы возможно сможете предложить собственный вариант его реализации, еще более близкий к реальной электронной игре "Ну, Погоди!" |
|||||||||
[назад] [страница 1] [далее] [к содержанию] | |||||||||
по всем вопросам пишите на megainformatic@mail.ru или оставьте сообщение на форуме | |||||||||
Обновления
и новости о развитии Delphi DirectX проекта http://www.megainformaticsite.pochta.ru http://www.megainformatic.boom.ru http://www.megainformatic.narod.ru
|
|||||||||
Cвои пожелания, вопросы или заметки отправляйте на: megainformatic@mail.ru или пишите на форуме |
|||||||||
Обмен ссылками | |||||||||
|
|||||||||
(с) МЕГА ИНФОРМАТИК 2006-2009 | |||||||||