Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Листинг 15.2. Обнаружение нажатия кнопки.

Алгоритм 13.6. Использование плотности вероятностей в выборе состояния. | Алгоритм 13.7. Путь наружу. | Последовательный порт Базовый адрес порта | Штырьковый разъем | Вектор Номер Адресная функция | Листинг 14.1. Операция ISR. | Листинг 14.2. Функция Serial Read. | Листинг 14.4. Коммуникационная программа NLINK (NLINK.C). | Байта Обозначение Смысл | ИНСТРУМЕНТАЛЬНЫЕ СРЕДСТВА |


Читайте также:
  1. Листинг 11.2. Структура данных игрока.
  2. Листинг 11.3. Функции полета мухи.
  3. Листинг 11.4. Муравейник (ANTS.С).
  4. Листинг 11.5. Падение мяча (BALL.C).
  5. Листинг 11.6. Идеальный газ (GAS.C).
  6. Листинг 12.2. Шпионим за часами (SPY.C)._________________
  7. Листинг 12.3. Автономное управление светом.

int Icon_Hit(int хо, int yo, int dx, int dy,

int width, int height,

int num_columns, int num_rows,

int mx, int my)

{

// получая геометрические установки кнопок, эта функция вычисляет,

// по которой из них щелкнули мышью

int row, column, xs,ys,xe,ye;

for (row=0; row<num_rows; row++)

{

// вычислить начало и конец Y-координаты колонки

ys = row*dy + yo;

ye = ys+height;

for(column=0; column<num_columns; column++)

{

xs = column*dx + xo;

xe = xs+width;

//Проверить, находится ли курсор мыши в области кнопки

if (mx>xs && mx<xe && my>ys && my<ye)

{

return(column + row*num_columns);

} // конец if

} // конец внутреннего цикла

} // конец внешнего цикла

return(-1); // не нажата

} // конец функции

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

Наконец, для создания работающей версии WarEdit желательно использовать два объектных файла, называемых GRAPH0.OBJ и MOUSELIB.OBJ. Я предлагаю объединить их в библиотеку и затем связать с WEDIT.C. (Хотя, конечно, вы можете поступать, как вам больше нравится). Как вы понимаете, файл GRAPH0.OBJ получается после трансляции исходников GRAPH0.C и GRAPH0.H, a MOUSELIB.OBJ - из MOUSELIB.C, о котором уже упоминалось ранее.

Улучшения WarEdit

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

§ Использование разноцветных точек для представления игровых объектов слишком примитивно. Более серьезным и удобным решением было бы использование окна редактирования с возможностью прокрутки, в котором каждый элемент игрового пространства представлен собственной уменьшенной копией;

§ В нашем редакторе любой объект занимает всю ячейку игрового пространства целиком. Но что если мы хотим поместить два мелких предмета в одно и то же место? Здесь могло бы пригодиться окно детализации ячейки;

§ А как быть насчет спецэффектов типа освещения? Неплохо было бы иметь возможность изменять уровни освещения в целом;

§ Еще не помешало бы добавить возможность указания начальных и конечных точек перемещения (телепортации) игрока;

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

Можно было бы и дальше продолжить список усовершенствований редактора. Обычно разработчики так и поступают, пока не получат окончательную версию. Фактически, мы могли бы потратить несколько дней и улучшить редактор до уровня Wolfenstein 3-D. (Добавление в него деталей из DOOM отняло бы месяцы). В любом случае, я думаю, у вас уже есть множество идей на этот счет, и если ваш первый редактор окажется вдвое лучше WarEdit'a, то с ним, вероятно, вы создадите и вдвое лучшую игру.

Итог

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


 


Дата добавления: 2015-07-12; просмотров: 92 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Листинг 15.1. Секция определений WarEdit.| ГРАФИЧЕСКОЕ ОФОРМЛЕНИЕ ИГРЫ

mybiblioteka.su - 2015-2024 год. (0.01 сек.)