Четверг, 28.11.2024, 10:29
Приветствую Вас Гость | RSS
Главная | Движок HGE. Второй туториал | Регистрация | Вход
Языки Программирования (adsbygoogle = window.adsbygoogle || []).push({});
Форма входа
Меню сайта

Календарь
«  Ноябрь 2024  »
ПнВтСрЧтПтСбВс
    123
45678910
11121314151617
18192021222324
252627282930

Наш опрос
Оцените мой сайт
Всего ответов: 101

Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz

  • Статистика

    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0

    reklama

    Движок HGE. Второй туториал

     
     

    Приветствую! Сегодня я переведу вам второй туториал из прилагающихся к HGE. Я пока не хочу писать отсебятины, ибо в HGE разобрался слабо. Потом напишу что-нибудь новенькое.

    // Скопируйте в папку DEBUG проекта (в случае Visual Studio) 
    // из папки "precompiled" в HGE файлы 'menu.wav' и 'particles.png'.
    
    #include <hge.h>
    
    HGE *hge=0;
    
    // Quad - это примитива HGE, 
    // использующаяся для рендеринга графики. 
    // У Quad есть 4 вершины, пронумеровынных от 
    // 0 до 3 по часовой стрелке.
    hgeQuad quad;
    
    // Хэндл звукового эффекта 
    HEFFECT snd;
    
    // Геймплейные переменные и константы 
    float x=100.0f, y=100.0f;
    float dx=0.0f, dy=0.0f;
    
    const float speed=90;
    const float friction=0.98f;
    
    // Функция проигрывает звук столкновения с 
    // параметрами, основанными на позиции и скорости
    void boom()
    {
     int pan=int((x-400)/4);
     float pitch=(dx*dx+dy*dy)*0.0005f+0.2f;
     hge->Effect_PlayEx(snd,100,pan,pitch);
    }
    
    bool FrameFunc()
    {
     // Получение времени, прошедшего с последнего вызова 
     // FrameFunc. Это поможет синхронизировать выполнение 
     // на разных машинах и видеорежимах.
     float dt=hge->Timer_GetDelta();
    
     // Клавишные процессы 
     if (hge->Input_GetKeyState(HGEK_ESCAPE)) return true;
     if (hge->Input_GetKeyState(HGEK_LEFT)) dx-=speed*dt;
     if (hge->Input_GetKeyState(HGEK_RIGHT)) dx+=speed*dt;
     if (hge->Input_GetKeyState(HGEK_UP)) dy-=speed*dt;
     if (hge->Input_GetKeyState(HGEK_DOWN)) dy+=speed*dt;
    
     // Несколько вычислений движения и отлова столкновений 
     dx*=friction; dy*=friction; x+=dx; y+=dy;
     if(x>784) {x=784-(x-784);dx=-dx;boom();}
     if(x584) {y=584-(y-584);dy=-dy;boom();}
     if(yGfx_BeginScene();
    
     // Почистим экран и закрасим его черным. 
     hge->Gfx_Clear(0);
    
     // Рендерим Quad'ы. Сейчас только один 
     // такой послужит нашим потребностям. 
     hge->Gfx_RenderQuad(&quad);
    
     // Закончим рендеринг и сцену. 
     hge->Gfx_EndScene();
    
     // RenderFunc ВСЕГДА должен возвращать false; 
     return false;
    }
    
    
    int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
    {
     // Получим интерфейс HGE.
     hge = hgeCreate(HGE_VERSION);
    
     // Установим логфайл, функцию рендеринга, фреймфункцию и заголовок. 
     hge->System_SetState(HGE_LOGFILE, "hge_tut02.log");
     hge->System_SetState(HGE_FRAMEFUNC, FrameFunc);
     hge->System_SetState(HGE_RENDERFUNC, RenderFunc);
     hge->System_SetState(HGE_TITLE, "HGE Tutorial 02 - Using input, sound and rendering");
    
     // Установим видеорежим. 
     hge->System_SetState(HGE_WINDOWED, true);
     hge->System_SetState(HGE_SCREENWIDTH, 800);
     hge->System_SetState(HGE_SCREENHEIGHT, 600);
     hge->System_SetState(HGE_SCREENBPP, 32);
    
     if(hge->System_Initiate())
     {
     // Загрузим звук и текстуры. 
     snd=hge->Effect_Load("menu.wav");
     quad.tex=hge->Texture_Load("particles.png");
     if(!snd || !quad.tex)
     {
     // Если какая-то из них не найдена, 
     // вызовем этот MsgBox. 
     MessageBox(NULL, "Can't load MENU.WAV or PARTICLES.PNG", "Error", 
     MB_OK | MB_ICONERROR | MB_APPLMODAL);
     hge->System_Shutdown();
     hge->Release();
     return 0;
     }
    
     // Настройка Quad который мы будем использовать для отрисовки спрайта 
     quad.blend=BLEND_ALPHAADD | BLEND_COLORMUL | BLEND_ZWRITE;
    
     for(int i=0;iSystem_Start();
     
     // Почистим ресурсы. 
     hge->Texture_Free(quad.tex);
     hge->Effect_Free(snd);
     }
     else MessageBox(NULL, hge->System_GetErrorMessage(), "Error", 
     MB_OK | MB_ICONERROR | MB_SYSTEMMODAL);
     
     // Почистимся и закроемся. 
     hge->System_Shutdown();
     hge->Release();
     return 0;
    }
    

    Команда компиляции, кстати говоря, должна быть та же.


    Урок 9 - Классы. 


    Copyright MyCorp © 2024
    Бесплатный хостинг uCoz