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


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

megainformatic - Что нужно знать для создания сайта ? Стандартные шрифты для сайта
Что нужно знать для создания сайта ? Стандартные шрифты для сайта [к содержанию] Статья Ерошенкова Сергея - http://techmeat.net/about источник статьи: http://techmeat.net/standartnye-shrifty-dlya-sajta.html К сожалению, в стиле сайта нельзя на
подробнее...

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

megainformatic - статья Тимонина Андрея - DirectX9. Создаем основной класс обработки графики.

megainformatic - статья Тимонина Андрея - DirectX9. Создаем первое приложение.

megainformatic - Что нужно знать для создания сайта ? float - использование в css - стилях

megainformatic - Уроки Fruity Loops Studio (FL Studio) - урок 2 - пишем свою композицию COLD

megainformatic - Уроки Fruity Loops Studio (FL Studio) - урок 3 - экспериментируем с композицией COLD

megainformatic - Что нужно знать для создания сайта ? Стандартные шрифты для сайта

megainformatic - Что нужно знать для создания сайта ? ASC II Коды символов

megainformatic - Уроки Fruity Loops Studio (FL Studio) - урок 4 - пишем первый вариант композиции COLD

megainformatic - Популяризация Современных Научных Знаний и Размышления на околонаучные темы. СОДЕРЖАНИЕ

megainformatic - Популяризация Современных Научных Знаний и Размышления на околонаучные темы. Энергетический кокон

megainformatic - Модуль галерей для любой cms

megainformatic - Портфолио выполненных проектов сайтов и приложений

megainformatic - Мои Музыкальные Миры - страница 2

megainformatic - megainformatic cms rs

megainformatic - модуль Падающий снег

megainformatic - проект Open Shop

megainformatic - Рисуем красивую девушку всего за 6 шагов

megainformatic - Галерея красивых рисованных девушек

megainformatic - НОВОГОДНЕЕ ОБРАЩЕНИЕ СОЗДАТЕЛЯ webinformatic К ЖИТЕЛЯМ ПЛАНЕТЫ интернет

megainformatic - Отзывы оставленные пользователями как впечатление о проделанной работе или что-либо понравившееся на сайте

megainformatic - Уроки css - атрибут position

megainformatic - Ива Ден энд КуХа - КОДЕКС ФРИЛАНСЕРА - СОДЕРЖАНИЕ

megainformatic - Ива Ден энд КуХа - КОДЕКС ФРИЛАНСЕРА - Глава 1 - Обычный день

megainformatic - Ива Ден энд КуХа - КОДЕКС ФРИЛАНСЕРА - Глава 2 - Начало (begin)

Новогодняя дискотека 2013 на megainformatic точка ru

megainformatic - Программируем на C++ с использованием MFC

megainformatic - Программируем на C++ с использованием MFC - Создание MFC приложения

megainformatic - Программируем на C++ с использованием MFC - Создание MFC приложения - hello, world !

megainformatic - Как создать игру ? - Пишем игровой движок с нуля

megainformatic - Как создать игру ? - Пишем игровой движок с нуля - Вступление

megainformatic - Как создать игру ? - Пишем игровой движок с нуля - Общая структура будущего игрового движка

Разное

megainformatic - Как создать игру ? - Пишем игровой движок с нуля - DXUTMainLoop - цикл работы DirectX-приложения

megainformatic - Варианты макетов Психолог 911

megainformatic - Шаблоны для сайтов - что это и какие они бывают ?

megainformatic - Ива Ден энд КуХа - КОДЕКС ФРИЛАНСЕРА - Глава 3 - Кто он ? (who is ?)

megainformatic - Мои Музыкальные Миры - готовая музыка mp3 - новинки 2013 года

megainformatic - Теория и практика хакерских атак - самозащита от нападения

megainformatic - Теория и практика хакерских атак - самозащита от нападения - Способы подмены реального IP

megainformatic - Fruity Loops Studio 9 - Как синтезировать свои сэмплы - изучаем возможности плагина Sytrus

megainformatic - Видоизменяем тему для Wordpress под свои нужды

megainformatic - Flash приложения и игры - Шаг 3 - управляемый шарик

megainformatic - Учимся создавать флеш-игры, что нужно знать для того, чтобы заняться созданием flash приложений и игр ?

megainformatic - Шаг 4 в освоении Flash-технологий - как анимировать персонажа и управлять им

megainformatic - Форма для смены шаблонов сайта. Модуль template selector

megainformatic - megainformatic cms express files + module slider

megainformatic - Создание сайта бесплатно или под заказ

megainformatic - Как создать flash баннер

megainformatic - Разработка flash-приложения для сайта: онлайн примерочная

megainformatic - Мои впечатления о книге - Владислав Крапивин - Журавленок и Молнии

megainformatic - Модуль отзывов/комментариев для вашего сайта

megainformatic - Модуль отзывов/комментариев для вашего сайта

megainformatic - Модуль отзывов/комментариев для вашего сайта

megainformatic - Модуль короткие ссылки short link

megainformatic - Работа с сокетами fsocket из php

подробнее

     
  онлайн обучение, репетитор  
 

Здравствуйте, уважаемый посетитель !

Меня зовут Андрей. Я занимаюсь онлайн-преподаванием. Опыт преподавания с 2003 года. Опыт работы дизайнером с 2006 года. Опыт работы по созданию сайтов с 2010 года.


Моё портфолио

Чему мы будем обучаться ?

Могу Вам предложить следующие направления:

 
     
  Основные и дополнительные проводимые курсы.

Создание приложений для Windows на c++, c#, delphi.

Создание приложений на Java.

Создание мобильных приложений для Android.

Создание веб приложений на php/mysql/html/css/js и asp.net

Курсы проводимые в составе указанных или отдельно:

Основы создания сайтов и язык php. Здесь же мы познакомимся с основами web-дизайна и верстки. По прохождении курса Вы сможете самостоятельно зарегистрировать и создать собственный работающий сайт.

Основы верстки и адаптивной верстки.

Создание собственной cms.

Создание сайтов на готовых cms - bitrix, wordpress, drupal, joomla, opencart, prestashop, shop script le, host cms, netcat, webassyst и других.

Создание сайта на asp.net

Создание html5 приложений и игр для веб и для андроид.

Примеры готовых приложений и игр можно найти на сайте - webinformatic.ru

Как создать свое видео для youtube и продвигать его.

Ниже представлены примеры моих собственных видео снятых на разные темы - графика, музыка, создание сайтов, игр и многое другое.

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

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























На самом деле видео гораздо больше. Вам достаточно зайти на мой ютуб канал.

 
  Уроки Photoshop - сюда входит изучение как основ работы с программой, так и опытные практические примеры, с помощью которых Вы научитесь решать реальные практические задачи.  
     
  Уроки 3ds max - здесь мы познакомися с основами 3d графики, научимся создавать простенькие модели, а после этого перейдем к практическим примерам - созданию интерьеров, закрытых и открытых сцен, а также различных статичных и анимированных объектов и персонажей.  
     
     
  Программирование на примере создания 2D и 3D игр на языках C++ или Delphi в среде DirectX 9c. Практика и еще раз практика и ничего более. Теорию Вы можете изучить и сами не так ли ? А вот практический материал достаточно богат. Мы рассмотрим как создаются игры и научимся программировать. К Вашим услугам примеры игр Ну, Погоди!, Donuts3D, Нечто: Необъяснимое, Веселый Буквоежка, Шарики и Ямки, Шар Бумага Карандаш, Сибирский конфликт Война миров реинкарнация, Ria.  
     
 

Другие дисциплины. По Вашему желанию я могу заниматься с Вами по таким предметам как - Офисные программы MS Word, MS Excel. Основы работы с базами данных MS Access. Основы создания музыки и обработки звука - FL Studio, Adobe Audition, Sound Forge. Основы работы с векторной графикой в Corel Draw.

Отдельную интересную тему представляет создание программ-роботов, и роботоподобных алгоритмов, способных выполнять задачи без участия человека.

Мы будем изучать её на реальных примерах создания веб приложений наподобие различных парсеров и автономных, работающих без нашего участия программ.

 
     
  Содержание курсов обсуждается с Вами индивидуально. Было бы желание и время обучаться !

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

Рассматриваю также участие в проектах. Если вам нужен сайт, веб-приложение или игра. Возможны отдельные вопросы по этим темам: например концепция игры, разработка графики и т. д.

 
     
 

Если Вас что-то заинтересовало или есть вопросы - обращайтесь.


Контакты:

ICQ - 406469097

Skype - megainformatic

abc@varve.ru

 
     
  Успехов Вам !!!  
     
     
     
подробнее

     
  ЛЕТО !  
     
  Лето !  
     
  Просто лето и дорога идущая вдаль ...  
     
 

 

 
     
     
подробнее

Fahrenheit - Фаренгейт - игра для PC 2006 год

2006 год, разработчик Quantic Dream, локализация Акелла,
игра для PC в жанре квест, приключение, экшн, фильм.

Fahrenheit - Фаренгейт - игра для PC 2006 год

Fahrenheit - Фаренгейт - игра для PC 2006 год

Трейлер

 


подробнее


[к содержанию] [другие статьи Тимонина Андрея]

DirectX9. Создаем первое приложение.

автор: Тимонин Андрей

дата публикации на сайте Мега Информатик: 18.11.2012

Добро пожаловать в цикл моих уроков посвященных программированию.

На написание этой статьи меня вдохновил блог о создании игр с нуля, который можно посмотреть по следующей ссылке mindillusion.ru.

Здесь мы продолжаем работать с Direct X9 и создадим свое приложение на основе созданного нами класса.

Результат наших действий будет такой, как на скриншоте.

И так, перейдем к делу... Для начала, нам необходимо создать окно. Используем Win32 Api фунции. Мой базовый класс для упрощения создания таких приложений.

class BaseWindowClass {
protected:
WNDCLASS baseWndClass;
HWND baseHWindow;
MSG baseMessage;

float dx, dy; //смещение координат Direct3D относительно координат окна
float clientWidth, clientHeight; //длина и высота окна

public:
//конструктор
BaseWindowClass();
//деструктор
virtual ~BaseWindowClass();

/*Этот метод создает окно.
Параметры:
hInstance - идентификатор приложения
szTitle - заголовок приложения
iWidth - ширина окна
iHeight - высота окна
*/
bool Create(HINSTANCE hInstance, LPCWSTR szTitle,
DWORD iStyle = WS_OVERLAPPEDWINDOW | WS_VISIBLE,
int iWidth = CW_USEDEFAULT,
int iHeight = CW_USEDEFAULT);
//оконная процедура
static LRESULT CALLBACK WndProc(HWND hWindow, UINT iMessage,
WPARAM wParam, LPARAM lParam);
//Этот метод запускает цикл обработки сообщений
void Run();
//Этот метод выполняет обработку сообщений
virtual bool MessageHandler(UINT iMessage, WPARAM wParam,
LPARAM lParam);
//Абстрактный метод. Предназначен для рисования в окне.
//Вызывается в цикле сообщений.
virtual void Render(float ElapseTime) = 0;
virtual void FrameMove(float ElapseTime)=0;

//этот метод выполняет инициализацию Direct3D
bool initD3D();
//этот метод настраивает устройство Direct3D
void setMatricesAndRenderStates();

};

А теперь посмотрим на реализацию методов.

BaseWindowClass::BaseWindowClass() {}

//-----------------------------------------------------------------------

BaseWindowClass::~BaseWindowClass()
{

//удаляем класс окна
UnregisterClass(L"BaseWindow", baseWndClass.hInstance);
}

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

bool BaseWindowClass::Create(HINSTANCE hInstance, LPCWSTR szTitle,
DWORD iStyle, int iWidth, int iHeight)
{
//заполняем структуру с параметрами класса окна
baseWndClass.hCursor = LoadCursor(NULL, IDC_ARROW);
baseWndClass.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_SPACE));
baseWndClass.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
baseWndClass.hInstance = hInstance;
baseWndClass.lpfnWndProc = WndProc;
baseWndClass.lpszClassName = L"Base Window";
baseWndClass.lpszMenuName = NULL;
baseWndClass.cbClsExtra = 0;
baseWndClass.cbWndExtra = 0;
baseWndClass.style = 0;

//пробуем зарегистрировать класс окна
if(!RegisterClass(&baseWndClass))
{
//если не получилось, генерируем исключение
Space::ExceptionBase e(CLASSREGISTRATIONERROR, L"Не могу зарегистрировать класс");
throw e;
}

//пробуем создать окно
baseHWindow = CreateWindow(L"Base Window", szTitle, iStyle,
CW_USEDEFAULT, CW_USEDEFAULT,
iWidth, iHeight, NULL, NULL,
hInstance, (void*)this);
//в случае неудачи генерируем исключение
if(baseHWindow == NULL)
{
Space::ExceptionBase e(WINDOWCREATIONERROR, L"Не могу создать окно");
throw e;
}
//пробуем установить заданный текст в заголовке окна
if(!SetWindowText(baseHWindow, szTitle))
{
//если не получилось, генерируем исключение
Space::ExceptionBase e(SETTITLEERROR, L"Не могу изменить текст в заголовке окна");
throw e;
}

return 0;
}

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

Операционная система Windows общается со своими клиентскими приложениями посредством сообщений. А значит, нам необходимо обрабатывать эти сообщения и между делом выводить наше, сформированное в заднем буфере изображение на канву окна.

CALLBACK Функция WndProc выглядит у нас таким образом

LRESULT CALLBACK BaseWindowClass::WndProc(HWND hWindow,
UINT iMessage, WPARAM wParam, LPARAM lParam)
{
//создаем указатель на данный экземпляр класса
BaseWindowClass *baseWnd = NULL;
bool beProcessed = false;

//обрабатываем принятое сообщение
switch(iMessage)
{
//это сообщение отправляется при создании окна
case WM_NCCREATE:
//изменяем атрибут данного окна на значение, указанное в параметре
//(lParam) сообщения (указатель на данные, которые используются для
//создания окна)
SetWindowLong(hWindow, GWL_USERDATA,
(long)(LPCREATESTRUCT(lParam)->lpCreateParams));
break;
default:
//определяем указатель на данный экземпляр класса
baseWnd = (BaseWindowClass*)GetWindowLong(hWindow,
GWL_USERDATA);
if(baseWnd != NULL)
{
//вызываем обработчик сообщений данного класса
beProcessed = baseWnd->MessageHandler(iMessage,
wParam, lParam);
}
break;
}
//если принятое сообщение не было обработано...
if(beProcessed == false)
{
//... выполняем стандартную обработку
return DefWindowProc(hWindow, iMessage, wParam, lParam);
}
return 0;
}

Цикл обработки сообщений, пока не поймаем событие закрытия окна.

void BaseWindowClass::Run()
{
MSG msg;
ZeroMemory( &msg, sizeof(msg) );
//входим в цикл обработки сообщений
while( msg.message!=WM_QUIT )
{
//читаем очередное сообщение
if( PeekMessage( &msg, NULL, 0U, 0U, PM_REMOVE ) )
{
//обрабатываем его
TranslateMessage( &msg );
DispatchMessage( &msg );
}
else
{
float ElapseTime;
ElapseTime = Space::getElapsedTime();

//перерисовываем окно
FrameMove(ElapseTime);

Space::Graphics& gr = Space::Graphics::get();
if (!FAILED(gr.StartRender(0x00000000)))
{
Render(ElapseTime);
// закончили рендер
gr.EndRender();
}
else
gr.Reset();
}
}
}

Окно создано, события обрабатываются, осталось только создать наше Direct3D устройство и настроить матрицы проекций. Смотрим далее.

//этот метод выполняет инициализацию Direct3D и объектов игры
bool BaseWindowClass::initD3D()
{
//определяем размер клиентской части окна
RECT clientRect;
GetClientRect(baseHWindow, &clientRect);
//определяем смещение координат Direct3D относительно оконных координат
dx = (float)((clientRect.right - clientRect.left)/2);
dy = (float)((clientRect.bottom - clientRect.top)/2);
//сохраняем размер окна
clientWidth = dx * 2;
clientHeight = dy * 2;

// Инициализируем графику
if (!Space::Graphics::get().Init(baseHWindow, clientWidth, clientHeight))
return FALSE;

return TRUE;
}

Устройство создано, осталось его настроить.

//этот метод настраивает устройство Direct3D
void BaseWindowClass::setMatricesAndRenderStates()
{
Space::Graphics& gr = Space::Graphics::get();

//начинаем рендер. Очищаем буфер кадра и заливаем черным цветом
if (!FAILED(gr.StartRender(0x00000000)))
{
// настраиваем рендер-стейты
gr.SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE);

//отключаем освещение
gr.SetRenderState(D3DRS_LIGHTING, FALSE);

//устанавливаем режим отображения как сплошной
gr.SetRenderState(D3DRS_FILLMODE, D3DFILL_SOLID);
gr.SetRenderState(D3DRS_SHADEMODE, D3DSHADE_GOURAUD);

//разрешаем Z буфер
gr.SetRenderState(D3DRS_ZENABLE, D3DZB_TRUE);

//настроим Z буфер на запись
gr.SetRenderState(D3DRS_ZWRITEENABLE, TRUE);

D3DXMATRIX mat, matViewProj, matProj, matView;
D3DXMatrixIdentity(&mat);

//определяем размер клиентской части окна
RECT clientRect;
GetClientRect(baseHWindow, &clientRect);
//определяем смещение координат Direct3D относительно оконных координат
dx = (float)((clientRect.right - clientRect.left)/2);
dy = (float)((clientRect.bottom - clientRect.top)/2);
//сохраняем размер окна
clientWidth = dx * 2;
clientHeight = dy * 2;

// матрицы вида и проекции
D3DXMatrixTranslation(&matView, 0, 0, 0);
D3DXMatrixOrthoLH(&matProj, clientWidth, -clientHeight, 0, 10);

// получаем матрицу вида/проекции
D3DXMatrixMultiply(&matViewProj, &matView, &matProj);

// настраиваем фильтрацию текстуры
gr.SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR);
gr.SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR);
gr.SetSamplerState(0, D3DSAMP_MIPFILTER, D3DTEXF_LINEAR);

// включаем альфа-блендинг
gr.SetRenderState( D3DRS_ALPHABLENDENABLE, TRUE );
gr.SetRenderState( D3DRS_SRCBLEND, D3DBLEND_SRCALPHA );
gr.SetRenderState( D3DRS_DESTBLEND,D3DBLEND_INVSRCALPHA );
}

}

У нас получился абстрактный класс. Для его использование необходимо его конкретизировать и перегрузить виртуальные методы. У нас виртуальными являются

FrameMove и Render. У меня получился такой класс.

class RenderWindow : public BaseWindowClass
{
private:

//этот метод освобождает все созданные объекты
void ReleaseAll();

public:
//конструктор
RenderWindow(void);
//деструктор
virtual ~RenderWindow(void);
//обработчик сообщений пользователя
virtual bool MessageHandler(UINT iMessage, WPARAM wParam,
LPARAM lParam);
//этот метод рисует очередной кадр
virtual void Render(float ElapseTime);
virtual void FrameMove(float ElapseTime);

void CreateScene();

};

Что прописывать в конкретном методе, решать вам. А я покажу, как я создавал этот класс в стандартной функции main - главной функции приложения.

//точка входа в программу
INT WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst,
LPSTR szCmdLine, INT iCmdShow)
{
try
{
std::setlocale( LC_ALL, ".ACP" );
//создаем экземпляр класса игры
RenderWindow game;
//создаем окно
game.Create(hInst, L"Pandora 1.0b",WS_CAPTION|WS_SYSMENU /*WS_OVERLAPPEDWINDOW*/ | WS_VISIBLE,
800, 600);
//инициализируем Direct3D
game.initD3D();
//устанавливаем матрицы и настраиваем параметры отображения сцены
game.setMatricesAndRenderStates();
game.CreateScene();
//запускаем цикл обработки сообщений
game.Run();
}
//ловим исключения, и выводим сообщения об ошибках
catch(Space::ExceptionBase err)
{
MessageBox(NULL, (const wchar_t*)err, L"Ошибка", MB_ICONERROR);
}
catch(...)
{
MessageBox(NULL, L"Неизвестная ошибка", L"Ошибка", MB_ICONERROR);
}
return 0;
}

 

На этой позитивной ноте я статью заканчиваю. С уважением, Андрей.

 

[к содержанию] [другие статьи Тимонина Андрея]

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



Пожалуйста войдите на сайт -
Вход

или пройдите процедуру регистрации - Регистрация

megainformatic live chat
Начать беседу
X
 

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



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


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