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


Balls and holes PC game / Balls and Holes PC игра
Вакансии
Игродельня
Сегодня
22 февраля 2019 15:30
Вход Регистрация Забыли пароль ?

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

Теги создание сайтов, создание игр, дизайн, игры, информатика, уроки photshop, php, c++, музыка, delphi, cms, робосайт
Статьи сайта
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

megainformatic cms e-pro Автоматизация Обработки Уведомлений о Заказах по партнерским программам

megainformatic cms e-pro Автоматизация Обработки Уведомлений о Заказах по партнерским программам

webinformatic: Музыкальная страничка трэкера

megainformatic - Создание музыки и звука

webinformatic: Создание музыки и звука: урок 2

megainformatic - Создание музыки и звука: урок 3 - настройка Impulse Tracker для работы в WinXP

megainformatic - Создание музыки и звука: урок 4 - Введение в Mod Plug Tracker

megainformatic - Создание музыки и звука: урок 5 - Первая композиция в Mod Plug Tracker

megainformatic - Создание музыки в Impulse Tracker 2.14 - урок 6 - Ввод Нот

подробнее

Развитие сайта - временная капсула


Развитие сайта - это его дальнейшая жизнь, которая
начинается с момента когда он был создан.

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

Поэтому расскажу о своем.


В далеком 2006 году я начал делать свой первый сайт.

Тогда еще на бесплатном хостинге и без поддержки динамического
наполнения - т. е. на голом html, который я толком то еще
и не знал.

Для создания применял конструктор html страниц - dream weaver.

Уже не помню какая там версия была, то ли 3, то ли 5.

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

С тех давних пор конечно многое изменилось.

Я освоил html / css / php / mysql / js.

Но знаний никогда не бывает достаточно.

Сейчас уже появляются новые технологии, новые инструменты.

Например уже мало знать как сверстать сайт.

Желательно уметь верстать его адаптивно, мобильно.

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

Одним словом жизнь не стоит на месте.

Поэтому знания приходится постоянно пополнять и расширять.

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

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

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

Но нет, такого не происходит, и думаю не произойдет никогда.

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

Особенно игр.

Не секрет, что каждый мечтает создать свою игру.

Но с появлением таких площадок как steam, качество проектов
упало почти до нуля.

Поскольку игр очень много, то интерес к ним обесценивается.

Это как взять и продавать алмазы по дешевке.

Если алмазы стоят недешево и купить их не так легко, то
они и ценятся выше.

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

Сейчас же масса второсортных проектов. Просто потому что
возможностей создать их - море, но вот возможности довести
начатое до конца хватает не у всех.

Когда проект начат, энтузиазм угасает и начинается рутина,
то моментально пропадает к нему интерес.

А значит игра (приложение, какое-то хорошее начинание) откладывается
в долгий ящик, лежит там и пылится до лучших времен, а может
и навсегда.

Таких игр (приложений, сайтов, каких-то хороших начинаний) очень
и очень много. Гораздо больше чем завершенных как логически, так
и технологически.

Я не буду лукавить и скажу честно, со мной все описанное
тоже происходило.

Несколько первых проектов (игр) так и не были завершены.
Иногда не хватало знаний и навыков, но чаще всего банально
не было времени или желания продолжать начатое.

Почему ?

Оправданий можно найти миллион. Но все оправдания - оправданны.
Уж простите за тавтологию.

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

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

Ну и конечно же главный тормоз прогресса - это замыкаться
в себе.

Любой проект конечно же делаешь в первую очередь для себя.
Чтобы узнать что-то новое и открыть уже известное.

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

Итак, я подошел к теме - что такое развитие сайта ?

Это не только его технологическая составляющая, но и цели
и задачи, которые должен решать сайт, ради которых он
создавался и ради которых он продолжает жить и развиваться.

САЙТ СВОЙ ИЛИ НЕ СВОЙ

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

Можно привлечь пользователей, которые заинтересуются.

С одной стороны это гораздо легче, чем пытаться создать
свой сайт с нуля.

Но то что легко дается, легко и уходит.

Многие это уже поняли и потому интерес к социальным сетям
немного поугас. И уже нет такого бума, какой был тогда,
когда они только только появились.

Основная цель любой соц. сети - это общение между пользователями.

Я человек не слишком общительный, поэтому особого увлечения
социальными сетями не испытывал.

Однако понимаю, что совсем без общения сложно вообще кого-либо
заинтересовать своим проектом.

Так что вторая составляющая развития любого сайта - это его
продвижение в массы.

Это не только навязчивая реклама и самореклама везде где только
возможно, но и налаживание контактов, деловых связей и
многого другого.

И все это можно найти на просторах сети. Это могут быть
как социальные сети, так и какие-то самостоятельные проекты.



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


Каждый проект (игра, сайт, какое-то иное начинание) несет с собой
какую-то цель. Он решает некоторый вопрос или проблему, которая
возникает у людей.

Целей этих чаще всего несколько и некоторые из них совсем не
очевидны даже их создателю.


Что же это за слова, по которым можно найти искомое ?

Их никто не знает. Потому что как и сайт, интернет это живая,
динамичная система.

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




подробнее

     
     
  уроки Photoshop - чудесаКупить Уроки Photoshop - Чудеса на allsoft.ru  
     
  Уроки Photoshop - Чудеса  
     
  Нет никого и ничего мудрее природы. Человек - дитя природы.  
     
 

Вот и пришло время чудес. Попробуем сотворить что-нибудь красивое и интересное. В этом нам поможет профессиональная программа для обработки графики - Adobe Photoshop.

Какую версию использовать ? Любую доступную Вам - можно 6, 7, 8 (CS), 9 (CS 2), 10 (CS 3), CS4, CS5 и т.д. Кому что нравится.

Принципы рассмотренные здесь справедливы для любой из этих версий.

 
     
 

Какие специальные знания потребуются ? Думаю, что никаких особых знаний не потребуется, единственное, я надеюсь, что Вы обладаете хотя бы базовыми знаниями работы на ПК, т. е. Вам не нужно объяснять как установить Photoshop, как запустить его, как создать папку или файл, открыть изображение из Photoshop.

Во всём остальном можно будет разобраться, по ходу работы.

 
     
  В этом сборнике статей мы рассмотрим следующие темы:  
     
  - Коллаж от нуля; Коллаж от нулявозьмем фото и на его примере создадим пейзаж, затем добавим еще новых элементов и превратим в коллаж  
     
  - Рисуем девушку; Рисуем девушкукак нарисовать девушку взяв за основу одну или несколько фотографий  
     
  - Считаем звезды; Считаем звездысоздаем изображения космоса, звёзд и туманностей  
     
  - О, эта морская стихия; как создать коллаж на морскую тематикукак создать коллаж на морскую тематику  
     
  - Подводный мир; Подводный мирпродолжаем погружение в морские пучины  
     
  - Сны наяву; рисуем сказочный пейзаж райских лазурных берегов рисуем сказочный пейзаж райских лазурных берегов  
     
  - Дорогами исканий; дороги поисков приведут нас к созданию таинственного леса дороги поисков приведут нас к созданию таинственного леса  
     
  - Путешествие; Путешествиеотправляемся в путешествие по 2d- и 3d-мирам  
     
  - Мудрость природы;  
     
  - Шаг за шагом;  
     
  - Вселенная и космос;  
     
  - Грани мироздания;  
     
  - Красоты мира;  
     
  - Родной край;  
     
  - Удивительный мир растений;  
     
  - Загадки мира насекомых;  
     
  - Шум большого города;  
     
  - Праздник всегда с тобой !  
     
     
     
     
     
     
 

Надеюсь, что эти статьи помогли Вам узнать еще больше о возможностях Photoshop и научили более профессиональной работе в этой программе.

Спасибо за внимание и желаю Вам творческих успехов !!!

 
     
подробнее

Поговорим о компьютерной музыке

подробнее

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

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

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

 
     
  [содержание] [назад] [страница 1] [далее]  
     
  Введение в 2d-игры - страница 1  
     
 

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

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

О том как получить исходный код будет рассказано далее.

 
     
  Запускаем MSVS 2005 или выше - то, что у Вас есть под рукой.  
     
  Выбираем последовательно пункты меню File > New > Project  
     
  В открывшемся окне  
     
  создаем проект win32  
     
 

Выбираем пункты - в окошке Project Types:

Visual C++ > Win32,

в окошке Templates:

Win32 Project

 
     
 

Поля Name, Location, Solution Name заполняем именем проекта, указываем где сохранить проект нажав кнопку Browse...

и нажимаем OK

 
     
  описываем имя и расположение будущего проекта  
     
  Ждём некоторое время и вот - Среда разработки MSVS создает для нас шаблон проекта Win32 с именем Fle, искать его нужно в той папке, куда Вы указали его сохранить - проект будет окончательно создан в указанной папке после выполнения еще двух дополнительных шагов -  
     
 

Теперь в открывшемся новом Мастере Настроек проекта нужно задать некоторые опции -

В этом окошке Просто написано, что текущие настройки проекта выполнены для обычного Windows - приложения и нужно нажать кнопку Finish чтобы закрыть окно мастера, либо нажать кнопку Next чтобы увидеть еще некоторые опции

 
     
  окно мастера настроек проекта  
     
  Если хотите увидеть эти дополнительные опции - нажимайте Next  
     
  Менять ничего не нужно, просто нажмите Finish  
     
  Проект создан. Можете убедиться в этом сами - откройте указанную папку и увидите там множество созданных специальных файлов. В большинстве своем это обычные текстовые файлы, которые можно редактировать не только в Среде разработки MSVS, но и любым текстовым редактором, однако не всегда это следует делать, лучше всего делать это непосредственно в самой среде MSVS.  
     
 

Чем же так страшна эта MSVS и что же там такого в ней непонятного ? Об этом мы сейчас и поговорим.

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

 
     
 

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

Можно попробовать выполнить сборку проекта - Build > Build Fle, где Fle имя Вашего проекта, а затем попробовать запустить его на выполнение - прямо из среды MSVS - нажав кнопку Start Debugging на панели инструментов, либо выбрав пункт меню Debug > Start Debugging, либо перейдя в папку созданного проекта, в подпапку Debug - двойным щелчком на созданном файле с именем проекта и расширением EXE.

 
     
  кнопка Start Debugging на панели инструментов  
     
 

Созданное приложение основано на шаблоне Win32 и предназначено для обращения к функциям операционной системы посредством WinAPI.

Однако в реальных игровых приложениях Вам могут понадобиться классы MFC - Microsoft Foundation Classes. В частности, в примере нашей игры ВЕСЕЛЫЙ БУКВОЕЖКА широко будут применяться такие классы как CPtrArray, CWinApp и некоторые другие.

Для того, чтобы использовать MFC совместно с DirectX нужно совсем немного.

Попробуем сделать такое приложение. Закрываем созданный проект - File > Close Solution, если программа спрашивает о сохранении изменений - нажимаем Yes - иначе изменения в проекте не будут сохранены !!!

 
     
 

Делаем всё то же самое, что Вы делали до этого -

File > New > Project

Но далее уже выбираем MFC > MFC Application

 
     
  создание MFC приложения  
     
 

В появившемся окне Мастера настроек MFC - приложения нужно задать следующие опции -

в первом окне просто нажать кнопку Next

 
     
  во втором окне -  
     
  настройки проекта MFC  
     
 

Мы выбрали Dialog Based, потому что наше приложение, да и вообще все игровые приложения должны быть основаны на диалоговых окнах;

Use MFC in a static library - чтобы используемые библиотеки подключались к исполнимому файлу статично - без использования дополнительных DLL;

Resource language: Английский (США) - т. к. других вариантов не наблюдается;

Use Unicode libraries - для использования текстовых строк в формате Unicode

 
     
  В следующем окне уберите все флажки кроме Minimize box и System menu  
     
  В следующем окне уберите все флажки кроме Common Control Manifest  
     
  В последнем окне измените названия создаваемых классов или оставьте как есть  
     
  Ждём некоторое время и вуаля - шаблон приложения создан. Аналогично можно попробовать его собрать и запустить на выполнение - клавиша [F7] - сборка, [F5] - запуск на выполнение.  
     
  Как видим приложение работает достаточно просто - появляется соответствующее окно содержащее кнопки ОК и Cancel.  
     
  Изменив используемый шаблон окна диалога можно убрать всё лишнее и оставить только само окно, кроме того, желательно изменить стандартную иконку MFC приложения на Вашу собственную. О том как создавать иконку для приложения Мы уже рассматривали в уроке Изучаем и модифицируем пример CreateDevice - страница 3  
     
  Современные игры, например от таких издателей как Nevosoft и Alawar содержат специальную игровую оболочку, содержащую кнопки Старт, Купить, Другие игры и что-то еще в этом роде. В следующем уроке мы рассмотрим как быстро и просто реализовать свою собственную оболочку для игры ВЕСЕЛЫЙ БУКВОЕЖКА. Она будет выглядеть примерно так -  
     
  игровая оболочка  
     
     
     
     
  [содержание] [назад] [страница 1] [далее]  
     
     
 

Видео урок посвященный созданию игры Ну, Погоди ! - рождение игры часть 3.

Покажет Вам простейшую элементарную игру и особенности её создания в delphi 7 на directx 8.1 api.

 
     
 
Урок 3 Оконный и полноэкранный режимы работы D3D-приложения. Управление игрой средствами DirectInput8
 
О том, что потребуется для данного урока читайте в основном разделе - уроки delphi directx 8.1
 
Далее у читателя подразумевается наличие базовых знаний языка Delphi.
 
[назад] [страница 1] [далее] [к содержанию]
 
 
 

Оконный и полноэкранный режимы работы имеются во всех современных играх написанных и в OpenGL и в DirectX.

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

Оконный режим подходит для небольших, казуальных игр, использующих немного ресурсов и не требующих максимального быстродействия. Однако имейте в виду, что оконный режим - это режим главным образом предназначенный для отладочных целей. Максимально достижимое быстродействие достигается ТОЛЬКО в полноэкранном режиме. Но этот режим не подходит для отладочных целей, т.к. в нём невозможно поймать и отследить все ошибки, кроме того, при некоторых особо фатальных ошибках возврат из этого режима вообще может оказаться невозможным без перезагрузки компьютера.

 
Именно поэтому, пока Вы еще чувствуете, что Ваша игра "сыровата", тестируйте и отлаживайте ее в оконном режиме. Он позволит Вам в особо фатальных случаях просто снимать приложение через диспетчер задач, что в случае полноэкранного режима не всегда может оказаться возможным.
 
 
 

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

Размер рабочей области окна D3D в оконном режиме определяется размерами того окна, чей обработчик (Handle) задан при передаче параметров во время создания объекта IDirect3DDevice8

В этом легко убедиться заглянув в код методов TD3DGameApp.Create_ и TD3DGameApp.CreateDisplayObjects

 
Поэтому далее мы рассмотрим лишь код и особенности, которые необходимо учитывать при включении полноэкранного режима D3D-приложения и при переключениях между полноэкранным/оконным режимами.
 
Если взять в качестве основы проект, который мы создали в предыдущем уроке, то вот код, который необходимо добавить в модуль главной формы (MainForm) этого проекта для переключения приложения в полноэкранный режим.
 

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

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

О том, как создать и использовать такое меню описано в статье - Создание игрового меню

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

Не вдаваясь в подробности документации по DirectX, которую Вы, надеюсь, найдете и изучите самостоятельно по мере необходимости, DirectInput8 - это более скоростное и эффективное средство опроса устройств ввода - клавиатуры, мыши и других подключаемых устройств (всемозможных джойстиков, рулей и прочего).

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

в пункт uses секции interface нужно подключить модуль DX8_DIUtil8.pas из библиотеки Delphi DirectX 8.1

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

const

ChangeWindowModeKey = isButton1; //константа isButton1 определена в модуле DX8_DIUtil8.pas

в описании класса D3D-приложения (класс TD3DGameApp в нашем случае) добавить поле

m_DXInput: TDXInput; //управление игрой через DirectInput

Также в описании класса нужно добавить несколько новых методов -

// Input functions
procedure SetDefaultDefKeys;
procedure CreateInputObjects;
procedure DestroyInputObjects;
procedure UpdateInput;

 

Далее в секции implementation нужно реализовать код данных методов -

procedure TD3DGameApp.SetDefaultDefKeys;
begin
FCustomKeyAssign := DefineDefaultKeys;
//процедуру DefineDefaultKeys нужно определить как локальную для модуля //главной формы Вашего проекта
end;

в секции интерфейса она записывается как

function DefineDefaultKeys: TKeyAssignList;

а в секции реализации как

function DefineDefaultKeys: TKeyAssignList;
begin
FillChar(Result, SizeOf(Result), 0);

AssignKey(Result, ChangeWindowModeKey, [Ord('W'), VK_F6]); //к данному действию привязываются клавиши W и F6

end;

далее реализуем код оставшихся методов

procedure TD3DGameApp.CreateInputObjects;
begin
SetDefaultDefKeys;
m_DXInput := TDXInput.Create(Self);
end;

procedure TD3DGameApp.DestroyInputObjects;
begin
FreeAndNil(m_DXInput);
end;

procedure TD3DGameApp.UpdateInput;
var
CurrentState: TUserInput;
begin
if not Assigned(m_DXInput) then Exit;

m_DXInput.Update;

if ChangeWindowModeKey in m_DXInput.States then {выполнить нужное действие};

end;

вызов метода CreateInputObjects нужно добавить внутри TD3DGameApp.OneTimeSceneInit

вызов метода DestroyInputObjects нужно добавить внутри TD3DGameApp.FinalCleanup или другом методе освобождения ресурсов, который вызывается из FormDestroy

вызов метода UpdateInput, в котором осуществляется обновление состояния устройств DirectInput и вызов методов обработки тех или иных действий пользователя нужно добавить внутри метода TD3DGameApp.FrameMove

 
Итак, переключение полноэкранного/оконного режимов D3D-приложения будет происходит по действию ChangeWindowModeKey. Данное действие будет вызываться клавишами [W] или [F6]. Можете использовать другие клавиши, если хотите.
 

Остается в строке кода

if ChangeWindowModeKey in m_DXInput.States then {выполнить нужное действие};

комментарий {выполнить нужное действие}

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

Таким методом является следующий -

procedure TOptionsMenu.AcceptOptions;
var
ScreenSizeMetric: TScreenSizeMetric;
begin
if g_d3dApp = nil then Exit;
ScreenSizeMetric := GetScreenSize;
if (not g_d3dApp.m_bFullScreen = Windowed) and
(g_d3dApp.m_dwScreenWidth = ScreenSizeMetric.Width) then Exit;

g_d3dApp.SwitchDisplayModes(not Windowed, ScreenSizeMetric.Width,
ScreenSizeMetric.Height);
end;

В данном случае такой метод реализован как метод объекта меню TOptionsMenu и вызывается при подтверждении смены заданных настроек приложения. В данном случае настройки достаточно просты. Проверяется заданное в настройках разрешение экрана и если произошла смена режима оконный/полноэкранный или изменилось заданное разрешение будет вызван метод SwitchDisplayModes объекта g_d3dApp, который является экземпляром класса TD3DGameApp.

В простейшем случае можно рассмотреть реализацию переключений между оконным режимом приложения и полноэкранным режимом с разрешением например 800x600 пикселей и максимальной частотой покадровой развертки поддерживаемой монитором (100 Hz или выше).

Предварительно добавьте данный метод в описание класса TD3DGameApp

function SwitchDisplayModes(bFullScreen: Boolean;
dwWidth, dwHeight: Cardinal): HRESULT;

Затем реализуйте его в коде следующим образом -

function TD3DGameApp.SwitchDisplayModes(bFullScreen: Boolean;
dwWidth, dwHeight: Cardinal): HRESULT;
var
hr: HResult;
begin
if not m_bIsActive or not m_bDisplayReady then begin
result := S_OK;
Exit;
end;

// Check to see if a change was actually requested
if bFullScreen then
begin
if ((m_dwScreenWidth = dwWidth) and (m_dwScreenHeight = dwHeight)) and
(m_bFullScreen = bFullScreen ) then
begin
result := S_OK;
Exit;
end;
end
else
begin
if not m_bFullScreen then begin
result := S_OK;
Exit;
end;
end;

// Invalidate the old display objects
m_bDisplayReady := FALSE;
InvalidateDisplayObjects;

// Set up the new presentation paramters
if bFullScreen then
begin
m_d3dpp.Windowed := FALSE;
m_d3dpp.hDeviceWindow := m_hWndMain;
m_dwScreenWidth := dwWidth;
m_d3dpp.BackBufferWidth := dwWidth;
m_dwScreenHeight := dwHeight;
m_d3dpp.BackBufferHeight := dwHeight;
m_d3dpp.BackBufferFormat := m_d3dfmtFullscreen;
end
else
begin
m_d3dpp.Windowed := TRUE;
m_d3dpp.hDeviceWindow := 0;
m_d3dpp.BackBufferWidth := 0;
m_d3dpp.BackBufferHeight := 0;

m_dwScreenWidth := dwWidth;
m_dwScreenHeight := dwHeight;

m_d3dpp.BackBufferFormat := m_DesktopMode.Format;
end;

// Reset the device
hr := m_pd3dDevice.Reset( m_d3dpp );
if SUCCEEDED(hr) then
begin
m_bFullScreen := bFullScreen;
hr := RestoreDisplayObjects;
if SUCCEEDED(hr) then
begin
m_bDisplayReady := TRUE;
result := S_OK;
Exit;
end;
end;

// If we get here, a fatal error occurred
PostMessage( m_hWndMain, WM_CLOSE, 0, 0 );
result := E_FAIL;
end;

Все недостающие поля, описанные в реализации данного метода необходимо добавить в класс TD3DGameApp и инициализировать их в методе конструктора TD3DGameApp.Create и других необходимых методах, где это понадобится.

Заметьте, что внутри данного метода каждый раз при переключении между полноэкранным/оконным режимами или при смене разрешения полноэкранного режима происходит инвалидация InvalidateDisplayObjects всех зависимых от Direct3DDevice ресурсов, вызывается метод сброса устройства Direct3DDevice, а затем происходит восстановление ресурсов RestoreDisplayObjects

Этот момент очень важно учитывать при создании многоуровневых игр, в которых ресурсы для каждого уровня различны и загружаются при разных состояниях приложения. Тогда при переключении режимов инвалидация и восстановление необходимых ресурсов должна происходить в зависимости от заданного состояния приложения, в противном случае Вы получите логические ошибки, ошибки времени выполнения и множество других ошибок!!!

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

 
Для лучшего понимания этих важных моментов, Вам обязательно нужно познакомиться с исходным кодом игры [Пример игры Donuts3D], а также со статьями и исходниками посвященными работе над проектом Нечто: Необъяснимое
 
В качестве практики предлагаю Вам внедрить вышеописанные технологии в код проекта своего D3D-приложения посвященного практической работе над данным уроком.
 
[назад] [страница 1] [далее] [к содержанию]
 
 
 
 
     
     
     
     
     
megainformatic live chat
Начать беседу
X
 

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



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


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