Как создать игру ? - Программируем сами. Рассмотрение программирования игр под 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
"D3DGUI.h" #include "AdventureGame.h" #include "d3dfont.h" описать возможные состояния загрузчика - // загрузчик
LOADSTATE_BEGINMENU,
LOADSTATE_BEGINADVENTUREINTRO,
LOADSTATE_BEGINLOADADVENTUREGAME_LOCTEX,
LOADSTATE_BEGINLOADADVENTUREGAME_SUBJECTS_PLATES,
LOADSTATE_BEGINLOADADVENTUREGAME, }; и сам загрузчик - class
CGameAppLoader CPtrArray* m_pLoaderTexturesArray;
void Start(CPtrArray* TxArray, LPCTSTR TexFilesPath, LPCTSTR TexFilesListTxt); float m_fRotorAngle;
void LoadLoaderTextures();
CStdioFile* m_pTextFile;
//статистика загрузки
//смена загружаемых ресурсов
void Loading();
float m_fRotateProcessTimeCounter;
после строк - //название
приложения добавить строки - #define ParamDelimeter ';' #define
GAMEERR_NOINPUT 0x00000006
#define
LoaderFontFileName L"\\Media\\fonts\\BALTICA.TTF" #define
LoaderFont2DFileName L"\\Media\\fonts\\MSSansSerif.tga" #define
LoaderBackTexIndex 0 #define
RotateProcessTimeLimit 0.01f //ресурсы
стартовой сцены (логотип, заставка, начало) объявляем класс CD3DGameApp -
class
CD3DGameApp public: HWND m_hWndMain;
DWORD m_dwScreenWidth; // разрешения для полноэкранных
режимов
bool m_bIsActive; // активность приложения FLOAT fAspectRatio; BOOL m_bMouseVisible; // видимость указателя мыши
DWORD m_dwAppState; // текущее состояние приложения
// Объекты Direct3D LPD3DXSPRITE m_pSprite; bool m_bShowFPSOn; bool m_bPaused; float m_fElapsedTime;
HRESULT FrameMove(); CGameAppLoader* m_pLoader; //загрузчик игровых ресурсов public:
void ReadFileParam(const CString* ParamStr,
void LoadGameTextures(CPtrArray* TxArray, LPCTSTR TexFilesPath,
void Cleanup3DEnvironment();
HRESULT InvalidateDisplayObjects(); void CalcResolutionRescale(); //поля и методы стартовой сцены (логотип, название, начало) CStartLogo* m_pStartLogo; void LoadStartRes(); //поля и методы меню CGameMainMenu* m_pGameMenu; void LoadMenuRes(); //поля и методы игрового режима Приключение
CIntroComics* m_pIntroComics;
CAdventure* m_pAdventure;
// Объекты DirectInput UserInput m_UserInput; // структура для хранения ввода от пользователя
HRESULT InputAddDeviceCB( CInputDeviceManager::DeviceInfo* pDeviceInfo,
const DIDEVICEINSTANCE* pdidi );
HRESULT CreateSoundObjects(); void TestGlobalAppState(); }; __declspec(selectany) CD3DGameApp g_d3dApp; |
||
Я намеренно не привожу здесь все комментарии, многое Вам будет понятно исходя из дальнейшего изучения кода. Код приведенный выше мы частично реализуем, остальное при желании Вы найдете в ПОЛНОМ ИСХОДНОМ КОДЕ игры. | ||
Чтобы не пугать Вас обилием кода на данной странице отсылаю Вас к ПОЛНОМУ ИСХОДНОМУ КОДУ. Здесь мы рассмотрим как выводится 2d-изображение на экран. |
||
Вот фрагмент кода из метода void CStartLogo::DrawIntroStoryBackScreen() LPD3D9SPRITE spr = GetElement(IntroStoryScreen); //получаем объект спрайта по его // //индексу IntroStoryScreen //в данном примере - вычисляем пиксельные координаты изображения по векторным, а //вообще такой пересчет должен выполняться в методе анимации, но в данном случае //это выполняется здесь
D3DXVECTOR2 pt1;
pt1.x *= spr->m_fResolutionRescale; //пересчетный
коэффициент применяется для // // // //корректного вывода // выводим 2d-изображение в указанную позицию x, y, z; x и y - пиксельные координаты, // но представленные типом float; с данным масштабом xScale, yScale и с данной // // // // полупрозрачностью alpha spr->Draw2(pt1.x,
pt1.y, spr->m_Position.z, |
||
Но прежде нужно загрузить нужное изображение из файла, это делается следующим образом - | ||
LPD3D9SPRITE Sprite; HRESULT hr; Sprite = new CD3D9Sprite(); // создаем объект для работы со спрайтами и 2d-// // // // // // изображениями hr
= Sprite->LoadTextureFromFile( |
||
После использования - при освобождении ресурсов приложения нужно освободить ресурсы, выделенные для использования объектов, это делается так - SAFE_DELETE(Sprite); |
||
Возникает вопрос: как загружать и использовать не одно - несколько изображений. Для этого Вам нужно создать текстовый файл, содержащий список загружаемых изображений и их параметров, а для работы со списком объектов использовать например класс CPtrArray. Всё это есть в ПОЛНОМ ИСХОДНОМ КОДЕ игры. Как задавать для изображений их параметры - координаты вывода на экран, масштабные коэффициенты и некоторые другие ? Для этого у объектов класса CD3D9Sprite есть соответствующие свойства - нужно просто задать в коде необходимые значения, а сами значения можно загружать из текстового файла. Это также показано в ПОЛНОМ ИСХОДНОМ КОДЕ игры. |
||
[содержание] [назад] [страница 4] [далее] | ||
игра
|
||||||||||
игры, сервисы
|
||||||||||
видео-рассказ, уроки godot, виртуальный помощник по поиску информации
|
||||||||||
игры Многоликий: dress - hordes эпизоды с 1 по 4
|
||||||||||
игры, музыкальные клипы
|
||||||||||
музыкальный клип, игры
|
||||||||||
разработка игр, анимационный фильм, новогодняя дискотека 2020 - песни на итальянском, игра про лифт
|
||||||||||
игры, инструменты разработки, анимационный фильм, фильм.
|
||||||||||
игры
|
||||||||||
игры в браузере
|
||||||||||
игры в браузере
|
||||||||||
игры в браузере
|
||||||||||
игры в браузере
|
||||||||||
игры в браузере (3), создание музыки в браузере (1)
|
||||||||||
игры в браузере
|
||||||||||
игры в браузере
|
||||||||||
игры в браузере
|
||||||||||
игры в браузере (3), скачиваемые (1)
|
||||||||||
игры в браузере
|
||||||||||
игры в браузере, скачиваемые игры
|
||||||||||
игры в браузере
|
||||||||||
игры в браузере
|
||||||||||
полезный софт, игры в браузере
|
||||||||||
сервисы, игры
|
||||||||||
игры, программы
|
||||||||||
поздравления, уроки рисования, уроки создания сайтов
|
||||||||||
комиксы, музыка, рассказы
|
||||||||||
игра для разработки, калькулятор услуг, cms, комикс
|
||||||||||
игры для разработки, комиксы
|
||||||||||
игры шарики и ямки, комиксы про Костю Коробкина, ria xxl игра, fly snow 3d генератор эффектов снега, частиц и др. -
|
||||||||||
Создай свою игру на fle game engine -
|
||||||||||
Для создания сайта - модуль отзывов/комментариев для вашего сайта в составе megainformatic cms express files -
|
||||||||||
Уроки Flash, бесплатные Flash - игры.
|
||||||||||
Поддержка сайтом нескольких языков (multi lang), создание собственной системы личных кабинетов, соц. сети или фриланс - биржи (megainformatic cms social), создание сервиса коллективных покупок на базе megainformatic cms groupon, онлайн сервис подсчёта статистики ключевых слов в статьях вашего сайта keywords gen + описание кода данного сервиса, с возможностью бесплатно реализовать его аналог на своём собственном сайте.
megainformatic.ru/webjob/ - сервис для фриланс проектов - место встречи заказчиков и исполнителей |
||||||||||
Социальная сеть megainformatic.ru/webjob/
megainformatic.ru/webjob/ - сервис для фриланс проектов - место встречи заказчиков и исполнителей |
||||||||||
Системы управления сайтом, уроки
megainformatic cms admin - простая и компактная система для работы и управления сайтом |
||||||||||
|
||||||||||
|
||||||||||
megainformatic cms free и серия продуктов - Уроки Photoshop
Данная серия посвящена описанию приемов и методов создания изображений, с помощью инструментария программы Adobe Photoshop. Кроме того, многие описанные средства могут вам помочь при освоении и многих других программ для работы с растровой графикой - GIMP, Corel Photo Paint и других.
|
||||||||||
бесплатные игры 2d и 3d, а также эмулятор Ну, Погоди!
Это серия распространяемых бесплатно игр. Вы не только можете поиграть, но и скачать исходники, получив тем самым возможность внести изменения в игру или создать новую !!! (эмулятор Ну, Погоди! распространяется платно). |
||||||||||
серия игр про Веселого Буквоежку, и бесплатно распространяемая игра Нечто: Необъяснимое - в плену желаний
Здесь представлены новинки жанра - Говорящий Комикс, Настольная игра, А также продукт, который позволит Вам научиться создавать игры самостоятельно. Ну и конечно изюминка в своём роде - бесплатная игра - Нечто: Необъяснимое - в плену желаний |
||||||||||
Серия бесплатных онлайн уроков, посвященных 3ds max, photoshop, c++, directx, delphi и php.
Описаны практические примеры решения различных задач, возникающих при создании игр и сайтов. Продукты Набор разработчика и Ваше Визуальное Шоу распространяются платно. |
||||||||||
уроки и продукты различной тематики
Бесплатные Уроки Photoshop free, Бесплатные Уроки по программированию на delphi directx - Как создать игру Ну, Погоди!, Бесплатная Авторская музыка в формате mp3 - Музыкальные Миры, Платно распространяемый продукт megainformatic cms express - система для быстрого создания Вашего сайта на php + my sql. |
||||||||||
Проекты игр, уроки
Игра Веселый Буквоежка, уроки delphi directx 8.1 для начинающих (описываются основы 3d игр), моделируем девушку в 3d studio max, уроки музыки - пишем музыку в Fruity Loops Studio |
||||||||||
|