Программирование игр для Windows. Советы профессионала


Конечный автомат, управляемый окружающей средой - часть 4


// обработка шаблона закончена?

if (++pattern element==20)

{

pattern_element = 0;

select_state=l;

} // конец проверки завершения шаблона

} break;

default;break;

} // конец обработки текущего состояния

// надо ли менять, состояние?

if (select_state==l)

{

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

// игровой ситуации и неявной логике.

// Для выбора используется расстояние до игрока

distance = sqrt(.5+fabs((рх-ех)*(рх-ех)+(ру-еу)*(ру-еу))) ;

if (distance>5&&distance<15&&rand()%2==1)

{

// выбираем новый шаблон

current_pattern = rand()%3;

// переводим "мозг" в состояние действий по шаблону

fly_state = STATE_PATTERN;

pattern_element = 0;

} // конец обработки ситуации "близко к игроку"

else if (distance<10) // слишком близко, убегаем!

clicks=20;                                  

fly_state = STATE_EVADE;

} // конец обработки ситуации "слишком близко"

else

if (distance>25&sdistance<100&&rand()%3==1)

{

// преследуем игрока clicks=15;

fly_state = STATE_CHASE;

} // конец обработки ситуации Преследование

else

if (distance>30&&rand()%2==l)

{

clicks=10;

fly_State = STATE_RANDOM;

curr_xv = -5 + rand()%10; //от -5 до +5

curr_yv = -5 + rand()%10; //от -5 до +5

} // конец "неявной логики"

else

{

clicks=5;

fly_state = STATE_RANDOM;

curr_xv = -5 + rand()%10; //от -5 до +5

curr_yv = -5 + rand()%10; //от -5 до +5

} // конец оператора else // сбрасываем флаг смены состояния

select_state=0;

} // конец Алгоритма Смены Состояния

// Убеждаемся, что "Муха" находится в пределах экрана

if (ex>319) ех=0;

i£ (ex<0)   ех=319;

if (ey>199) еу=0;

if (ey<0)   еу=199;

// конец работы "мозга"

_setcolor(12);

_setpixel(ex,ey);

// Немного подождем...

Timer(1);

} // Конец цикла while

_setvideomode(_DEFAULTMODE) ;

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

Запустив программу, вы наверняка обратите внимание на кажущуюся сложность поведения «Мухи».А ведь для получения такого результата использована весьма простая схема! Возможно, и вы заметите то, что увидел я - чуть ли не человеческую способность мыслить.




Начало  Назад  Вперед



Книжный магазин