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


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

megainformatic - Что нужно знать для создания сайта ? float - использование в css - стилях
Что нужно знать для создания сайта ? float - использование в css - стилях [к содержанию] Атрибут float применяется для выравнивания блоков div по <div style="float: left;">по левому краю отведенного пространства страницы</div>
подробнее...

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

megainformatic - Создание интернет-магазина

megainformatic - Музыкальные миры - композиция Морозное утро - 10 версий

ЛЕТО

megainformatic - Нечто Необъяснимое - пре релиз

megainformatic cms admin

megainformatic cms admin

megainformatic - Основы создания 3d игр - проект Тайны Морских Глубин

megainformatic - уроки delphi directx 8.1 3d - Основы Вращений и Управления камерой

megainformatic cms seo

megainformatic cms admin

megainformatic - Моделируем девушку в 3d - Подготовка 2d-эскиза тела человека

megainformatic cms stat kit

megainformatic cms seo

megainformatic - Теория и практика 3d игр - О Кватернионах

megainformatic - Теория и практика 3d игр - Основы теории векторов

megainformatic - Теория и практика 3d игр - Важные замечания

megainformatic - Моделируем девушку в 3d используя 3ds max - Подготовка к моделированию ноги - готовим ширму

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

megainformatic - Моделируем девушку в 3d используя 3ds max - Улучшаем созданную модель женской ножки

megainformatic cms stat kit

megainformatic - Подводная лодка и подводный мир

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

megainformatic cms social

megainformatic cms social Руководство пользователя

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

модуль слайдера

ТЗ на сайт коллективных покупок

модуль slider

megainformatic cms seo

Поддержка сайтом нескольких языков - модуль multi lang

Поддержка сайтом нескольких языков - модуль multi lang

megainformatic - Моделируем девушку в 3d используя 3ds max - другие статьи сборника статей - обзор

установка нового шаблона в joomla 2.5.4

Описание продукта megainformatic cms social

Описание продукта megainformatic cms social

megainformatic - ТЗ на сайт по аналогии rys-stroi.ru

megainformatic cms groupon

megainformatic - дизайн сайта строительной компании УЛЬТРА-СТРОЙ

megainformatic - Тестирование подключения платежной системы

megainformatic - Выпадающее окно регистрации на сайте

megainformatic - Тестирование подключения к платежной системе с использованием скрипта эмулятора

megainformatic - Модуль для регистрации пользователя на сайте

megainformatic - Код для модуля регистрации пользователя на сайте

megainformatic - Быстрый подсчёт ключевых слов в статье

megainformatic - Модуль подсчёта ключевых слов в статье

megainformatic - Онлайн-сервис для подсчёта статистики ключевых слов

megainformatic - Пишем слайдер на javascript с нуля

megainformatic - Логика работы слайдера на javascript

megainformatic - Пишем свою соц. сеть - модуль предложений для webjob

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

megainformatic - Пишем свою соц. сеть - Реализация файлового хранилища предложений в csv-файле

megainformatic - Тестирование подключения к платежной системе ЕДИНЫЙ КОШЕЛЕК (w1.ru) с использованием скрипта эмулятора

megainformatic - Пишем свою cms - шаг 1

megainformatic - Пишем свою cms - шаг 2

megainformatic - Пишем свою cms - шаг 3

подробнее

     
 

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

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

 
     
 

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

Здесь Мы рассмотрим кратко что нужно для начала работы и как начать освоение этой обширной темы.

 
     
 

Вам потребуется:

- среда разработки Microsoft Visual Studio 2005 или выше;

- DirectX SDK Aug 2008 или выше;

- хотя бы минимальные знания английского языка, а еще лучше запастить программой словарем-переводчиком для англо-русского/русско-английского перевода - X-translator, Lingvo или что-то еще.

 
     
  Когда всё это будет у Вас под рукой и полностью установлено и готово к работе можно приступать.  
     
  Самый первый шаг.  
     
 

Сначала нужно установить MSVS (Microsoft Visual Studio), затем DirectX SDK.

В этому случае в процессе установки DX SDK будет подготовлена среда для программирования под DirectX и многие настройки, особенно отладку DX-приложений Вам не нужно будет перенастраивать вручную.

 
     
  Несколько уроков на тему создания игр  
     
 

Сегодня наша цель:

- познакомиться с основами работы в среде MSVS;

- создать первое простейшее игровое приложение;

- попробовать модифицировать его для проверки и отладки;

 
     
 

Запускаем MSVS

Выбираем пункт меню File > Open > Project Solution

Находим папку с примерами из DirectX SDK -

C:\DXSDK_Aug2008\Samples

На Вашем компьютере этот путь может быть другим, если Вы при установке DirectX SDK задали другой диск и другую папку, так что вначале уточните, куда Вы установили DX SDK !

 
     
 

А мы откроем самый первый пример -

C:\DXSDK_Aug2008\Samples\C++\Direct3D\Tutorials\Tut01_CreateDevice

 
     
  И попробуем его изучить  
     
  После открытия этого проекта в окне Solution Explorer дважды щелкаем файл CreateDevice.cpp, чтобы воочию увидеть этот магический cpp код.  
     
  Найдите функцию wWinMain  
     
  находим функцию wWinMain  
     
  можете щелкнуть данное изображение, чтобы увидеть его в полномасштабном варианте, затем вернитесь на данную страницу  
     
  Рассмотрим этот код по-порядку  
     
  INT WINAPI wWinMain( HINSTANCE hInst, HINSTANCE, LPWSTR, INT )
{
// Register the window class
WNDCLASSEX wc =
{
sizeof( WNDCLASSEX ), CS_CLASSDC, MsgProc, 0L, 0L,
GetModuleHandle( NULL ), NULL, NULL, NULL, NULL,
L"D3D Tutorial", NULL
};
RegisterClassEx( &wc );

// Create the application's window
HWND hWnd = CreateWindow( L"D3D Tutorial", L"D3D Tutorial 01: CreateDevice",
WS_OVERLAPPEDWINDOW, 100, 100, 300, 300,
NULL, NULL, wc.hInstance, NULL );

// Initialize Direct3D
if( SUCCEEDED( InitD3D( hWnd ) ) )
{
// Show the window
ShowWindow( hWnd, SW_SHOWDEFAULT );
UpdateWindow( hWnd );

// Enter the message loop
MSG msg;
while( GetMessage( &msg, NULL, 0, 0 ) )
{
TranslateMessage( &msg );
DispatchMessage( &msg );
}
}

UnregisterClass( L"D3D Tutorial", wc.hInstance );
return 0;
}

 
     
 

Данная функция wWinMain - является стартовой функцией работы любого игрового приложения, судя по названию Win - сокращение от Windows и Main - главная.

Префикс w означает, что данная функция использует строковые параметры вида WideChar, т. е. двубайтовые строки.

 
     
  Когда Вы будете запускать данное приложение операционная система в первую очередь передаст управление этой функции - wWinMain.  
     
  Я думал писать игры сложно, можете сказать Вы, а оказывается всё начинается с какой-то маленькой функции wWinMain.  
     
  Могу ответить Вам одно - всё в этом мире начинается с малого, мой друг !  
     
 

Что же происходит внутри этой функции ?

// Register the window class - регистрируем класс окна приложения
WNDCLASSEX wc =
{
sizeof( WNDCLASSEX ), CS_CLASSDC, MsgProc, 0L, 0L,
GetModuleHandle( NULL ), NULL, NULL, NULL, NULL,
L"D3D Tutorial", NULL
};
RegisterClassEx( &wc );

 
     
 

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

//

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

Всё остальное представляет действительно исполнимый код, который в процессе компиляции превращается в исполнимый машинный код, доступный для обработки центральным процессором CPU Вашего и любого другого ПК.

 
     
 

Мы создаем переменную wc с типом WNDCLASSEX и заносим в неё значения

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

 

 
     
 

WNDCLASSEX wc;


SecureZeroMemory(&wc, sizeof(wc));


wc.cbSize = sizeof( WNDCLASSEX );
wc.style = CS_CLASSDC;
wc.lpfnWndProc = MsgProc;
wc.cbClsExtra = 0L;
wc.cbWndExtra = 0L;
wc.hInstance = GetModuleHandle( NULL );
wc.hIcon = NULL;
wc.hCursor = NULL;
wc.hbrBackground = NULL;
wc.lpszClassName = L"D3D Tutorial";
wc.lpszMenuName = NULL;

 
     
 

Объявляем переменную wc с типом WNDCLASSEX

SecureZeroMemory - очищаем все поля данной переменной значением ноль.

Далее присваиваем каждому полю данной записи соответствующее значение -

размер записи - получаем при помощи функции sizeof

стиль

оконная процедура MsgProc

Обработчик экземпляра приложения wc.hInstance получаем при помощи функции GetModuleHandle

wc.lpszClassName = L"D3D Tutorial"; - задаем имя класса приложения.

Все остальные поля выставляются либо в 0, либо в NULL.

 
     
  0 в случае числовых полей, NULL - в случае полей-указателей.  
     
  RegisterClassEx - выполняем регистрацию класса с указанными параметрами в системе.  
     
  CreateWindow - создаем окно приложения  
     
 

if( SUCCEEDED( InitD3D( hWnd ) ) ) - инициализируем приложение и если всё прошло без ошибок -

ShowWindow( hWnd, SW_SHOWDEFAULT );
UpdateWindow( hWnd );
- показываем окно на экране, выполняем его перерисовку.

 
     
 

// Enter the message loop
MSG msg;
while( GetMessage( &msg, NULL, 0, 0 ) )
{
TranslateMessage( &msg );
DispatchMessage( &msg );
}

запускаем бесконечный цикл приема и обработки сообщений системы,

в случае если функция GetMessage вернет FALSE цикл будет остановлен и выполнена строка следующая за строкой цикла -

UnregisterClass( L"D3D Tutorial", wc.hInstance );
return 0;
- выполняется освобождение класса приложения в системе, выполняется возврат из функции со значением кода возврата равным 0

 
     
  [далее]  
     
     
     
подробнее

     
  [Другие статьи]  
     
  JFolder::create: Path not in open_basedir paths. Что это?  
     
 

JFolder::create: Path not in open_basedir paths. Что это?

Внимание! - Не удалось переместить файл
Выводит, когда я пытаюсь установить плагин на сервере. На localhost всё работает.

 
     
 

Решение 1:

проверьте, чтобы в configuration.php были правильно прописаны пути к папкам logs и tmp.
А также они должны быть открыты на запись (chmod 777)

 
     
 

Решение 2:

1. Находим файл folder.php он лежит в директории /libraries/joomla/filesystem/folder.php
2. Находим 194 строку $obd = ini_get('open_basedir') и отключаем её, т.е. ставим впереди этой строки //

У вас должно получится:

// We need to get and explode the open_basedir paths
// $obd = ini_get('open_basedir');

После установки нужных компонентов (модулей) рекомендуется вернуть изменение к исходному виду.

 
     
     
     
подробнее

бесплатная флеш игра - разработчик Serius Games - название - Freeway Fury 2

Всем привет !!!!

Как-то я вспомнил про свою старую игрушку - road2city, которую делал в далеком 2006 году.

А еще решил поискать в интернете что-то аналогичное и вот наткнулся - Freeway Fury 2

Игра очень похожа на road2city, но мне она понравилась даже больше, чем своя.

Freeway Fury 2 притягивает красивой графикой, незамысловатым геймплеем и собственно действом - аркадой.

Вы выступаете в роли шофера, который устал от пробок на дорогах, просто вылезает и перепрыгивает на другие машины.:))))

Вообщем управление простое - стрелки ВЛЕВО, ВПРАВО и ВПЕРЕД.

А если хотите перепрыгнуть на другую машину зажимаете клавишу M или Z

При этом время как бы замедляется и Вы, используя те же клавиши стрелки - ВЛЕВО, ВПРАВО и ВПЕРЕД
аккуратно перепрыгиваете на ближайшую машину.

Т. е. прежде чем прыгать надо подъехать достаточно близко.

Ну а если неповезет - упадете и попадете под машину :((((

Вообщем попробуйте ;))))



Данная игра является свободно распространяемой и взята с сайта not doppler по соглашению - http://www.notdoppler.com/webmasters.php

подробнее


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

Исключения. Создаем класс обработки исключений.

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

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

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

Эта статья будет посвящена исключениям и обработке исключительных ситуаций.


В любом языке, как и в жизни, существуют правила. А если есть правила, значит должны быть и ситуации, которые выбиваются и существуют вне этих правил. Эти ситуации называются исключениями (exceptions). Именно про них и пойдет речь в этой статье.

Обратимся к теории.  Для работы с исключениями используется контролируемый блок try. Чтобы сгенерировать исключение можно воспользоваться оператором trow внутри блока try или функций, вызываемых в этом блоке.  После блока try размещаются один или несколько блоков обработки исключений catch. Смотрим пример.

try{
//фрагмент кода
}
сatch( Type)
{
//действия по обработке исключения типа Type
}
catch(…)
{
//действия по обработке прочих исключений исключения
}

Как все это работает? В блоке try{ } помещаем код, где может возникнуть ошибка. В блоке сatch( Type){ } -  что необходимо сделать в исключительной ситуации, например сообщить пользователю, что в программе произошла ошибка по такому-то поводу.

Для рассмотрения ошибок конкретного типа использется вариант блока   сatch( Type){ }. Вместо  слова Type указываете конкретный тип. Смотрим пример.

сatch( int)
{
//действия по обработке исключения типа int
}
сatch(char *)
{
//действия по обработке исключения типа char
}

Если необходимо обрабатывать исключения разных типов можно написать универсальный блок сatch

catch(…)
{
//действия по обработке прочих исключений исключения

}

А теперь поговорим, что происходит, когда вызываем оператор trow.

trow Err();

При обращении к этому оператору создается копия параметра виде статического объекта, которая существует до тех пор, пока не будет обработано исключение. Ищется подходящий обработчик catch, в качестве параметра которого указано необходимое исключение. В данном случае catch (Err& ). Если такого не находится, вызывается catch(…).

Давайте попробуем написать класс исключений.

class ExceptionBase {
private:
         int errorCode; //код ошибки
         wchar_t *errorMessage;//текст сообщения
public: //конструктор по умолчанию
         ExceptionBase() : errorCode(0) {errorMessage = L"no description"}
     //конструктор копирования
         ExceptionBase(ExceptionBase& eb);
    //конструктор с кодом и текстом сообщения
         ExceptionBase(int eC, const wchar_t *eM);
     //деструктор
         virtual ~ExceptionBase();
     //оператор присваивания
         ExceptionBase& operator=(ExceptionBase& eb);
         int getErrorCode(); //получает код ошибки
         const wchar_t* getErrorMessage();
         operator int();
         operator const wchar_t*();
};

Вот такой получился класс. Конструктор копирования и оператор присваивания нужны для передачи объекта в оператор catch. Смотрим на реализацию.
//exception.cpp
#include “exception.h”
//конструктор копирования
ExceptionBase::ExceptionBase(ExceptionBase& eb)
{
         errorCode = eb.getErrorCode();
    //определяем сколько занимает наша строка
         int len = wcslen(eb.getErrorMessage());
    //выделяем необходимый размер памяти пула
         errorMessage = new wchar_t[len + 1];
    //копируем строку сообщения
         wcscpy(errorMessage, eb.getErrorMessage());
}

ExceptionBase::ExceptionBase(int eC, const wchar_t *eM)
{
errorCode = eC;
int len = wcslen(eM);
errorMessage = new wchar_t[len + 1];
wcscpy(errorMessage, eM);
}
//деструктор
ExceptionBase::~ExceptionBase()
{
//освобождаем выделенную память пула
if(errorMessage != NULL)
delete [] errorMessage;
}

ExceptionBase& ExceptionBase::operator=(ExceptionBase& eb)
{
//защитимся от самоприсваивания
if(this == &eb)
return *this;
delete [] errorMessage;
//занесем новое значение кода
errorCode = eb.getErrorCode();
//сформируем новую строку сообщения
int len = wcslen(eb.getErrorMessage());
errorMessage = new wchar_t[len + 1];
wcscpy(errorMessage, eb.getErrorMessage());
return *this;
}
//получим код ошибки
int ExceptionBase::getErrorCode()
{
return errorCode;
}
//получим текст сообщения
const wchar_t* ExceptionBase::getErrorMessage()
{
return errorMessage;
}
//приводя к типу int получаем код ошибки
ExceptionBase::operator int()
{
return errorCode;
}
//приводя к типу wchar_t* получаем строку сообщения
ExceptionBase::operator const wchar_t*()
{
return errorMessage;
}
};

Вот такой код получился. Его можно использовать как базовый класс в иерархии, но мы не будем усложнять.А лучше посмотрим как его следует использовать.
//гдето в коде
ExceptionBase err(GETDISPLAYMODEERROR,L"Не могу определить параметры дисплея");
throw err;

 

И дисплей тоже  может не определяться :). Таким образом мы создали объект и вызвали исключение оператором throw.

А так будет выглядеть блок try
try
{
...

         }
//ловим исключения, и выводим сообщения об ошибках
catch(ExceptionBase err)
{
MessageBox(NULL, (const wchar_t*)err, L"Ошибка", MB_ICONERROR);
}
catch(...)
{
MessageBox(NULL, L"Неизвестная ошибка", L"Ошибка", MB_ICONERROR);
}

На этом статью заканчиваю. Надеюсь, эта информация была вам интересна.
C уважением, Андрей.

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

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



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

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

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

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



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


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