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

Алгоритм 13.6. Использование плотности вероятностей в выборе состояния.

Листинг 12.6. Трехмерное звездное небо (STARS.C). | Листинг 12.7. Киберточка (CYBER.C)._____________________ | ИСКУССТВЕННЫЙ ИНТЕЛЛЕКТ | Алгоритм 13.1. Алгоритм Преследования. | Листинг 13.1. Программа Терминатор (TERM.С). | Алгоритм 13.2. Алгоритм Уклонения. | Алгоритм 13.3. Шаблоны со случайным выбором. | Листинг 13.2. Муха (FLY.C). | Листинг 13.3. Одинокая муха. (DFLY.C). | Листинг 13.4. Умная «Муха» (BFLY.C). |


Читайте также:
  1. I. ИСПОЛЬЗОВАНИЕ ЛОГИСТИЧЕСКОЙ КРИВОЙ ДЛЯ ОЦЕНКИ РАЗВИТИЯ ЭКОНОМИЧЕСКИХ ЯВЛЕНИЙ
  2. V. Особые психические состояния.
  3. VIII. Использование объекта культурного наследия или пользователь
  4. а) и плотности (б) пенополиуретана. 1 страница
  5. а) и плотности (б) пенополиуретана. 2 страница
  6. а) и плотности (б) пенополиуретана. 3 страница
  7. а) и плотности (б) пенополиуретана. 4 страница

table_1 = {1,1,1,2,2,3,3,4,4,4,4,4,5,5,5,5,6,6,6,6};

table_2 = {1,1,2,2,2,2,3,3,3,3,3,3,4,4,5,5,5,5,5,6};

while (идет игра)

{

...код программы

if (выполняются команды одного из состояний)

{

...продолжать их выполнение

} else

//Выбираем новое состояние

{

if(расстояние между игроком и противником > 100)

{ новое состояние=table_1 [rand()%20];

}

else

{ if(расстояние < 100 и игрок стреляет)

{ новое состояние=table_2[rand()%20];

}

else

// Чисто случайный выбор

{

новое состояние=rand()%7;

}

} // конец оператора else

} // конец выбора нового состояния

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

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

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

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

Память и обучение

Если бы мне было нужно определить термины «память» и «обучение», я вероятно сказал бы, что они являются способностью использовать прошлый опыт для решения новых проблем вместе со способностью накапливать и интерпретировать новую информацию.

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

К примеру, мы могли бы позволить каждому существу в нашей игре иметь внутреннюю карту игрового пространства. Если бы существо, войдя в комнату, обнаружило там кучу смертельных врагов, то в следующей раз, когда оно входит комнату, мы могли бы увеличить его агрессивность. Другой пример: если во время боя игрок двигался влево и потом стрелял, игровые существа могли бы запомнить это путем интерполяции траектории игрока в определенном направлении. Любые действия, которые игрок чаще всего предпринимает, могут быть использованы против него, если наделить игровые существа способностью использования этой информации для усовершенствования собственной тактики.

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

Алгоритмы Поиска. Выслеживание игрока

«Мозги», которые мы сконструировали, получились достаточно умными, так что существо даже получило шанс выжить- И теперь я хочу поговорить о другой довольно простой вещи — как должен быть организован поиск.

Вспомним историю Тезея с Минотавром. Жил когда-то давным-давно Минотавр (человек с головой быка), который преследовал Тезея. В общем, Тезей украл у Минотавра... не помню точно — CD-ROM, или что-то там еще... Тезей попал в ловушку (в действительности, подрядчик, построивший ее, называл ее лабиринтом), но успел выбраться наружу прежде, чем Минотавр его настиг. Вопрос состоит в том, как нужно двигаться по лабиринту, чтобы найти путь к выходу или любой произвольной точке лабиринта, и при этом не застрять в нем навсегда? Давайте взглянем на рисунок 13.8, где изображен пример лабиринта. Существует простой алгоритм, обозначенный здесь как Алгоритм 13.7, который поможет вам найти выход из любого лабиринта. Будьте внимательны, в один прекрасный момент он может вам сильно пригодиться!


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


<== предыдущая страница | следующая страница ==>
Состояние Существо 3: Хныкалка| Алгоритм 13.7. Путь наружу.

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