Balls and holes PC game / Balls and Holes PC игра
Сегодня
24 сентября 2026
10:52
Вход Регистрация Забыли пароль ?

webinformatic - Легко ли быть программистом
Легко ли быть программистом Я никогда не планировал быть программистом. Мечты мои были совсем другими. Сначала я захотел научиться делать свои собственные игры. Это было еще в далеком 1992 году. Тогда моим первым компьютером был ЭЛЕКТРОНИКА БК-0010.01 На этом компьютере было 64 Килобайта памяти. Из них 32 Кб отводилось под ПЗУ - Постоянное Запоминающее устройство, в кото
подробнее...

Теги

сайты, игры, дизайн, продвижение, php, html, css, my sql, c++, delphi, photoshop, 3ds max, fl studio, трекерская музыка, уроки

Статьи сайта

Harbinger - Convergence | ZX Spectrum | game | Cthonian Godkiller, 2016

Harbinger - Convergence part 2 | ZX Spectrum | game | Cthonian Godkiller, 2016

Metal Man Reloaded | ZX Spectrum | game | Oleg Origin (Россия), 9713

Saboteur II | ZX Spectrum | game | Durell Software Ltd UK, 1987

Quazatron | ZX Spectrum | arcade game | Hewson Consultants Ltd UK, 1986 Graftgold Ltd, Steve Turner

Arkanoid - Revenge of Doh | ZX Spectrum | arcade game | Imagine Software Ltd UK, 1988 Graftgold Ltd, Mike Lamb, Ronny Fowles, Gari Biasillo, Mark R. Jones

Indiana Jones and the Last Crusade | ZX Spectrum | arcade game | US Gold Ltd UK, 1989, Tiertex Ltd, Mark Haigh-Hutchinson, Blue Turtle, Mark Tait

Tapper | ZX Spectrum | arcade game | US Gold Ltd UK, 1985

Kwik Snax | ZX Spectrum | arcade game | Code Masters Ltd UK, 1990

Teenage Mutant Hero Turtles | ZX Spectrum | arcade game | Image Works UK, 1990

Skate Crazy | ZX Spectrum | arcade game | Image Works UK, 1990

Trashman | ZX Spectrum | arcade game | New Generation Software UK, 1984

Subacuatic Reloaded | ZX Spectrum | arcade game | New Generation Software UK, 1984

Phantis | ZX Spectrum | arcade game | Dinamic Software Spain, 1987

RoboCop 2 | ZX Spectrum | arcade game | Ocean Software Ltd UK, 1990

Amaurote | ZX Spectrum | game | Mastertronic Added Dimension, 1987

Ghouls 'n' Ghosts | ZX Spectrum | game | US Gold Ltd, 1989

Hotshot | ZX Spectrum | game | Addictive Games Ltd, 1988

Battle City 4 | ZX Spectrum | game | Epsilon, 2016

Mr. Vintik | ZX Spectrum | game | Termojad, 2016

Capitan Trueno | ZX Spectrum | game | Dinamic Software, 1990

Bobby Bearing | ZX Spectrum | game | The Edge, 1986

Ghost 'n Goblins | ZX Spectrum | arcade game | Elite Systems Ltd, 1986

Rallybug | ZX Spectrum | arcade game | Jonathan Cauldwell, 2008

Captain Planet | ZX Spectrum | arcade game | Mindscape International Inc, 1991

Hostages | ZX Spectrum | arcade game | Infogrames, 1990

игры онлайн | games online | play online | zx-spectrum games

Pippo | ZX Spectrum | arcade game | Mastertronic Ltd, 1986

Vinnie Vole's Existential Nightmare | ZX Spectrum | arcade game | Soren Micros, 2010

Comando Quatro | ZX Spectrum | arcade game | Zigurat Software, 1989

Wizball | ZX Spectrum | arcade game | Ocean Software Ltd, 1987

Cliff Hanger | ZX Spectrum | arcade game | New Generation Software, 1986

Sly Spy: Secret Agent | ZX Spectrum | arcade game | Ocean Software Ltd, 1990

splATTR | ZX Spectrum | arcade game | Cronosoft [2], 2008

Light Corridor, The | ZX Spectrum | arcade game | Infogrames, 1991

Underground | ZX Spectrum | arcade game | System 4, 1988

Navy SEALs | ZX Spectrum | arcade game | Ocean Software Ltd, 1991

Gonzzalezz | ZX Spectrum | arcade game | Opera Soft S.A., 1989

Justin | ZX Spectrum | arcade game | CNGSoft, 2007

Cyberbig | ZX Spectrum | arcade game | Animagic S.A., 1989

Combat School | ZX Spectrum | arcade game | Ocean Software Ltd, 1987

Bounder | ZX Spectrum | arcade game | Gremlin Graphics Software Ltd, 1986

Robocop | ZX Spectrum | arcade game | Ocean Software Ltd, 1988

I, Ball | ZX Spectrum | arcade game | Firebird Software Ltd, 1987

Cray 5 | ZX Spectrum | arcade game | RetroWorks, 2011

Regeners, The | ZX Spectrum | arcade game | Reserve Co, 1995

Rolling Thunder | ZX Spectrum | arcade game | US Gold Ltd, 1988

Walker | ZX Spectrum | arcade game | Alien Factory, 1996

Mikie | ZX Spectrum | arcade game | Imagine Software Ltd, 1985

Batman: The Caped Crusader | ZX Spectrum | arcade game | Ocean Software Ltd, 1988

Barbarian | ZX Spectrum | arcade game | Melbourne House, 1988

Рекламодателям | Advertisers

Humphrey | ZX Spectrum | arcade game | Zigurat Software, 1988

TV-Game | ZX Spectrum | arcade game | Weird Science Software, 2004

Sgt. Helmet Zero | ZX Spectrum | arcade game | Ubhres Productions, 2009

Byte Me | ZX Spectrum | arcade game | Jonathan Cauldwell, 2011

     
     
 

4.12.2010, 18.12.2010

Разбор кода примера MultiAnimation (F:\GameDev\Microsoft DirectX SDK (August 2008)\Samples\C++\Direct3D\MultiAnimation)

 
     
 

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

модуль - MultiAnimation.cpp

//имя файла для земной поверхности, количество тайлов по вертикали и горизонтали

#define TXFILE_FLOOR L"\\Media\\Textures\\floor.jpg"
#define FLOOR_TILECOUNT 2

 
     
  CFirstPersonCamera g_Camera; // игровая камера  
     
 

Исполнение любого WinAPI приложения начинается с функции WinMain

поэтому в первую очередь смотрим - wWinMain

 
     
 

OnCreateDevice - функция вызывается модулем DXUT, непосредственно сразу же после создания Direct3DDevice (это происходит внутри DXUT). Загружаемые здесь ресурсы являются - D3DPOOL_MANAGED, т. е. загружаемые непосредственно в память видеокарты и зависящие от её состояния (от состояния объекта IDirect3DDevice).

загрузка моделей и текстур происходит в функции - OnResetDevice, эта функция вызывается специализированным объектом модуля DXUT.

 
     
 

После того, как будет полностью выполнена функция wWinMain приложение перейдет в цикл последовательного вызова двух функций -

OnFrameMove - метода подготовки сцены (анимации сцены);

OnFrameRender - метода отрисовки сцены.

Поступающие от системы сообщения обрабатываются в MsgProc

OnGUIEvent - обрабатывает сообщения элементов GUI (кнопок, полей ввода и т. п., эти элементы - классы DXUTgui)

KeyboardProc - обрабатываются сообщения от клавиатуры, но рассчитанные не на управление игрой, а более медленные операции, например вызов помощи/подсказки по клавише [F1] - Help.

Управление игрой требует достаточно оперативного отклика, поэтому должно происходить внутри OnFrameMove

 
     
 

Давайте сначала более детально проясним основные моменты работы кода.

Создадим резервные копии файлов MultiAnimation.h и MultiAnimation.cpp и смело начнём.

Первым шагом Я убрал (закомментировал) весь код, который относится к элементам GUI (g_DialogResourceManager, g_SettingsDlg, g_HUD), чтобы не усложнять и без того сложный код.

 
     
  Откомпилировал и убедился что всё работает.  
     
 

Далее я выяснил, что в функции MsgProc

строки кода -

if( -1 == g_dwFollow )
g_Camera.HandleMessages( hWnd, uMsg, wParam, lParam );

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

 
     
  Далее я поставил режим компиляции Debug, расставил контрольные точки во всех значимых функциях и начал отслеживать как работает код в режиме отладки.  
     
  InitApp() - выполняется в первую очередь, здесь выставляется начальное положение камеры.  
     
  ModifyDeviceSettings - проверяются возможности d3d9device, необходимые для работы данного примера. А также выставляется начальный режим работы по отрисовке геометрии на аппаратном уровне (D3DDEVTYPE_HAL).  
     
  OnCreateDevice - создается шрифт для вывода отладочной информации, загружается текстура для пола, шейдер, рассчитываются параметры расположения пола и инициализируется материал для него.  
     
  OnResetDevice - выполняется загрузка кода шейдера, геометрии, параметры камеры, освещения, сбрасывается таймер  
     
  OnFrameMove - анимируются персонажи, камера  
     
  OnFrameRender - отрисовывается сцена  
     
  далее снова вызывается функция OnFrameMove, затем OnFrameRender и этот процесс повторяется бесконечно, пока не будет выполнено закрытие приложения.  
     
  В коде собственного примера я создал аналогичные функции, поэтому вызываться они должны в такой же последовательности, иначе будут ошибки. Это и предстоит проверить.  
     
  InitApp() - в моём коде вызову данной процедуры соответствует метод CAdventure::InitCamera()  
     
 

сразу же была выявлена ошибка - первым был вызван метод CAdventure::LoadMedia()

что соответствует OnCreateDevice вот и первая ошибка !

Из-за отсутствия вызова InitCamera() сцена рисовалась некорректно. Решение - вызов метода InitCamera() был вставлен первой строчкой в реализации метода LoadMedia()

 
     
 

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

В примере MultiAnimation управление персонажами (их добавлением) и некоторые другие опции реализованы кнопками GUI. Можно поступить так же, а можно перевести результат действия этих кнопок, привязав их к каким-либо клавишам и обрабатывая нажатия посредством DirectInput.

 
     
  На этом наш краткий обзор завершен.  
     
 
Время загрузки: 2,1908