ria pc game
translate to English   translate to Chinese
fle game engine - движок для создания игр
fle game engine - движок для создания игр


Balls and holes PC game / Balls and Holes PC игра
Вакансии
Игродельня
Сегодня
23 февраля 2019 17:50
Вход Регистрация Забыли пароль ?

megainformatic - Мастер-класс: Создание модели и текстуры Коммандного Центра (как в StarCraft 2) Часть 4
        Мастер-класс: Создание моде
подробнее...

Теги создание сайтов, создание игр, дизайн, игры, информатика, уроки photshop, php, c++, музыка, delphi, cms, робосайт
Статьи сайта
megainformatic - Настольная игра "Веселый Буквоежка"

megainformatic - Уроки delphi directx 8.1

megainformatic - Уроки delphi directx 8.1 - Урок 1 - Введение в Delphi DirectX 8.1. Создание шаблона стартового приложения.

megainformatic - Уроки delphi directx 8.1 - Урок 1 - Введение в Delphi DirectX 8.1. Создание шаблона стартового приложения. Страница 2

megainformatic - Урок 2 Создаем и обрабатываем команды меню.

megainformatic - Урок 2 Создаем и обрабатываем команды меню. Страница 2

megainformatic - Урок 3 Оконный и полноэкранный режимы работы D3D-приложения. Управление игрой средствами DirectInput8

megainformatic - Урок 3 Оконный и полноэкранный режимы работы D3D-приложения. Управление игрой средствами DirectInput8 - Страница 2

megainformatic - Урок 3 Оконный и полноэкранный режимы работы D3D-приложения. Управление игрой средствами DirectInput8 - Страница 3

megainformatic - Урок 4 Построение класса приложения

megainformatic - Урок 4 Построение класса приложения - Страница 2

megainformatic - Урок 5 Построение классов игровых объектов и других необходимых классов

megainformatic - Урок 5 Построение классов игровых объектов и других необходимых классов - Страница 2

megainformatic - Урок 6 Игровая логика

megainformatic - Заметки по joomla - JFolder::create: Path not in open_basedir paths. Что это?

megainformatic cms express files - Добавление статей на сайт под управлением megainfromatic cms express files

megainformatic - Урок 7 2D-анимация

megainformatic - Урок 8 Загрузка/Сохранение текущей игры, режим паузы, режимы часов/будильника, запуск браузера Internet Explorer для показа сайта разработчика и других интернет-ресурсов

megainformatic - Урок 9 Тестирование и отладка приложения

megainformatic - Мои Музыкальные Миры

megainformatic - уроки Photoshop free

megainformatic cms express

megainformatic cms express

megainformatic cms express

megainformatic cms express files

megainformatic - Методы создания растровых изображений в Adobe Photoshop

megainformatic - Создание фотореалистичной текстуры травы

megainformatic - Рабочее пространство Adobe Photoshop

megainformatic - Бесшовные (тайловые) текстуры

megainformatic - Создание изображений огня, воды, неба

megainformatic - Создание текстур горных пород и суши (урок 5)

megainformatic - Рисование персонажей (урок 6)

megainformatic - Рисование фона (урок 6 часть 2)

megainformatic - Рельефные изображения

Добавление статей на сайт под управлением megainformatic cms express

megainformatic - Воспроизведение файлов в форматах it, xm, s3m, mod

megainformatic - Воспроизведение файлов в форматах it, xm, s3m, mod - страница 2

megainformatic - Воспроизведение в игре музыки в формате XM

megainformatic - Воспроизведение файлов в формате OGG Vorbis

megainformatic - игра "Веселый Буквоежка" - инструменты разработки

megainformatic - Игра "Веселый Буквоежка" - история создания проекта

megainformatic - Как анимировать паука ?

megainformatic - Уроки Photoshop

megainformatic - Купить Уроки Photoshop - Чудеса

megainformatic - Купить Уроки Photoshop - Рисуем и Анимируем

megainformatic - Эмулятор игры Ну, Погоди!

сайт megainformatic - Говорящий Комикс Веселый Буквоежка

megainformatic - Что нужно для создания собственного сайта ?

megainformatic - Моделируем девушку в 3d используя 3ds max

megainformatic - Уроки Fruity Loops Studio - пишем свою музыку

megainformatic - Уроки Fruity Loops Studio - пишем свою музыку - урок 1 - Быстрый старт

megainformatic - Сброник статей по дизайну и компьютерной графике. Обзор.

megainformatic - Уроки 3d на delphi directx - Вывод Заставки

Добро пожаловать в систему управления сайтом megainformatic cms

megainformatic - Создание эскиза и макета страницы сайта

megainformatic - Верстка созданного макета

подробнее

Пишем свою соц. сеть - модуль предложений для webjob - часть реализации для личного кабинета

Доброго времени суток, продолжаем наше погружение в разработку социальной сети.

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

Теперь перейдём к практике, т. е. написанию кода.

Прежде всего добавляем пункт меню в личном кабинете, который будет отвечать за показ раздела ПРЕДЛОЖЕНИЯ.

В модулях всех ролей, например admin.php, employer.php и других прописываем примерно такой код -

case 'predlojenia': {
include_once "predlojenia.php";
break;
}

Также добавляем соответствующий пункт меню в личном кабинете.

<a href="employer.php?rdk=predlojenia">Предложения</a>

Теперь собственно переходим к реализации модуля predlojenia.php для личного кабинета.

Весь код я думаю приводить смысла нет, поэтому ограничусь только общей схемой -

///////////////////////////////////////////////////////////////
//
// функции
//эта часть модуля будет содержать все необходимые функции для внутреннего использования в пределах самого модуля.

//например так -

//элементы управления предложениями
function show_list_ctrl_elems()
{
$view = '<table width="100%" cellpadding="0" cellspacing="0" border="0">';

$view .= '<tr>
<td width="90"> </td>
<td width="90"> </td>
<td> </td>
</tr>';

$view .= '<tr>
<td><input type="submit" name="new" value="Создать"></td>
<td><input type="submit" name="change" value="Изменить"></td>
<td><input type="submit" name="del" value="Удалить"></td>'.
'</tr>';
$view .= '</table>';

return $view;
}

///////////////////////////////////////////////////////////////
//
// исполнение

//эта часть содержит вызовы описанных функций и связующую логику.


include_once "entry.php"; //подключаем модуль проверки залогиненности в личном кабинете
include_once "predlojenia_outer.php"; //подключаем модуль внешних функций, которые будут использованы и во фронтальной части сайта

echo "<div class='container' style='position: relative; z-index: 1;' align='center'>";

//выводим меню в зависимости от роли
switch ( $role_name )
{
case 'admin': {
include_once "admin_menu.php";
break;
}

case 'employer': {
include_once "roles/employer/menu.php";
break;
}

}

echo "ПРЕДЛОЖИТЬ СВОЙ ПРОЕКТ - ".$role_name."<br><br>

<div style='float: left; width: 100%; position: relative; z-index: 1;'>";

$p_list = load_p_list('../');
$p_list_count = count($p_list);
$p_list_view_tbl = show_p_list_tbl($p_list);

echo "<table width='100%' cellpadding='0' cellspacing='0' border='0' bgcolor='#dddddd'>
<tr>
<td colspan='3'>Добро пожаловать в ".$system_name." !<br>Вы можете создать или изменить свой проект (предложение)<
br><br></td>
</tr>

<tr>
<td> </td>
<td> </td>
<td> </td>
</tr>";

$form_action = '';
$p_properties_page = '';
//echo do_action_with_p_list($form_action, $p_properties_page);

switch ( $form_action )
{
case 'new':
case 'change':
{
echo $p_properties_page;
break;
}

default: {
echo " <form name='".$module."' id='".$module."' action='".$module_name."?module=".$module."' method='post'>";

echo show_list_ctrl_elems();
echo $p_list_view_tbl;

echo " </form>";
}
}

echo "<table width='100%' cellpadding='0' cellspacing='0' border='0' bgcolor='#dddddd'>
<tr>
<td><a href=\"logout.php\">Выйти</a></td>

<td> </td>
<td> </td>
</tr>

</table>
</div>";
echo "
</div>
";

Собственно это был прототип, описывающий все базовые элементы модуля предложений.

Вам остается только детализировать логику выгрузки/загрузки данных в файл или базу данных.

Здесь я их приводить не буду в целях экономии времени.

Но если они Вас интересуют - обращайтесь

Вы уже в курсе, что я могу предложить Вам сразу готовое решение, которое реализовано на сайте -

http://webjob.megainformatic.ru

И все-таки спешу Вас обрадовать - в следующей статье Мы с вами рассмотрим реализацию модуля для хранения предложений в csv-файле.

Таким образом мы с Вами рассмотрим написание модуля внешних функций, которые будут вызываться в приватной (личный кабинет) и фронтальной частях сайта.

подробнее

Обновленная версия Эмулятора игры Электроника ИМ-02 Ну, Погоди ! версия 1.20 от 2.03.2017


Было замечено, хотя правда не сразу, некоторое размытие картинки. Причем в более старой
версии написанной еще на delphi 7 directx 8.1 этого не наблюдается.
А в версии 1.10 для c++ directx 9 наблюдается.

Теперь эта проблема исправлена. В версии 1.20 для c++ directx 9 картинка также стала ясной
и четкой.

Для сравнения приведены скриншоты.

Изображение в новой обновленной версии 1.20

Эмулятора игры Электроника ИМ-02 Ну, Погоди ! версия 1.20 от 2.03.2017





Изображение в версии 1.10

Эмулятора игры Электроника ИМ-02 Ну, Погоди ! версия 1.10





     
  Эмулятор электронной игры Электроника ИМ-02 "Ну, Погоди!", версия 1.10  
     
  Эмулятор электронной игры Электроника ИМ-02 "Ну, Погоди!"  
 

Стоимость: 500 руб.

 
     
  Скриншоты Электроника ИМ-02 Ну,Погоди! эмулятор

Электроника ИМ-02 Ну,Погоди ! эмулятор - основной экран
Электроника ИМ-02 Ну,Погоди ! эмулятор - игровой процесс
Электроника ИМ-02 Ну,Погоди ! эмулятор - Призовой мультфильм при наборе трижды по 999 очков
Электроника ИМ-02 Ну,Погоди ! эмулятор - меню опций
Электроника ИМ-02 Ну,Погоди ! эмулятор - окончание игры при наборе 3х штрафных очков


 
     
   
     
  Данная версия внешне ничем не отличается от 1.00, изменения в основном внутренние - версия 1.10 была полностью переработана под DirectX9c и переписана на C++, объем дистрибутива сократился с 2,45 до 2,09 Mb  
     
 

Эмулятор электронной игры, которая была популярна в конце 80-х-начале 90-х
годов 20 века - Электроника ИМ02 "Ну, Погоди!".

Игра на внимание и быстроту реакции.

Смысл игры: управляя волком ловить катящиеся с 3х или 4х лотков яйца и набрать
максимум очков. Если не поймать яйцо в корзинку оно разобъется. При этом
игрок получает 1 или 0,5 штрафных очка в зависимости от того, выглядывал ли
в этот момент из окошка заяц. Если заяц выглядывал, то волк как будто бы
отвлекся на него, поэтому штраф меньше.

 
     
  системные требования: Windows 98SE/2000/XP SP2/DirectX 9c/Celeron 997/128 Mb RAM/32 Mb Video/DirectX-sound card/около 5 Mb HDD/клавиатура, мышь.  
     
  О разработке данной игры - купите полную версию игры и получите бесплатно полный исходный код игры для компиляции в delphi 7 или 2006 и уроки delphi directx 8.1 содержащие статьи по созданию собственной 2D/3D игры в среде delphi directx  
     
 

Игра продолжается до трех штрафных очков.

Особенности эмулятора:

- полная аналогия электронной игры "Ну, Погоди!";

- режимы часов и будильника;

- дополнительные возможности, которых не было в оригинальной игре:

- возможность паузы в игре;
- сохранение текущей и загрузка ранее сохраненной игры;
- при наборе 999*3 очков долгожданный сюрприз: Вас ждет небольшой мультфильм.

 
     
  Эмулятор электронной игры Электроника ИМ-02 "Ну, Погоди!"  
 
 
     
 

Режимы игры и режимы эмулятора:

Кнопка игра А - яйца одновременно могут скатываться с любых 3-х лотков;
Кнопка игра Б - яйца одновременно могут скатываться с 4-х лотков;
Кнопка Время - режим показа текущего времени

Кнопка Часы - не используется
Кнопка Будильник - возможность установки подачи сигнала будильника в заданное время

Режимы часов и будильника можно включать в режиме Рестарта (много волков, яиц и прочего на экране), после проигрыша. Во время работы в режимах игра А или игра Б кнопки Время и Будильник не реагируют (это имеет место в оригинальном электронном варианте игры). Напротив даже во время начатой игры игру можно запустить снова - кнопки игра А, игра Б реагируют стартом новой игры даже во время начатой игры (этого не было в оригинальном электронном варианте, но сделано для удобства).

Меню эмулятора:

Игра > Перезапуск - ре-старт игры
Игра > Выход - выход из игры
Опции > Пауза - пауза в игре
Опции > Сохранить - сохранение текущей игры в выбранный файл
Опции > Загрузить - загрузка ранее сохраненной игры

Замечание: перед сохранением или загрузкой лучше включить режим паузы в игре (клавиши P (английская), F2 или пункт меню Опции > Пауза, если этого не сделать, то поскольку игра может развиваться молниеносно, Вы просто не успеете адекватно отреагировать на загруженную ситуацию.

Опции > Подсказка - выводить подсказку о нажатии F1

Опции > Показ FPS - выводить частоту кадров

Опции > Сложность - окно уровня сложности игры. Новый уровень сложности начинает работать только после старта новой игры.

? > Помощь или F1 - справка по управлению игрой

? > О игре - краткая справка о программе

? > Сайт МегаИнформатик - запуск браузера и показ основных проектов Мега Информатик


Управление игрой:

для нажатия нужной кнопки на эмулируемой панели электронной игры
используйте мышь.

кроме того, в качестве клавиш управления волком могут служить:
E O или 7 9
D K или 1 3 - на цифровой клавиатуре

Пауза в игре - F2 или P

Для сохранения и загрузки текущей игровой ситуации используйте Меню эмулятора.

Автор эмулятора: Синицин А.С.

 
     
  Эмулятор электронной игры Электроника ИМ-02 "Ну, Погоди!"  
 
 
     
  гарантийный талон  
     
 

Документальное подтверждение того, что автор приобрел игру "Ну, Погоди!" 14 мая 1990 года. Электронная игра была произведена на Калужском радиоламповом заводе им. 50-летия СССР 27 апреля 1990 года, заводской номер 212487.

Итак, это было 20 лет назад. Теперь игрушка снова обрела жизнь и Вы можете снова в нее играть.

 
     
подробнее

 
Создание компьютерных игр на основе DirectX в среде Delphi 6, 7
 
Основы DirectMusic на Delphi
 

Основы DirectInput8 на Delphi

Основы DirectSound8 на Delphi

 

Введение

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

Основными на сегодняшний день являются OpenGL и DirectX.

Итак, если Вы решились заняться освоением технологий DirectX в среде Delphi, то пришло самое время сделать первый шаг!

В данном сборнике представлены уже адаптированные под Delphi примеры. Так что Вы скоро сможете начать программировать DirectX даже не зная С++!!.

Если же Вы будете двигаться дальше, то Вам конечно понадобится оригинальный DirectX SDK, хотя бы версии 8.1 и хотя бы минимальные знания С++ (чтобы можно было самим адаптировать примеры из SDK на Delphi !).

Примеры даны для реализации в среде Delphi версий 6-7. Однако если у Вас отличная версия, то, скорее всего, Вам придется внести модификации в код. Но думаю, что это не составит большого труда, если учесть, что при ошибках компиляции Delphi подскажет Вам решения и Вы, покопавшись в Help'е сможете внести эти модификации :))

На сегодняшний день самым свежим является DirectX 9 SDK, содержащий Direct3D 10 (на момент чтения Вами этой статьи возможно еще свежее). Данный цикл примеров посвящен основам работы с DirectX 8.1 SDK (Software Developers Kit). Если Вы разберетесь с DX 8.1, то перейти на 9 не составит большого труда т.к. общие принципы останутся прежними. К тому же, в DX9 использование интерфесов DirectInput8 и DirectSound8 осталось практически без изменений, т.е. DI9 и DS9 не появилось!

Почему DirectX81 и Delphi?

Direct3D8

 

Базовые уроки

Вашему вниманию предлагаются 8 базовых уроков представляющих оригинальные уроки (1-6) взятые из DX SDK 8 и адаптированные к применению в Delphi 7.

Примечание: длинных описаний и пояснений к урокам пока не даю - все что здесь есть - это исходный код. Чтобы детально разобраться в технологии Вам понадобится DX SDK 8 или выше, Delphi 7 (или 6 или выше) и много много терпения и упорства.

Обзор уроков

 
 

Урок 1

Знакомит с концепцией написания приложений для работы с DirectX. Описываются принципы написания WinAPI приложений, способы обращения к арсеналу DirectX.

Урок 2

Ваше первое полноценное DirectX-приложение. В окне приложения изображается разноцветный треугольник.  
  для скачивания всех уроков нажмите кнопку СКАЧАТЬ!
Первый шаг
для скачивания всех уроков нажмите кнопку СКАЧАТЬ!
Шаг второй
 
           
 

Урок 3

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

Урок 4

На экране создается цилиндр. Показано использование материалов и источников освещения.  
  для скачивания всех уроков нажмите кнопку СКАЧАТЬ!
Посложнее
для скачивания всех уроков нажмите кнопку СКАЧАТЬ!
Следующий шаг
 
           
  Урок 5 Вращающийся цилиндр показан с наложением текстуры. Показано использование текстур.

Урок 6

На экране показана первая сложная модель – поверхность из набора треугольников (Mesh). Это модель тигра.

Используется наложение текстуры. Показано как загрузить модель из X-файла (икс-файла).

 
  для скачивания всех уроков нажмите кнопку СКАЧАТЬ!
Это уже интересно!
для скачивания всех уроков нажмите кнопку СКАЧАТЬ!
Еще интересней
 
     
 

Данные уроки основаны на оригинальных уроках из DX SDK 8. Они лишь адаптированы к применению в Delphi7. Адаптация выполнена автором или другими людьми (это указано в заголовках исходных файлов).

 
           
  Урок 7 Показана технология использования DirectX внутри стандартных VCL-приложений Delphi. Использование окна диалога для выбора файла произвольной модели (из X-файла). Урок 8

Слегка модифицированное приложение из урока 8 – показывает как можно изменять положение наблюдателя для лучшего обозревания модели.

О том как создавать X-файлы см. дополнения.

 
  для скачивания всех уроков нажмите кнопку СКАЧАТЬ!
VCL+DirectX!
для скачивания всех уроков нажмите кнопку СКАЧАТЬ!
Новые модели
 
           
  Урок 9 Данное приложение позволит Вам: а) загрузить какую-либо модель в x-формате (икс-формате); б) посмотреть каким образом реализуется сложное вращение (сразу по двум осям) - в методе SetupMatrices; в) узнать как можно добиться эффекта обозревания мира (3D-пространства модели) управляя положением наблюдателя (камеры). Это модифицированное приложение из урока 8 – следующий базовый шаг в изучении технологий DirectX и их применении в практике программирования на Delphi. Урок 10

Данный урок введет Вас в создание полноценного Direct3D8-приложения на Delphi 7. Библиотека исходного кода позволит Вам быстрее начать создавать 3D-приложения на Delphi. Особенности урока: 1) выбор адаптера и видеорежима; 2) работа с DX-файлами; 3) работа с шейдерами; 4) анимация; 5) пример подводной сцены; 6) особенности Delphi-кода под Direct3D8. Данный урок - хороший старт для дальнейшего изучения DX8 SDK в среде Delphi 7.

 
  для скачивания всех уроков нажмите кнопку СКАЧАТЬ!
Первый 3D-мир
для скачивания всех уроков нажмите кнопку СКАЧАТЬ!
Дельфин под водой
 
           
           
  Урок 11

Технология создания открытых 3D-пространств, billboarding (вращение 2D по отношению к наблюдателю). В качестве основы D3D-приложения используется расширяемая библиотека, которая служит основой всех примеров оригинального DX SDK (она входит в состав архива данного урока). Цель самого урока: познакомить с технологией вращения плоских изображений для создания иллюзии объема. Кроме того, параллельно дается пример создания простейшего открытого 3D-пространства.

Примечание!: Все примеры во время исполнения требуют наличия файлов времени исполнения - D3DX81ab.dll и DXErr81ab.dll, их Вы можете найти в архиве С ОБЩИМ КОДОМ (см. ниже).  
  для скачивания всех уроков нажмите кнопку СКАЧАТЬ!
Открытое пространство, иллюзия объема у плоских деревьев
     
           
  Уроки 1-11 в виде самораспаковывающегося архива - 1,72 Mb
[downloads:16]
Внимание!!! Для нормальной компиляции Вам потребуются заголовочные файлы -
[downloads:10]
 
    Важные замечания: если Вы компилируете приложение, а оно не компилируется, запускаете, а выдаются ошибки и т.п. - Вам нужно скачать папку с ОБЩИМ КОДОМ! Размер архива - 772 Кб. Данный архив (С ОБЩИМ КОДОМ) потребуется Вам как для компиляции примеров, так и для дальнейшей работы по разработке компьютерных игр на Delphi. Содержит библиотечные файлы времени исполнения D3DX81ab.dll, DXErr81ab.dll и все основные и дополнительные заголовочные файлы (Direct3D8, D3DX8, DirectInput8, DirectSound8 и т.д.)  
           
  Итак, 12 уроков по основам Direct3D8 преодолено, конечно это еще не завершение, а только начало, но теперь самое время перейти к изучению средств поддержки устройств ввода информации - клавиатуры, мыши, а также джойстиков, рулей и других игровых устройств, а также работе со звуком - все это описывается в разделах:  
           
 

Основы DirectInput8 на Delphi

Основы DirectSound8 на Delphi

 
Основы DirectMusic на Delphi
 

Дополнения:

Для конверсии 3ds-файлов (см. ниже) используйте стандартную утилиту conv3ds из пакета DX SDK 8. Местонахождение [Путь к Microsoft DX SDK]\Bin\xfiles

В DX SDK9 упростилась процедура конверсии файлов 3ds max в формат x. Для этого используется встраиваемый plug-in. Получить его можно с DX9 SDK или (чтобы не скачивать весь DX9 SDK!) здесь.

Замечания

По запуску откомпилированных приложений из туториала по DirectX

Если откомпилированное приложение не работает, скорее всего оно не может найти необходимые ему файлы: модель, текстуру.

Решение: просто переместите исполнимый файл в папку, где находятся все используемые модели и текстуры или используйте правильный путь для загружаемых файлов.

По экспорту файлов-моделей 3D Studio Max (5, 7 версии) в формат х при помощи утилиты conv3ds (из папки bin\xfiles пакета DirectX SDK)

Прежде чем конвертировать файл в х-файл (икс-файл) нужно сначала в 3D Max’е экспортировать его (команда Export) в формат 3ds. Это связано с тем, что при обычном сохранении модели сохраняются с расширением max. Полученный файл с расширением 3ds можно конвертировать в х-файл. В DX9 SDK эта процедура упростилась! (см. выше). 

 
 
     
  Веселый Буквоежка - игра  
     
 

Как создать игру ? - Программируем сами.

Рассмотрение программирования игр под DirectX 9c на C++ с использованием среды разработки MSVS 2005 или выше.

 
     
  [содержание] [назад] [страница 4] [далее]  
     
  Введение в 2d-игры - создаем заставку для игры  
     
  Итак, мы создали основу нашей будущей игры. Теперь займемся изучением принципов вывода и использования статичных и анимированных изображений из файлов jpg и tga на примере вывода титульной заставки игры.  
     
  пример вывода титульной заставки игры  
     
 

Помимо этого мы рассмотрим как создать класс приложения и все необходимые для работы дополнительные классы, в частности мы покажем объявление классов:

CGameAppLoader

CD3DGameApp

и рассмотрим как применяется класс

CD3D9Sprite для работы со спрайтами и статичными 2d-изображениями.

 
     
  Вы воочию увидите как создаются и применяются данные классы.  
     
 

Классы CGameAppLoader, CD3DGameApp объявляются в заголовочном файле Fle.h

Класс CD3D9Sprite полностью реализован в модулях D3DGUI.h и D3DGUI.cpp и представляет класс для использования 2d-изображений и спрайтов в d3d-приложениях и играх, полностью его код Вы найдете в исходном коде, если закажете ПОЛНЫЙ ИСХОДНЫЙ КОД игры Веселый Единственный Буквоежка за 200 рублей.

 
     
 
 
 
     
  Здесь и далее мы рассмотрим код указанных классов только с точки зрения необходимых нам для решения задач данного урока возможностей, если Вы хотите увидеть их ПОЛНЫЙ ИСХОДНЫЙ КОД - закажите его.  
     
  Параллельно мы коснемся основ использования DirectInput8, т. к. он на понадобится для управления нашей игрой.  
     
 

В модуле Fle.h

в самом начале файла после строки -

#include "resource.h" // main symbols

набрать следующий код -

#include <d3d9.h>
#include <d3dx9.h>

#include "D3DGUI.h"
#include "diutil.h"

#include "AdventureGame.h"

#include "d3dfont.h"

описать возможные состояния загрузчика -

// загрузчик


enum LOADINGSTATES{
LOADSTATE_BEGINSTARTLOGO,
LOADSTATE_STARTLOGO,
LOADSTATE_ENDSTARTLOGO,

LOADSTATE_BEGINMENU,
LOADSTATE_MENU,
LOADSTATE_ENDMENU,

LOADSTATE_BEGINADVENTUREINTRO,
LOADSTATE_ADVENTUREINTRO,
LOADSTATE_ENDADVENTUREINTRO,

LOADSTATE_BEGINLOADADVENTUREGAME_LOCTEX,
LOADSTATE_ADVENTUREGAME_LOCTEX,
LOADSTATE_ENDADVENTUREGAME_LOCTEX,

LOADSTATE_BEGINLOADADVENTUREGAME_CREATURE,
LOADSTATE_ADVENTUREGAME_CREATURE,
LOADSTATE_ENDADVENTUREGAME_CREATURE,

LOADSTATE_BEGINLOADADVENTUREGAME_SUBJECTS,
LOADSTATE_ADVENTUREGAME_SUBJECTS,
LOADSTATE_ENDADVENTUREGAME_SUBJECTS,

LOADSTATE_BEGINLOADADVENTUREGAME_SUBJECTS_PLATES,
LOADSTATE_ADVENTUREGAME_SUBJECTS_PLATES,
LOADSTATE_ENDADVENTUREGAME_SUBJECTS_PLATES,

LOADSTATE_BEGINLOADADVENTUREGAME_SUBJECTS_PLATES_LETTERS,
LOADSTATE_ADVENTUREGAME_SUBJECTS_PLATES_LETTERS,
LOADSTATE_ENDADVENTUREGAME_SUBJECTS_PLATES_LETTERS,

LOADSTATE_BEGINLOADADVENTUREGAME,
LOADSTATE_ADVENTUREGAME,
LOADSTATE_ENDADVENTUREGAME

};

и сам загрузчик -

class CGameAppLoader
{
public:
CGameAppLoader();
~CGameAppLoader();
//поля и методы загрузчика

CPtrArray* m_pLoaderTexturesArray;

void Start(CPtrArray* TxArray, LPCTSTR TexFilesPath, LPCTSTR TexFilesListTxt);
void LoadingProcess(CPtrArray* TxArray, LPCTSTR TexFilesPath,
LPD3DXSPRITE pSprite = NULL);
void LoadingResProcess(CPtrArray* TxArray, LPCTSTR TexFilesPath,
LPD3DXSPRITE pSprite);
void LoadingLtProcess(CPtrArray* TxArray, LPCTSTR TexFilesPath,
LPD3DXSPRITE pSprite = NULL);
void End();
void NextLoadStage();


//вывода ротора

float m_fRotorAngle;

void LoadLoaderTextures();
void DrawLoaderScreen();

void RestoreLoaderScreen();
void InvalidateLoaderScreen();
void FreeLoaderTextures();
void AnimateRotor();


void RenderLoaderText();


LPD3D9FONT m_pLoaderFont_2d;
void CreateFont_2d();
void FreeFont_2d();
void RestoreFont_2d();
void InvalidateFont_2d();
void RenderLoaderText_2d();


void Load1GameTexture(CPtrArray* TxArray, LPCTSTR TexFilesPath,
int* CurrentFileIndex, LPD3DXSPRITE pSprite);
void Load1GameTextureRes(CPtrArray* TxArray, LPCTSTR TexFilesPath,
int* CurrentFileIndex, LPD3DXSPRITE pSprite);
void Load1LetterPlate(CPtrArray* TxArray, LPCTSTR TexFilesPath,
int* CurrentFileIndex, LPD3DXSPRITE pSprite);


void OpenGameTexturesListFile(/*CPtrArray* TxArray, */LPCTSTR TexFilesPath,
LPCTSTR TexFilesListTxt);
void CloseGameTexturesListFile();

CStdioFile* m_pTextFile;

//статистика загрузки
int m_iCurrentIndex;
float m_fLoadingProgressStep;
float m_fLoadingProgress;
int m_iFilesNum;
TCHAR m_sTexFileName[MaxPath2];
char m_chTexFileName[MAX_PATH];

//смена загружаемых ресурсов
DWORD m_dwLoaderState;

void Loading();
int CountNumberOfFiles();

float m_fRotateProcessTimeCounter;


};

после строк -

//название приложения
#define GameAppName L"Веселый Буквоежка"

добавить строки -

#define ParamDelimeter ';'

#define GAMEERR_NOINPUT 0x00000006
#define GAMEERR_OUTOFMEMORY 0x00000007


// файл списка текстур загрузчика
#define TexturesPath L"\\Media\\textures\\"
#define LoaderTexFilesPath L"\\Media\\textures\\initial\\"
#define LoaderTexFilesTxt L"\\Media\\textures\\initial\\loader_texlist.txt"

#define LoaderFontFileName L"\\Media\\fonts\\BALTICA.TTF"
#define LoaderFontHeight 18
#define LoaderFontWidth 10
#define LoaderFontRescaleCorrect 1.0f

#define LoaderFont2DFileName L"\\Media\\fonts\\MSSansSerif.tga"
#define LoaderFont2DFileName_CoordData L"\\Media\\fonts\\MSSansSerif.dat"

#define LoaderBackTexIndex 0
#define LoaderRotorTexIndex 1
#define LoaderStatorTexIndex 2

#define RotateProcessTimeLimit 0.01f

#define RotationStep D3DX_PI * 0.1f

#define RotationSpeed 3.0f

//ресурсы стартовой сцены (логотип, заставка, начало)
#define StartupLogoFilesPath L"\\Media\\textures\\startlogo\\"
#define StartupLogoTexFilesTxt L"\\Media\\textures\\startlogo\\start_texlist.txt"

объявляем класс CD3DGameApp -

 

class CD3DGameApp
{

public:

HWND m_hWndMain;

DWORD m_dwScreenWidth; // разрешения для полноэкранных режимов
DWORD m_dwScreenHeight;

float m_fResolutionRescale;

bool m_bIsActive; // активность приложения
bool m_bDisplayReady; // признак инициализации класс устройства отображения

FLOAT fAspectRatio;

BOOL m_bMouseVisible; // видимость указателя мыши

DWORD m_dwAppState; // текущее состояние приложения
DWORD m_dwAppStateAfterLoad; // состояние после завершения экрана
// загрузки

// Объекты Direct3D

LPD3DXSPRITE m_pSprite;

bool m_bShowFPSOn;

bool m_bPaused;

float m_fElapsedTime;


CD3DGameApp();

HRESULT FrameMove();
HRESULT Render();

CGameAppLoader* m_pLoader; //загрузчик игровых ресурсов

public:
void GetStrParam(CString* aCurrentStr,
int *aCurrentCharNum, CString* ParamStr);

void ReadFileParam(const CString* ParamStr,
CString* Name, D3DXVECTOR3* Pos, D3DXVECTOR2* Scale, bool* bAnimParam = NULL,
int* Width = NULL, int* Height = NULL, int* TexOffsetX = NULL,
int* TexOffsetY = NULL, int* FramesPerLine = NULL, float* fMaxFrame = NULL,
float* Delay = NULL);

void LoadGameTextures(CPtrArray* TxArray, LPCTSTR TexFilesPath,
LPCTSTR TexFilesListTxt);

void FreeGameTextures(CPtrArray* TxArray);


void CleanupAndDisplayError(DWORD dwError);

void Cleanup3DEnvironment();

HRESULT InvalidateDisplayObjects();
HRESULT DestroyDisplayObjects();
HRESULT RestoreDisplayObjects();

void CalcResolutionRescale();

//поля и методы стартовой сцены (логотип, название, начало)

CStartLogo* m_pStartLogo;

void LoadStartRes();

//поля и методы меню

CGameMainMenu* m_pGameMenu;

void LoadMenuRes();

//поля и методы игрового режима Приключение

CIntroComics* m_pIntroComics;
void LoadIntroComics();

CAdventure* m_pAdventure;
void LoadAdventure();
void ContinueAdventure();


// Функции ввода
HRESULT CreateInputObjects();
void DestroyInputObjects();
void UpdateInput( UserInput* pUserInput );

// Объекты DirectInput
CInputDeviceManager* m_pInputDeviceManager; // Класс для управления устройствами // // DInput
DIACTIONFORMAT m_diafGame; // Формат действий для геймплея

UserInput m_UserInput; // структура для хранения ввода от пользователя

HRESULT InputAddDeviceCB( CInputDeviceManager::DeviceInfo* pDeviceInfo, const DIDEVICEINSTANCE* pdidi );
static HRESULT CALLBACK StaticInputAddDeviceCB( CInputDeviceManager::DeviceInfo* pDeviceInfo, const DIDEVICEINSTANCE* pdidi, LPVOID pParam );
BOOL ConfigureInputDevicesCB( IUnknown* pUnknown );
static BOOL CALLBACK StaticConfigureInputDevicesCB( IUnknown* pUnknown, VOID* pUserData );


void PlayGameSound(int Index, CPtrArray* SoundsArray);
HRESULT LoadSoundList(CPtrArray* SoundsArray,
LPCTSTR SoundsResourcePath, LPCTSTR SoundFilesList);
void FreeSoundList(CPtrArray* SoundsArray);

HRESULT CreateSoundObjects();
void DestroySoundObjects();

void TestGlobalAppState();

};

__declspec(selectany) CD3DGameApp g_d3dApp;

 
     
  Я намеренно не привожу здесь все комментарии, многое Вам будет понятно исходя из дальнейшего изучения кода. Код приведенный выше мы частично реализуем, остальное при желании Вы найдете в ПОЛНОМ ИСХОДНОМ КОДЕ игры.  
     
 

Чтобы не пугать Вас обилием кода на данной странице отсылаю Вас к ПОЛНОМУ ИСХОДНОМУ КОДУ.

Здесь мы рассмотрим как выводится 2d-изображение на экран.

 
     
 

Вот фрагмент кода из метода void CStartLogo::DrawIntroStoryBackScreen()

LPD3D9SPRITE spr = GetElement(IntroStoryScreen); //получаем объект спрайта по его // //индексу IntroStoryScreen

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

//это выполняется здесь

D3DXVECTOR2 pt1;
Vector2Screen(&D3DXVECTOR2(
m_fIntroScr_x1,
IntroScr_y1),
&pt1);

pt1.x *= spr->m_fResolutionRescale; //пересчетный коэффициент применяется для // // // //корректного вывода
pt1.y *= spr->m_fResolutionRescale;

// выводим 2d-изображение в указанную позицию x, y, z; x и y - пиксельные координаты, // но представленные типом float; с данным масштабом xScale, yScale и с данной // // // // полупрозрачностью alpha

spr->Draw2(pt1.x, pt1.y, spr->m_Position.z,
spr->m_Scale.x * spr->m_fResolutionRescale,
spr->m_Scale.y * spr->m_fResolutionRescale,
spr->Alpha );

 
     
  Но прежде нужно загрузить нужное изображение из файла, это делается следующим образом -  
     
 

LPD3D9SPRITE Sprite;

HRESULT hr;

Sprite = new CD3D9Sprite(); // создаем объект для работы со спрайтами и 2d-// // // // // // изображениями

hr = Sprite->LoadTextureFromFile(
DXUTGetD3D9Device(), pSprite, TexFileFullName ); // выполняем загрузку изображения из // // файла в объект, pSprite - это LPD3DXSPRITE - интерфейс для работы спрайтов, // // // // TexFileFullName - полное имя файла (включая путь) загружаемого изображения

 
     
 

После использования - при освобождении ресурсов приложения нужно освободить ресурсы, выделенные для использования объектов, это делается так -

SAFE_DELETE(Sprite);

 
     
 

Возникает вопрос: как загружать и использовать не одно - несколько изображений. Для этого Вам нужно создать текстовый файл, содержащий список загружаемых изображений и их параметров, а для работы со списком объектов использовать например класс CPtrArray.

Всё это есть в ПОЛНОМ ИСХОДНОМ КОДЕ игры.

Как задавать для изображений их параметры - координаты вывода на экран, масштабные коэффициенты и некоторые другие ?

Для этого у объектов класса CD3D9Sprite есть соответствующие свойства - нужно просто задать в коде необходимые значения, а сами значения можно загружать из текстового файла.

Это также показано в ПОЛНОМ ИСХОДНОМ КОДЕ игры.

 
     
     
     
     
  [содержание] [назад] [страница 4] [далее]  
     
megainformatic live chat
Начать беседу
X
 

Оставленные комментарии



fle game engine - движок для создания игр
fle game engine - движок для создания игр


Something: Unexplained 2 captive of desires / Нечто: Необъяснимое 2 в плену желаний
Костя Коробкин Комикс Коллекционное издание - 6 комиксов, 81 страница, 220 mp3 треков
megainformatic Размещение баннерной рекламы у нас
Время загрузки: 1,4730