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


Balls and holes PC game / Balls and Holes PC игра
Вакансии
Игродельня
Today
20 февраля 2019 19:22
Теги создание сайтов, создание игр, дизайн, игры, информатика, уроки photshop, php, c++, музыка, delphi, cms, робосайт
Статьи сайта
megainformatic - Купить Уроки Photoshop - Чудеса

megainformatic - Уроки Photoshop

megainformatic - Уроки Photoshop - Рисуем волка из мультфильма

megainformatic - Уроки Photoshop - Рисуем волка из мультфильма стр 2

megainformatic - Уроки Photoshop - Рисуем волка из мультфильма стр 3

megainformatic - Уроки Photoshop - Рисуем волка из мультфильма стр 4

megainformatic - Уроки Photoshop - Анимируем волка из мультфильма

megainformatic - Уроки Photoshop - Анимируем волка из мультфильма стр 2

megainformatic - Уроки Photoshop - Анимируем волка из мультфильма стр 3

megainformatic - Уроки Photoshop - Анимируем волка из мультфильма стр 4

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

megainformatic - Оплата заказа через Сбербанк

megainformatic - Пример игры с исходным кодом Donuts3D

megainformatic - Как создать игру ВЕСЕЛЫЙ БУКВОЕЖКА - программируем сами

megainformatic - Как создать игру ВЕСЕЛЫЙ БУКВОЕЖКА - создаем игровую оболочку

megainformatic - Открытый Полный Исходный код игры Дорога в Город

megainformatic - Как создать игру - Веселый Единственный Буквоежка - программируем основу будущей игры

megainformatic - Как создать игру - Веселый Единственный Буквоежка - выводим заставку

megainformatic - Как создать игру - Веселый Единственный Буквоежка - игровое меню

megainformatic - Как создать игру - Веселый Единственный Буквоежка - движение и анимация героя

Как Создать игру ВЕБ - Веселый Единственный Буквоежка - Программируем сами

Как Создать игру ВЕБ - Веселый Единственный Буквоежка - Программируем сами

megainformatic - Примеры моих работ

megainformatic - Музыкальные темы

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

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

megainformatic - Онлайн Обучение, Репетитор

megainformatic - Уроки Photoshop - Рисуем и Анимируем

megainformatic - Уроки Photoshop - Рисуем и Анимируем - Урок 1 - Старт

megainformatic - Уроки Photoshop - Рисуем и Анимируем на AllSoft.ru

megainformatic - DirectX 9c - Изучаем пример MultAnimation

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

megainformatic - Темы для WordPress

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

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

скачать megainformatic cms

megainformatic - Итоги 2010 года

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

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

megainformatic - Новости - страница 2

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

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

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

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

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

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

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

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

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

Технологии WEB

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

Часто Задаваемые Вопросы

Продукты

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

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

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

подробнее

ria pc game - доска почета



значок / badge имя / name статус / status описание / description
ria pc game значок badge Харухи Судзумия БРОНЗОВЫЙ ЮЗЕР Подарки: имя в финальных титрах проекта, благодарность лично от megainformatic и от Риа, специальный доступ в игру, который открывает больше возможностей. Специальное персональное место в игре
ria pc game значок badge Александр Сычев СЕРЕБРЯНЫЙ ЮЗЕР Подарки: имя в финальных титрах проекта, благодарность лично от megainformatic и от Риа, специальный доступ в игру, который открывает больше возможностей. Специальное персональное место в игре (будет доступно в июльской версии игры). Возможность создавать свои собственные игровые проекты на движке fle game engine, возможность расширить движок или даже написать свой собственный используя накопленный в fle game engine опыт и наработки.
ria pc game значок badge Дмитрий Долгов БРОНЗОВЫЙ ЮЗЕР Подарки: имя в финальных титрах проекта, благодарность лично от megainformatic и от Риа, специальный доступ в игру, который открывает больше возможностей. Специальное персональное место в игре (будет доступно в июльской версии игры).


подробнее

     
  Инструкция по оплате услуг средствами WebMoney  
     
 

1. Если у Вас нет кошелька WebMoney, откройте его на сайте www.webmoney.ru.

2. Запустите WebMoney Keeper.

start_wm_keeper.jpg

3. Откройте в интернет-браузере главную страницу нашего сайта - megainformatic.ru

open_www.chitaonline.ru.jpg

4. Найдите желаемый товар, который хотите заказать и нажмите кнопку КУПИТЬ расположенную напротив него

own_cabinet_panel.jpg

5. Вы попадете на новую страницу сайта, где Вам нужно выбрать способ оплаты WebMoney

 
     
 

6. Нажмите кнопку Подтвердить

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

8. На следующей странице заполните Ваши Фамилию Имя Отчество и е-майл адрес, на который нужно выполнять доставку заказанного товара, после чего снова нажмите кнопку Подтвердить

9. В открывшемся окне проверьте сумму платежа и нажмите кнопку Оплатить

10. Внимательно посмотрите код и нажмите кнопку Далее.

11. В появившемся окне нажмите кнопку Продолжить

a_m_4.jpg

12. В открывшемся полупрозрачном окне еще раз проверьте сумму, название товара и ФИО, введите код, который ранее запомнили и нажмите кнопку Да.

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

14. На ваш e-mail придет уведомление. А после зачисления средств на счёт нашего магазина - обычно в течение дня - будет выполнена доставка товара на Ваш e-mail.

 
     
     
     
     
подробнее

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

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

Рассмотрение программирования игр под 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] [далее]  
     
подробнее

роман Eternity Вечность - автор Синицин Андрей megainformatic - страница 3

 

к странице 1 к странице 2 страница 3 к странице 4

 

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

Нюрнн не питал ничего плохого к Антону и не желал ему отомстить за выбитые зубы. Он был ему благодарен. Ведь гораздо серьезнее и хуже могло быть если бы тот оказался простым подонком. И просто бы спустил курок. Тогда бы Нюрнну не жить. И ничего бы этого не было.

* * *

После того разговора, со следователем, прошло довольно много времени, что-то около месяца.

Она начинала беспокоиться. Антон и раньше бывало отсутствовал по нескольку дней, а иногда и недель. А тут он исчез надолго и не давал никакой весточки.

А тут ещё этот следователь.

Антон преступник ? Он нарушает закон ? В это невозможно поверить. Он мухи не обидит. Всегда чуткий и внимательный. Спокойный. Вдумчивый. С ним всегда интересно. Он может умно пошутить. Рассказать какую-нибудь поучительную историю из своей жизни.

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

Где он сейчас и что с ним ? Может быть он тоже попал в какую-то беду, из которой не может выпутаться самостоятельно ? Также как я, когда он помог мне. Значит и я обязана выяснить и попытаться помочь. Ведь я по-настоящему люблю Антона. Я обязана ему всем, что у меня есть. И ради него я готова пойти на все.

Теперь да. До момента, пока я его не встретила, все было иначе. Я жила только ради себя.

Теперь снова одиночество. Вопросы, на которых пока нет ответа. Где Антон сейчас и как его найти ?

У сложных задач всегда есть решение. Их надо просто разделять на небольшие. А как же тут ?

Ведь я даже не представляю, с чего мне начать.

Аня пришла на работу. Она работала продавцом в супермаркете. Каждый день поток людей.
 Но больше всего, обычно к вечеру. Утром, к открытию, не так много, а днём почти тишина.
 Если бы не обязанности, можно совсем уйти на час, а то и больше.

Однажды в такое время затишья, когда посетителей не было, а все кто работал в эту смену
 (их было не так много, всего 3 человека) так вот, дежурный охранник дежурил где-то на
 другом конце зала, за стойками и полками, оставленными товарами, его совсем не было видно.
 Другие двое продавцов - Лена и Сергей, что-то делали вместе, наверное проверяли срок
 годности товара, или что-то ещё.

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

Сережка как-то поинтересовался, есть ли у Ани друг, а то может скучно одной, так он
 мог бы познакомить её кое с кем.

- Не нужно Сережа. Не стоит тебе про это думать и переживать за меня.

- Ладно, больше не буду.

Но Ане приходили мысли одна тяжелее другой: А вдруг она больше никогда-никогда не
 увидит Антона. Вдруг он пропал безвестно и навсегда ?
Она отогнала эти мысли от себя и заставила подумать о чём-то хорошем.

Нет. Она ни за что и никогда не останется теперь одна. Она будет действовать. 
Пока не зная как, но уверена что будет !

Она думала несколько дней и ночей. Ничего дельного не приходило в голову.

Что бы она делала будь на месте Антона ? Но она не могла представить себя на его месте.
Можно ли узнать куда он отправился в этот последний и самый неудачный раз ?
Наверное можно, но как ?

Где найти нужную зацепку ?

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

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

Аня вытерла её и убрала на место. Она стала убираться дальше и ничего больше не заметила.
 Но на следующий день, когда одевалась,
случайно заметила какой-то клочок бумаги, торчащий из под кровати.

Она хотела было выбросить его в мусор, но остановилась и присмотрелась по-внимательнее.

Это была по-всей видимости какая-то записка или заметка. Толком ничего нельзя было
 разобрать, т. к. присутствовали только обрывки фраз.
Всё самое нужное отсутствовало.

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

Она думала об этом утром, думала на работе, думала вечером и по-ночам.
И вот пришел день отгадки. А произошло это так.

Во-время дневной смены, когда в супермаркете как обычно и бывало днем, практически
 не было покупателей, Аня читала в своём мобильном новости одного из сайтов.
Читая и листая странички, она вдруг словно громом пораженная, увидела кусочки тех самых фраз, 
которые были в злосчастном клочке, который она нашла.

записка

Аня вышла на улицу. Рабочий день был окончен. Вечерело. Она решила действовать и найти Антона во-что-бы-то-ни-стало.

Какие бы трудности не происходили, есть мечта которая придает сил. Усилия приложены. Результат будет получен не сразу, а через какое-то время.

Можно написать в поисковике: Как найти Антона ? Но это не даст ответа. Поисковики выдают только информацию по слову, но не по смыслу, который пользователь может вкладывать в это слово.

* * *

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

В голову приходили самые дурные мысли. Жить не хотелось. Антона она возможно больше никогда не увидит, потому что не знает жив ли он и как его найти.

Надежды не было ? Где-то в глубине души, возможно, еще остались её капли.

Мир который они построили был разрушен. Дорога шла в никуда.

Терзаемая тревожным сном она проснулась. Уже было темно. Дождь барабанил в окно. Но и не только дождь. Был еще какой-то странный звук.

Аня пробралась на кухню: подумала - "возможно форточка от ветра стукнула". Вошла на кухню, зажгла свет и увидела голубя.

Он был весь мокрый, сидел в углу нахохлившись.

- Бедненький, - Аня взяла голубя, пошла в ванную комнату и аккуратно обтерла его полотенцем. Голубь принял это спокойно и как должное.

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

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

- Вот чудеса ! - Аня сразу почувствовала, что вот оно, наконец !

Так и есть !!! Это весточка от Антона.

Он писал: Милая, ничего не бойся. Со мной всё в порядке. Никому ничего не говори и живи как обычно. Через три дня ты получишь конверт. Сделай всё в точности как будет указано в том письме. Целую, любимая. Антон.

Вот оно ! Ура ! Аня уже не могла спать.

Когда она только только уснула, раздался звонок телефона. Она взяла трубку.

- Кто говорит ?

- Слон.

- Откуда ?

- От Верблюда.

- Что Вам надо ?

- Шоколада.

- А мармелада не надо ?

- Я Вас просил мне позвонить, если что-то изменится ? Это Федин.

- Извините, Степан, разве что-то изменилось ? К тому же Вы разбудили меня посреди ночи. Что случилось ?

- Ну я надеялся, что Вы позвоните. Да. Случилось.

- Хорошо. Что нужно сделать мне ?

- Мы должны с Вами встретиться. Знаете ночное кафе недалеко от вашего дома ?

- Да.

- Жду Вас там через полчаса.

- Ок.

* * *

- Итак, Анна, Вы получили письмо ?

- Получила.

- Почему же сразу не сообщили об этом ?

- Потому что я еще не успела решить, будет ли это Вам полезно.

- Хорошо будем считать, что так.

- А откуда Вы узнали про письмо ? Вы что, за мной следили ?

- Да, но это было сделано в целях Вашей же безопасности.

- Вы лжете. Зачем Вам это письмо ?

- Вы же умная девушка и понимаете, что в этом мире не всё так просто.

- Вам нужно письмо ?

- Мне нужна информация. Я хочу понять кто за этим стоит и для чего они это делают.

- Понятно инспектор, Вы хотите поймать более крупную рыбу, а я лишь наживка.

- Что поделать. Все мы игрушки в чьих-то руках. Я против Вас лично ничего не имею.

- Тогда давайте ближе к делу. В письме говорится ...

* * *

Антон спал и ему снилось недалекое его прошлое. Как он осваивал Windows Sockets 2.

ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.WIN32COM.v10.en/winsock/winsock/using_winsock.htm

Тестирование на примере приложения с диалоговым окном MFC.

по нажатию ОК происходит закрытие окна.

Надо чтобы окно не закрывалось - чтобы можно было проверить работу win sock.

Для этого делаем дополнительную кнопку клик по которой будет методом, в котором будет
тестироваться функциональность Windows Sockets 2.


Пример, где можно посмотреть как обрабатывается нажатие кнопок на форме -
ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.VisualStudio.v80.en/dv_vcsample/local/sampleexecutables/MFC/general/CmnCtrl1.zip


вкладка -
CAnimateControl

содержит кнопки Play и Stop

Как реализуется нажатие на эти кнопки ?


на форме CAnimateControl
есть кнопка Play
IDC_PLAY


в коде есть -

BEGIN_MESSAGE_MAP(CAnimateCtrlPage, CPropertyPage)

//...

ON_BN_CLICKED(IDC_PLAY, OnPlay)






class CAnimateCtrlPage : public CPropertyPage
{

	afx_msg void OnPlay();
	
	
	
//...


void CAnimateCtrlPage::OnPlay()


Нужно записывать код вручную или надо генерировать ? И если генерировать, то как ?


На кнопке кликаем правой кнопкой и генерируем Add Event Handler


Получилось -

void Cwinsock_samp1Dlg::OnBnClickedButtonTest()

Как теперь получить IDC_STATIC и установить его текстовое свойство, чтобы
увидеть результат работы ?

к странице 1 к странице 2 страница 3 к странице 4

Creating game on fle game engine - Simple game

page 10 - Testing collisions



читать данную статью на русском

Defining boundaries for the ball and hole need to check their intersection - it will be called the mechanism of collision checking.





Content

page 1 - Sprites

page 2 - Objects

page 3 - Overlay objects

page 4 - Coding - Setting parameters for the Scene Editor fge and write code to display the sprite ball in your first gaming application

page 5 - Show jumped ball

page 6 - Loading game scene

page 7 - Moving game scene

page 8 - Foreground - Closing of the scene from the cavities by means of a black texture with a slot, restricts the movement of the scene

page 9 - We realize getting into the correct hole and around the holes - holes define the boundaries of sprites and sprite jumped ball

page 10 - Testing collisions

page 11 - Game score, sounds, music







First, for our game objects - hole and jumping ball need to define and mark the boundaries of these properties so that they can be used.

Create a file for the detection limit

simple_game\Media\prop_desc\collision_rects_desc.txt



And we define border -

ball; 0.0f; -0.07f; 0.08f; -0.16f; 0.5f;
hole; 0.138510f; -0.144f; 0.1f; -0.085f; 1.0f;


1 value - is the name of the game object, the following 4 parameters - its boundaries - the left upper point - x and y, and the lower right - also.
The last value - this is the scale factor - it is taken when calculating the boundaries.

Now create a file for a description of the properties - to establish a link between the objects and the boundaries of game objects

simple_game\Media\prop_desc\game_object_class_properies.txt



We write to -

//
// description Ball properties
//
begin =;
Name = ball;
Collided = true;
end =;
//
// description Hole properties
//
begin =;
Name = hole;
Collided = true;
end =;


As you can see the description of a particular notation, ie. a meta-language.
Property Name - represents the ID of the game object to which will be attached property boundaries defined by the borders of the file.

Property Collided = true - means that will be used collision checking or otherwise collisions for a given game object. The value can be set in false. But in the context of this lesson to us for both objects need collision checking.

Real collisions not allow a single game object to pass through the other. For example, if a game player object encounters an enemy or a wall - it does not pass through it.

In our case it will set a slightly different behavior: the ball can pass through the hole. It will be only recorded the fact of falling into the hole and nothing else.

In other words, collision detection will work the usual way, and the results will be used a little differently - a natural phenomenon of repulsion of objects from each other will not be used.



To implement the collision check jumping balls with holes need to do the following:

In module

start.cpp



Include header files collision.h and game_object_properties.h -

after line

#include "textures.h"



add -

#include "game_object_properties.h"
#include "collision.h"





after line

#define SimpleGameScenesPath L"\\Media\\textures\\environment\\scenes\\simple_game\\"



add -

//==========================================
//
// names descriptions game objects properties files
// and collision boundaries
//
//==========================================

#define GameObjectPropertyValue L"\\Media\\prop_desc\\game_object_class_properies.txt"

//indexes game objects having properties in the properties file
#define ball_prop 0
#define hole_prop 1


For movements of jumping ball, and check for collisions and processing add

start.h



After line -

D3DXVECTOR2 m_scrCursorPos;



this code -

//move jumping ball
void MoveJumpedBall();
float m_fCurrentTimer;
float m_fTimeDelay;
float m_fMoveSpeed;

D3DXVECTOR2 m_v2MoveDirs;
void ChangeMoveDirs(int Dir);

void JumpedBallContactHole();

bool m_bContactWithHoleDetected;
float m_fHoleX;
float m_fHoleY;

bool change_moved_ball_TimePause(float PauseInterval = 0.0f);
void change_moved_ball_ResetPauseTimer();
DWORD change_moved_ball_m_dwOldTime;
DWORD change_moved_ball_m_dwTime;
float change_moved_ball_m_fTimePeriod;

//overrided scene and its methods

//hide plates of all holes (its front part)
void CreateOverridedGameScene();

CPtrArray* m_pOverridedGameScene; //an array of elements of overrided game scene
void FreeOverridedGameScene();

//hide/show mouse pointer
void HideSystemMouseCursorView(bool Hide);

//score hits in the hole
int m_iHoleHits;
bool m_bInHole;

//reset falling into hole
bool hole_hit_TimePause(float PauseInterval = 0.0f);
void hole_hit_ResetPauseTimer();
DWORD hole_hit_m_dwOldTime;
DWORD hole_hit_m_dwTime;
float hole_hit_m_fTimePeriod;



In module

start.cpp



1)

Add

In method
CD3DGameApp::FrameMove



after line

g_Splash.Anim();

code -

MoveJumpedBall();

At the end of the module

start.cpp



add code -

//move jumping ball
void CD3DGameApp::MoveJumpedBall()
{
g_AI_Ball_Sprite.Anim();

change_moved_ball_TimePause(m_fTimeDelay);
hole_hit_TimePause(2.0f);
//check the ball contact with the hole
JumpedBallContactHole();
}


The implementation of other methods and their use you can look yourself in the code of module
start.cpp



Let me just note that in order to check the ball collision with the boundaries of the hole using a function call CollisionDetected, which checks whether the object boundaries intersect ball with hole object boundaries and if so - it is returned true.



If a collision is fixed - the plate for this hole (the front part of it is displayed), to simulate getting the ball in the hole. As soon as the ball moves away from the hole in the side - a collision will have to return false and plate for this hole is no longer displayed. Visually, the ball will just jump on the surface of the landscape.





Download the game finished simple game version 1.0.0 4.01.2017 (without sourse code).

Source code and other useful materials and tools you get with a paid subscription order !


Size: 51,8 Mb



To have the opportunity to create their own game on the basis of an example simple_game with unlimited possibilities of further expansion! - Subscribe to fle game engine -


Price: 10 usd.

Subscribing to fle game engine You get an example of the game simple game with source code, and you can not just read everything that will be described below, but do yourself in your own application with the possibility of unlimited expansion. Also, you get

for the latest version Scene Editor fge 1.0.2 (on current moment) with support for more features: grid settings, scrolling, and more. In the free version, these features are not supported. more details about the distibutive of a paid subscription.



[previous] [next]



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

Registered comments



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


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