Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Nebula Device - Урок 1

Автор: Daddy
WEB-сайт: http://daddy.mirgames.ru

Хорошо, давайте начинать…

У меня не очень хорошая привычка обсуждать скриптинг Небулы. Я разделил материал на 4 части: материал Win32 и Init, Main(который обращается с модернизацией и рисованием) и последнее-Конец. WinMain (), Вы знаете то, что это делает...

bool Active-это сигнал для модернизации, чтобы остановиться. EndProgram-это просто делает active=false

Функция WinMain-очень простая и важная

#define WIN32_LEAN_AND_MEAN
#include  

bool active = false;

void Init();
void Main();
void End();

// The includes, prototypes and the global.

// WINMAIN
////////////////////////////////////////////////

int WINAPI WinMain( 
   HINSTANCE hinstance, 
   HINSTANCE hprevinstance,
   LPSTR lpcmdline,
   int ncmdshow)
{

   Init();
   active = true;
   while(active)
   {
      Main();
   }

   End();
	
   return(msg.wParam);
}

останавливаем

void EndProgram()
{
   active = false;
}

Теперь перейдём к действию

#include 
#include 
#include 

nKernelServer *KernelServer;
nInputServer *Input; 
nGfxServer *GfxServer;

void EndProgram();	//prototype

В этом действии вы просто размещаете сервер через новый и затем запрашиваете kernelserver inputserver

void Init()
{
   KernelServer = new nKernelServer;
   Input = (nInputServer *)
      KernelServer->New("ninputserver","/sys/servers/input");
   GfxServer = (nGfxServer *)ks->New("nglserver","/sys/servers/gfx");
   GfxServer->SetDisplayMode("-type(win)-w(640)-h(480)");		
      //set the display mode ( yes, through a string! ;))
   GfxServer->SetClearColor(1.0f,1.0f,1.0f,1.0f);	
      //if i dont set this the window will be all screwed up 
      //in my comp, so i left it over here..
   GfxServer->OpenDisplay();		
      //open the window
}

void Main()
{
   Input->Trigger();
      // This func handles internal events for the inputserver
   nInputEvent *InpEvent;
      // data block that holds the info about
   InpEvent = Input->FirstEvent(); 
      // get the fist event on list (or stack , i dont know) ... 
      // the func returns NULL if none

   if(InpEvent) 
   // if we have an input event(user has pressed anything)
   {
      if (InpEvent->IsDisabled()) return; 
      // if Input is disabled (?)
      switch (InpEvent->type)
      {
         case N_INPUT_KEY_DOWN:
         // user has presseda key
         {
            switch (InpEvent->key) 
            // what key?
            {
               case N_KEY_ESCAPE: EndProgram(); break; 
                  // if escape key , call endprogram to 
                  // shut down the progam.
            }
         }
      }

      while ((InpEvent = Input->NextEvent(InpEvent)));
      // empty the list(or stack) of input events
      Input->FlushEvents();// the same as above i think
   }

   if(!GfxServer->Trigger())
      EndProgram(); 
   // hadndles win32 events . when it receives a close message it 
   // returns 0 ann EndProgram() is called...
}

далее всё закрываем

void End()
{
   GfxServer->CloseDisplay();
      //close the window
   if (GfxServer) GfxServer->Release();
      // typical safe release method
   if (Input) Input->Release();
      // typical safe release method
   delete ks; 
      // delete it unconditionaly!!!! 
      //(the destructor will take care of everything)
}

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

Исходник можно скачать тут: tutor1.rar

Проект Delphi World © Выпуск 2002 - 2024
Автор проекта: USU Software
Вы можете выкупить этот проект.