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


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

megainformatic - Веселый Буквоежка - онлайн комикс - страница 23
Веселый Буквоежка - онлайн комикс - страница 23 представляем Веселый Буквоежка - онлайн комикс. Включая и то, куда нам идти ?
подробнее...

Теги создание сайтов, создание игр, дизайн, игры, информатика, уроки photshop, php, c++, музыка, delphi, cms, робосайт
Статьи сайта
megainformatic - оплата через систему QIWI - выбор продукта

megainformatic - КАК СОЗДАТЬ СВОЮ ИГРУ - Набор разработчика игр - Нечто: Необъяснимое - в плену желаний

megainformatic - Как создать игру ? - Программируем сами - Самый первый шаг

megainformatic - Как создать игру ? - Программируем сами - Самый первый шаг - страница 2

megainformatic - Как создать игру ? - Программируем сами - Содержание

megainformatic - Как создать игру ? - Программируем сами - Самый первый шаг - страница 3

megainformatic - Как создать игру ? - Программируем сами - Изучаем и модифицируем пример CreateDevice

megainformatic - Как создать игру ? - Программируем сами - пример CreateDevice страница 2

megainformatic - Как создать игру ? - Программируем сами - пример CreateDevice страница 3

megainformatic - Как создать игру - Vertices - Вершины - страница 1

megainformatic - Как создать игру - пример Matrices

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

megainformatic - Уроки Photoshop - Чудеса - Коллаж от нуля

megainformatic - Уроки Photoshop - Чудеса - Коллаж от нуля - страница 2

megainformatic - Уроки Photoshop - Чудеса - Коллаж от нуля - страница 3

megainformatic - Уроки Photoshop - Чудеса - Коллаж от нуля - страница 4

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

подробнее

Шаг 4 в освоении Flash-технологий - как анимировать персонажа и управлять им

[к содержанию]

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

В данном обширном уроке я попытался охватить следующую тему:

Как создать простейшую игру - анимированный персонаж ходит по экрану по нажатию клавиш стрелок ВЛЕВО/ВПРАВО

Вопросы рассматриваемые в ходе урока:

1) Как создать приложение в среде FlashDevelop ?
2) Как подготовить анимацию персонажа во Flash CS5 и экспортировать в SWC библиотеку
3) Как использовать полученную в SWC библиотеке анимацию в AS3-приложении
4) Как управлять анимированным персонажем от клавиатуры и мыши
5) Фокус ввода для Flash-приложения в браузере

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

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



1) Как создать приложение в среде FlashDevelop ?

Ну что ж, приступим.

1) Запускаем IDE FlashDevelop;

2) Закрываем текущий проект (если он был открыт) File > Close All, создаем новый проект AS3 - Project > New Project > AS3;

вставляем такой код в файл Main.as

package walked_zomby
{
import flash.display.Sprite;
import flash.events.Event;
import flash.events.TimerEvent;
import flash.utils.Timer;

public class Main extends Sprite
{

public function Main():void
{

if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);

}

private var _sprite:Sprite;
private var _vx:Number = 1;
private var _vy:Number = 0;
private var _timer:Timer;

private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
// entry point

_sprite = new Sprite();
_sprite.graphics.beginFill(0xffff00, 100);
_sprite.graphics.drawCircle(0, 0, 50);
_sprite, graphics.endFill();
_sprite.x = 0;
_sprite.y = 50;
addChild(_sprite);
_timer = new Timer(25);
_timer.addEventListener("timer", onTimer);
_timer.start();
}

public function onTimer(event:TimerEvent):void {
_sprite.x += _vx;
_sprite.y += _vy;
}

}

}

и выполняем сборку проекта.

Получаем swf ролик, работу которого можно проверить в браузере, например в GoogleChrome или в любом другом браузере при наличии установленного для этого браузера плагина Adobe Flash Player.

Данный проект демонстрирует анимацию желтой окружности по таймеру с интервалом 25 миллисекунд.

Итак, если с созданием проекта в среде FlashDevelop у вас вопросов больше нет (а если есть - то посмотрите еще такие статьи - Учимся создавать флеш-игры, что нужно знать для того, чтобы заняться созданием flash приложений и игр ?

Изучаем Flash

)

Перейдём ко 2 вопросу -
2) Как подготовить анимацию персонажа во Flash CS5 и экспортировать в SWC библиотеку

Если у вас нет под рукой готового персонажа, то предварительно надо его нарисовать и анимировать. Это подробно описано в одной из моих статей - Рисуем волка

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

Итак, будем считать, что персонаж уже у вас готов и анимирован. Нам остается только разобраться каким образом вставить его в ваше приложение Flash Develop.

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

Для работы Вам понадобится среда Adobe Flash CS5 или выше.

Пошагово процесс выглядит так:

1) Запускаем Flash CS5.

2) Создаем новый пустой проект AS3.

3) Выполняем File > import > import to stage > png - обращаю ваше внимание что каждый кадр анимации должен быть представлен отдельным PNG-файлом. При этом удобно создать для всех кадров отдельную папку, а при импорте сразу выбрать эту папку и все файлы в ней.

4) Произойдёт вставка всех изображений в сцену AS3-проекта. Пока выделение с объектов не снято - кликните по ним правой кнопкой мыши и выберите пункт Distribute to Layers (т. е. распределить по слоям)

Произойдёт вставка всех изображений в сцену AS3-проекта. Пока выделение с объектов не снято - кликните по ним правой кнопкой мыши и выберите пункт Distribute to Layers (т. е. распределить по слоям)

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

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

6) Не забудьте включить сглаживание изображения ­ (smoothing) в библиотеке - для этого нужно кликнуть по изображению правой кнопкой в панели списка изображений СПРАВА и выбрав Properties > Bitmap properties установить сглаживание - для PNG сжатие желательно вообще отключить. Тогда никаких искажений не будет.

Не забудьте включить сглаживание изображения ­ (smoothing) в библиотеке - для этого нужно кликнуть по изображению правой кнопкой в панели списка изображений СПРАВА и выбрав Properties > Bitmap properties установить сглаживание - для PNG сжатие желательно вообще отключить. Тогда никаких искажений не будет.

Не забудьте включить сглаживание изображения ­ (smoothing) в библиотеке - для этого нужно кликнуть по изображению правой кнопкой в панели списка изображений СПРАВА и выбрав Properties > Bitmap properties установить сглаживание - для PNG сжатие желательно вообще отключить. Тогда никаких искажений не будет.

7) Теперь остается экспортировать ваш анимированный спрайт в SWC библиотеку. Об этом уже рассказано в статье Flash. Экспорт SWC библиотеки.

8) В результате получим некий SWC библиотечный файл, который вам остается разместить в папке lib вашего FlashDevelop проекта.

После того, как это сделано, нужно добавить классы swc-библиотеки во FlashDevelop проект. Для этого в рабочей среде FlashDevelop просто кликаем правой кнопкой по названию добавленной SWC библиотеки и выбираем пункт Add to Library.

После того как эти шаги успешно сделаны Вы можете перейти к решению следующего вопроса:

3) Как использовать полученную в SWC библиотеке анимацию в AS3-приложении
Сделать это можно самыми разными способами, тот способ который я предложу вам в данной статье не является истиной в последней инстанции, но главное - он уже дает нужный нам результат - т. е. перемещаемого и анимированного персонажа.

Вот собственно необходимый код для реализации -

====================

package walked_zomby
{

import flash.display.Sprite;
import flash.events.Event;
import flash.events.TimerEvent;
import flash.utils.Timer;

public class Main extends Sprite
{

public function Main():void
{

if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);

}
private var _vx:Number = 1;
private var _vy:Number = 0;
private var _timer:Timer;

private var zomby_frames: Array;

private var current_frame: int;

private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
// entry point

current_frame = 1;

zomby_frames = new Array();

zomby_frames.push(new walked_zomby_right_1);
zomby_frames.push(new walked_zomby_right_2);
zomby_frames.push(new walked_zomby_right_3);
zomby_frames.push(new walked_zomby_right_4);

zomby_frames.push(new walked_zomby_right_5);
zomby_frames.push(new walked_zomby_right_6);
zomby_frames.push(new walked_zomby_right_7);
zomby_frames.push(new walked_zomby_right_8);

for ( var i:int = 0; i < 8; i++ )
{
addChild(zomby_frames[i]);
(Sprite)(zomby_frames[i]).visible = false;
}
(Sprite)(zomby_frames[0]).visible = true;

_timer = new Timer(100);
_timer.addEventListener("timer", onTimer);
_timer.start();
}

public function onTimer(event:TimerEvent):void {

for ( var i:int = 0; i < 8; i++ )
{
var sx:int = (Sprite)(zomby_frames[i]).x;
if ( sx > 300 )
{
sx = 0;
(Sprite)(zomby_frames[i]).x = sx;
}

(Sprite)(zomby_frames[i]).x += _vx;
}

(Sprite)(zomby_frames[current_frame-1]).x += _vx;

(Sprite)(zomby_frames[current_frame-1]).visible = false;

if ( current_frame < 8 )
{
current_frame += 1;
}
else {
current_frame = 1;
}

(Sprite)(zomby_frames[current_frame-1]).visible = true;

}
}

}

====================
У нас с вами остаются 2 вопроса -

4) Как управлять анимированным персонажем от клавиатуры и мыши
5) Фокус ввода для Flash-приложения в браузере

4) Как управлять анимированным персонажем от клавиатуры и мыши

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

Итак, приступим. Оказывается, чтобы заставить вашего персонажа реагировать на клавиши СТРЕЛКА ВЛЕВО/СТРЕЛКА ВПРАВО нужно учесть всего 2 важных момента:

4.1 ) Это правильно написать "слушатель" - т. е. метод объекта класса вашего приложения, который будет обрабатывать события ввода

и второе -

4.2) Сделать так, чтобы ваш объект мог получать "фокус ввода". В противном случае нажатия клавиш не будут обрабатываться правильно, т. е. попросту говоря персонаж не будет перемещаться по нажатию клавиш.

Теперь рассмотрим необходимый для этого код -

//в метод public function Main():void добавляем такой код

stage.focus = this;
addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown);

//в классе приложения объявляем метод "слушатель" onKeyDown

private function onKeyDown(event:KeyboardEvent):void {

if ( event.keyCode == Keyboard.RIGHT )
{
MoveHero();
}
}

//ну и наконец самое главное

//в код, который я уже приводил выше нужно добавить такую строку -

for ( var i:int = 0; i < 8; i++ ) //это код, который я уже приводил выше, когда рассматривал вопрос номер 3
{//это код, который я уже приводил выше, когда рассматривал вопрос номер 3
addChild(zomby_frames[i]);//это код, который я уже приводил выше, когда рассматривал вопрос номер 3
(Sprite)(zomby_frames[i]).visible = false;//это код, который я уже приводил выше, когда рассматривал вопрос номер 3

(MovieClip)(zomby_frames[i]).buttonMode = true; //это новая строчка кода, благодаря которой зомби сможет быть управляем от клавиатуры !!!



}//это код, который я уже приводил выше, когда рассматривал вопрос номер 3
(Sprite)(zomby_frames[0]).visible = true;//это код, который я уже приводил выше, когда рассматривал вопрос номер 3


5) Фокус ввода для Flash-приложения в браузере

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



[к содержанию]

подробнее

ПЕРСОНАЛЬНОЕ МЕСТО В ИГРЕ



show in english

Все пользователи со статусом БРОНЗОВЫЙ ЮЗЕР и выше получают ПЕРСОНАЛЬНОЕ
МЕСТО В ИГРЕ !

Что это такое ?

ПЕРСОНАЛЬНОЕ МЕСТО В ИГРЕ - это область в одной из игровых сцен
при наведении на которую указателя мыши Вы увидите особое окно.

В этом окне можно отобразить любой ваш текст.

Текст хранится как внешний файл. Что касается расположения
места - в какой сцене и в каком положении - это закодировано
в коде игры и изменить это могу лишь я, megainformatic.

Скриншот и описание места также будут приложены в релизе
в котором будет создано это место. Т. е. в следующем
ближайшем релизе который будет создан после того как
Вы поддержали проект.

ТАКИМ ОБРАЗОМ, ПОДДЕРЖАВ ПРОЕКТ ВЫ УВИДИТЕ СВОЕ ЛИЧНОЕ МЕСТО
В следующем ближайшем релизе. Что именно написать в этом тексте
также можно решить самому. По-умолчанию я добавлю туда текст
вашего комментария который Вы приложили к вашему платежу в
поддержку проекта. Но Вы можете сообщить и что-то другое.
Кроме того, скачав игру Вы сможете сами изменять этот текст.
Разница только в том, что в общем релизе который ВСЕ
скачают с сайта ваш текст увидят ВСЕ ИГРОКИ ! А в вашей
личной копии релиза - только те, кому Вы дадите её.



УЖЕ СОЗДАННЫЕ ПЕРСОНАЛЬНЫЕ МЕСТА В ИГРЕ

Харуки Судзумия доступно в версии 25.01.2018

Харуки Судзумия уже доступно в версии 25.01.2018



Ваше место в игре может быть таким

Ваше место в игре может быть таким в версии >25.01.2018



Александр Сычев доступно в версии >01.06.2018

Александр Сычев доступно в версии >01.06.2018



Дмитрий Долгов доступно в версии >01.06.2018

Дмитрий Долгов доступно в версии >01.06.2018





подробнее

Веселый Буквоежка - онлайн комикс - страница 19

представляем Веселый Буквоежка - онлайн комикс.

И что это ?

Веселый Буквоежка - онлайн комикс - страница 19

если кликать картинку она будет последовательно меняться в размерах от 620 до 2048 пиксель.

[страница 1]  [страница 2]  [страница 3]  [страница 4]  [страница 5]  [страница 6]  [страница 7]  [страница 8]  [страница 9]  [страница 10]  [страница 11]  [страница 12]  [страница 13]  [страница 14]  [страница 15]  [страница 16]  [страница 17]  [страница 18]  [страница 19]  [страница 20]  [страница 21]  [страница 22]  [страница 23] 

подробнее

     
 

Основы DirectSound8 в среде Delphi6-7

Введение

Звук является неотъемлемой частью любой игры или мультимедиа-приложения. Для воспроизведения звука посредством библиотеки DirectX вам понадобится знание возможностей интерфейса для работы со звуком IDirectSound - этот интерфейс с приходом DirectX9c остался неизменным. Поэтому и в DX8 и в DX9 используется один и тот же интерфейс - IDirectSound8 он же IDirectSound.

Как говорится в документации по DirectSound - интерфейс IDirectSound позволяет воспроизводить звуки с наименьшими временными задержками и дает возможность полностью управлять аппаратными ресурсами звука.

Преимущества состоят в следующем:

- Воспроизведение звуков из звуковых файлов и ресурсов в формате WAV.
- Воспроизведение одновременно неограниченного количества звуков (полифония).
- Применение для высоко приоритетных звуков аппаратно-управляемых буферов.
- Управление 3-х мерным звучанием.
- Добавление эффектов - например, эхо, хорус и др. с динамическим изменением их параметров.
- Захват WAV звуков от микрофона или других источников.

DirectSound работоспособен на Microsoft Windows 98, Microsoft Windows 2000 и последних версиях операционных систем. Часть возможностей, главным образом эффекты при захвате, доступны только в Microsoft Windows XP и выше.

DirectSound

Базовые уроки по DirectSound

Вашему вниманию предлагаются базовые уроки представляющих оригинальные уроки взятые из DX SDK 8.1 и адаптированные к применению в Delphi 6-7. Для версий Delphi выше 7 могут потребоваться модификации кода!

Примечание: длинных описаний и пояснений к урокам пока не даю - все что здесь есть - это в основном исходный код и исполнимый откомпилированный файл. Чтобы детально разобраться в технологии Вам понадобится DX SDK 8 или выше, Delphi 7 (или 6 или выше) и много много терпения и упорства.

Обзор уроков

 
     
 
           
 

Урок 1

Воспроизведение звука - PlaySound Sample Урок 2 Управление воспроизведением и размещением звука - VoiceManagement Sample  
           
    Показано как инициализировать, установить приоритет, загрузить и воспроизвести короткий звуковой файл (не более 1000000 байт длинной).   Показано как происходит управление размещением в памяти, приоритетом и воспроизведением короткого звукового файла (не более 1000000 байт длинной).  
   
Воспроизведение коротких звуковых файлов
Управление размещением звука и приоритетом
 
           
  Урок 3 Воспроизведение длинных звуковых файлов - StreamData Sample Урок 4 Изменение базовых параметров звука - громкости, панорамы, частоты - AdjustSound Sample  
           
    Длинный звуковой файл загружается и воспроизводится небольшими частями. Для организации непрерывного воспроизведения используется подроцесс.   Показано каким образом можно осуществить регулирование громкости, панорамы (баланса левого/правого стерео-каналов), частоты дискретизации.  
           
  Урок 5 Воспроизведение музыкальных файлов в формате it, mod, xm, s3m

Скачать уроки 1-4

(29 Кб)

уроки 1-4
 
           
 
Внимание! Для нормальной работы и компиляции Вам потребуется архив С ОБЩИМ КОДОМ (762 Кб).
ОБЩИЙ КОД - 585 Кб
 
   
     
 
     
     
  Веселый Буквоежка - игра  
     
 

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

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

 
     
  [содержание] [назад] [страница 5] [далее]  
     
  Введение в 2d-игры - игровое меню  
     
  Внутриигровое меню может быть главным меню, содержащим пункты <Начать игру>, <Продолжить>, <Настройка>, <Авторы>, <Справка>, <Выход> и какие-либо еще. В игровом процессе меню может быть представлено в виде отдельной панели, содержащей какие-либо кнопки - выхода в главное меню, скрытия панелей или еще что-то.  
     
 

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

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

+ подготовить изображения для элементов меню загрузив их в память;

+ определить прямоугольные области для пунктов меню;

+ определить обработчики пунктов меню - описать функции и их реализации;

Для обработки управления меню посредством мыши используются средства DirectInput8.

 
     
  Загружать и использовать изображения Вы теперь умеете - если нет, то обратитесь к предыдущему уроку, посвященному этой теме.  
     
  Остается разобраться как определяются прямоугольные области и как пишутся обработчики для пунктов меню.  
     
  В игре Веселый Буквоежка, если она уже у Вас установлена, можно заглянуть в подпапку Media\control\mainmenu и открыть файл btn_areas.txt  
     
 

Внутри этого файла описаны строки вида -

new_game; 0.2300f; 0.2633f; 0.9200f; 0.1033f;

 
     
 

что означает -

name; Left; Top; Right; Bottom;

name представляет имя пункта меню - это своего рода комментарий, чтобы было понятно, к чему относятся последующие данные;

Left; Top; Right; Bottom; определяют соответственно левую, верхнюю, правую, нижнюю границы прямоугольной области для пункта меню и описаны в векторной системе координат, где 0.0f, 0.0f - это центр экрана, x = -1.0f левый край экрана, x = 1.0f правый край, y = 1.0f верхняя граница экрана, y = -1.0f нижняя.

 
     
 

Определение этих параметров удобно выполнять используя утилиту Coords2D



Скачать Coords2D -


Размер sfx-архива: 36 Mb. Также содержит много примеров спрайтов и других
изображений из проекта fle, bol и др.

запустите файл Coords2D_setup.exe и распакуйте архив, запустите файл Coords2D.exe

После запуска выберите пункт меню File > Reload. Более подробные инструкции читайте в файле readme.txt

 
     
  Для того, чтобы определить значения Left; Top; Right; Bottom; утилитой Coords2D нужно задать параметры элементов меню в файле tex_list.txt с которым работает утилита ( подробнее см. readme.txt ), далее жмём File > Reload и видим созданное меню на экране. Теперь остается только подводить указатель мыши к участкам на экране и записывать координаты выводимые в левом верхнем углу. Не забудьте еще учесть поправку на координату Y = -0.02f, она вводится, т. к. верхняя часть рабочего пространства утилиты занято строкой меню, чем и обусловлен этот небольшой сдвиг, требующий поправок.  
     
  главное меню игры для проверки утилитой Coords2d  
     
 

Загружаем данные о прямоугольных областях активных элементов меню из текстового файла btn_areas.txt

Я приведу фрагменты кода из класса CGameMainMenu -

 

 
     
 

// данный метод выполняет чтение указанного текстового файла и обрабатывает // // // // указанные в нём параметры меню, занося их в массив CPtrArray, откуда затем к ним // // удобно обращаться как к объектам вида LPBTNAREADESC

void CGameMainMenu::LoadBtnAreas(CPtrArray* pAreasArray,
LPCTSTR txtAreasList)
{
if ( !pAreasArray || !txtAreasList )
// если объект массива не создан или имя файла не // // // определено - возврат
return;

LPBTNAREADESC btnArea;
CString strValue = L"";
CString ParamStr = L"";
TCHAR ControlAreasListFileFullName[MaxPath2] = L"";

// определяем полное имя файла

StringCbCopy(ControlAreasListFileFullName, MaxPath2, AppRootDir);
StringCbCat(ControlAreasListFileFullName, MaxPath2, txtAreasList);

// если файл не существует - ошибка заносится в лог-файл, приложение завершает // // // работу
if ( !PathFileExists(ControlAreasListFileFullName))
{
CString texfile = ControlAreasListFileFullName;
AddLogResult(7, E_FAIL, &texfile);
g_d3dApp.CleanupAndDisplayError( DXUTERR_MEDIANOTFOUND );
PostMessage( g_d3dApp.m_hWndMain, WM_CLOSE, 0, 0 );
return;
}

// открываем указанный файл для чтения, если он пустой - ошибка в лог и выход
CStdioFile textFile(ControlAreasListFileFullName, CFile::modeRead);

if (textFile.GetLength() == 0)
{
g_d3dApp.CleanupAndDisplayError( DXUTERR_MEDIANOTFOUND );
PostMessage( g_d3dApp.m_hWndMain, WM_CLOSE, 0, 0 );
return;
}

// перебираем все строки текстового файла и обрабатываем их, формируя объекты // // // LPBTNAREADESC

// подразумевается жестко определенная структура файла, если она отличается от // // // требуемой - это приведет к непредсказуемым последствиям !

int iItem = 0;
textFile.ReadString(ParamStr);
do
{
int ParamCharPos = 0;
btnArea = new BTNAREADESC;
SecureZeroMemory(btnArea, sizeof(btnArea));

// код функции ReadNextParam вы найдете в ПОЛНОМ ИСХОДНОМ КОДЕ игры

ReadNextParam(&ParamStr, &ParamCharPos, &strValue);
btnArea->Name = new CString();
*btnArea->Name = strValue;

ReadNextParam(&ParamStr, &ParamCharPos, &strValue);
btnArea->Left = (float)_wtof(strValue);

ReadNextParam(&ParamStr, &ParamCharPos, &strValue);
btnArea->Top = (float)_wtof(strValue);

ReadNextParam(&ParamStr, &ParamCharPos, &strValue);
btnArea->Right = (float)_wtof(strValue);

ReadNextParam(&ParamStr, &ParamCharPos, &strValue);
btnArea->Bottom = (float)_wtof(strValue);

pAreasArray->Add((void*)btnArea);

iItem++;
textFile.ReadString(ParamStr);
} while (ParamStr != "");

}

 
     
  Теперь покажем код, который обрабатывает выбор пунктов меню пользователем при помощи мыши -  
     
 

// данный метод должен вызываться в методе FrameMove анимации сцены

void CGameMainMenu::Anim()
{
AnimMenuCursor();

}

 

void CGameMainMenu::AnimMenuCursor()
{

// если приложение не в состоянии показа меню - выход
if ( m_dwState != GAMEMENU_MAIN )
return;

// обработка выбранного пункта меню

m_iSelectedBtnItem = SelectMainMenuItem();
if ( m_iSelectedBtnItem == -1 )
return;

}

 
     
 

int CGameMainMenu::SelectMainMenuItem()
{

// получение идентификатора Area выбранного пункта меню, если указатель вне // // // // пределов меню - возвращается значение -1
int Area = TargetBtnArea(m_pBtnAreasArray, GetCursorVPos());

// обработка данного пункта меню

switch (Area)
{

case MenuItem1: {

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

break;

}

case MenuItem2: {

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

break;

}

case MenuItem3: {

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

break;

}

}

return Area;

}

 
     
  Функцию TargetBtnArea можно найти в ПОЛНОМ ИСХОДНОМ КОДЕ игры.  
     
  В следующем нашем уроке мы разберем как перемещать и анимировать персонажа.  
     
  Если у Вас всё же остались вопросы - не стесняйтесь задавать их на форуме или по e-mail.  
     
  [содержание] [назад] [страница 5] [далее]  
     
megainformatic live chat
Начать беседу
X
 

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



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


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