Сегодня
16 сентября 2026
2:27
Вход Sign In Регистрация Sign Up Забыли пароль ? Forgot password ?
VARVE - как создать инсталлятор для собственной cms
Как создать инсталлятор для собственной cms ? Итак, Вы написали свою cms. Если нет - можете взять мою бесплатную - megainformatic cms free Правда для megainformatic cms free инсталлятор не требуется вообще !!! Сайт созданный на базе неё работает без my sql только на файлах. Поэтому вся установка сводится
подробнее...

Теги

сайты, игры, дизайн, продвижение, php, html, css, my sql, c++, delphi, photoshop, 3ds max, fl studio, трекерская музыка, уроки

Статьи сайта

megainformatic cms Система Управления Контентом

Темы для WordPress

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

Макет дизайна Вашего сайта

скачать megainformatic cms

для чего нужна карта сайта

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

как создать инсталлятор для собственной cms

новые идеи, новые решения

Нововведения в megainformatic cms

Web Администрирование

Уроки Верстки

Система автоматизированной е-майл рассылки

Мысли о разном

Выгрузка файла на сайт

выпадающее меню на html и css

Использование checkbox

Краеугольная особенность работы Web-form на примере смены состояния checkbox

Технологии WEB

Технологии WEB - AJAX-запросы

Легко ли быть программистом

От идеи к реализации - трудно ли создавать сайты ?

Проблемы с кодировками при отображении страниц

игра Нечто: Необъяснимое Нить Накала - "в плену желаний"

Система Автоматизации Доставки Электронных Заказов megainformatic cms e-pro

megainformatic cms e-pro Автоматизация Обработки Уведомлений о Заказах по партнерским программам

Глубины программирования на C++

VARVE: Музыкальная страничка трэкера

Создание музыки и звука

VARVE: Создание музыки и звука: урок 2

Создание музыки и звука: урок 3 - настройка Impulse Tracker для работы в WinXP

Создание музыки и звука: урок 4 - Введение в Mod Plug Tracker

Создание музыки и звука: урок 5 - Первая композиция в Mod Plug Tracker

Создание музыки в Impulse Tracker 2.14 - урок 6 - Ввод Нот

Создание музыки в Impulse Tracker 2.14 Первая мелодия

Создание музыки в Impulse Tracker 2.14 Настройка параметров сэмплов

Создание музыки и звука: теория и практика создания трэкерской музыки

Что такое VARVE ?

Основы работы в Microsoft Visual Studio 2008 и DirectX 9 (DX SDK Aug 2008)

Введение в программирование игр на С++ для платформы DirectX 9 - Первый старт

Введение в программирование игр на С++ для платформы DirectX 9 - Меняем иконку приложения

Введение в программирование игр на С++ для платформы DirectX 9 Добавляем другую модель

Введение в программирование игр на С++ для платформы DirectX 9 Программирование игр в directx. Hello, World!

Введение в программирование игр на С++ для платформы DirectX 9 Разбираем конструкции языка C++ на примере работы в Microsoft Visual Studio 2008

Разбираем конструкции языка C++ на примере работы в Microsoft Visual Studio 2008 - Урок 1 Основные операторы языка C++

Разбираем конструкции языка C++ на примере работы в Microsoft Visual Studio 2008 - Урок 1 Основные операторы языка C++ (часть 2)

Урок 2 Написание Win32-приложений. Обзор стартового кода Win32-приложения. Добавление ресурса текстовая строка

Урок 3 Создание Win32-приложений. Создание меню и простых диалоговых окон.

Урок 4 Создание Win32-приложений. Стандартные диалоги. Изучение сопутствующих конструкций языка. Консольные Win32-приложения. Указатели. Ссылочный тип. Массивы.

Урок 4 часть 2 Win32. Диалог выбора цвета, смена цвета фона окна приложения

Написание приложения DirectX9c + MFC в среде MSVS 2005

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

Создание компьютерных игр на основе DirectX в среде Delphi 6, 7 - Почему избраны DX8 и Delphi ?

Основы IDirectMusic8 в среде Delphi6-7

Основы DirectInput8 в среде Delphi 7

Основы DirectSound8 в среде Delphi6-7

Плагин для 3DS MAX из DX9 SDK

Мастер-класс: Создание модели и текстуры Коммандного Центра (как в StarCraft 2)

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

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

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

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

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

Система управления сайтом - megainformatic cms e-shop

Моделируем девушку в 3ds max - Женская грудь

Моделируем девушку в 3ds max - Тело

Уроки 3ds max - Введение в 3ds max

ГАЛЕРЕЯ 3D-моделей

СОЗДАНИЕ МАКЕТА ПОМЕЩЕНИЯ

Создание макета помещения - этап 2

МОДЕЛИРОВАНИЕ НА УРОВНЕ МНОГОУГОЛЬНИКОВ

СОЗДАНИЕ ПРЕДМЕТОВ ОБСТАНОВКИ ПОМЕЩЕНИЯ

Моделирование обстановки помещения

Создание модели автомобиля

Создание текстурной развертки для модели автомобиля

Создание анимации вращающихся колес автомобиля

игра Нечто: Необъяснимое и в плену желаний

Основы 3D-анимации, экспорт скелетной анимации

Подготовка модели к использованию скелетной анимации

Продолжаем Создание скелета для данной модели

Построение ирерархических связей между объектами и основы 3d анимирования

Особенности экспорта моделей и анимации экспортером kWXPort080719 из 3ds max 2009 

Создание модели броневика (Хэд)

megainformatic cms e-mailer

Моделируем девушку в 3ds max - Моделируем руку

Моделируем девушку в 3ds max - Кисть руки

Бесплатная Система Управления Вашим Сайтом - megainformatic cms free

Путешествие в мир 3d

Путешествие в мир 3d - страница 2

Путешествие в мир 3d - страница 3

Путешествие в мир 3d - страница 4

Путешествие в мир 3d - страница 5

Путешествие в мир 3d - страница 6

Создание модели броневика (Хэд) - Анимация вращения колес

megainformatic cms express files

Моделируем девушку в 3ds max - Моделируем голову

Моделируем девушку в 3ds max - Моделируем голову страница 2

Уроки Photoshop - Чудеса

megainformatic cms express files - Развертывание сайта на Вашем хостинге

Настольная игра "Веселый Буквоежка"

Уроки delphi directx 8.1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Рассмотрение программирования игр под 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] [далее]  
     
 
Рейтинг@Mail.ru
Время загрузки: 0,0977