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


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


// сохраняется текущее состояние

fly_state = STATE CHASE; // "Муха" начинает с преследования

float distance;          // используется при расчете

// расстояния между игроком и "Мухой"

_setvideomode(_MRES256COLOR);

printf("    Brainy Fly - Q to Quit");

//основной игровой цикл

while(!done)

{

// очистка точек

_setcolor(0);

_setpixel(px,py);

_setpixel(ex,ey);

// перемещение игрока

if (kbhit()) {

// определяем направление движения

switch(getch()}

{

case 'u': // вверх

{

py-=2;

} break;

case 'n': // вниз

{

py+=2;

} break;

case 'j': // вправо

{

px+=2 ;

} break;

case 'h'': // влево

{

px-=2;

} break;

case 'q':

{ done=l ;

} break;

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

}

// конец обработки нажатия клавиши

// теперь перемещаем противника

// начинается работа "мозга"

// определяем текущее состояние КА

switch(fly_state)

{

case STATE_CHASE:

{

_settextposition(24,2);

printf("current state:chase   "};.

// реализуем Алгоритм Преследования

if (px>ex) ex++;

if (px<ex) ex--;

if (py>ey) ey++;

if (py<ey) ey--;

//не пора ли перейти к другому состоянию?

if (--clicks==0) select_state=l;

} break;

case STATE_RANDOM:

(

_settextposition(24,2} ;

printf("current state:random   ") ;

// перемещаем "Муху" в случайном направлении

ex+=curr_xv;

ey+=curr_yv;

//не пора ли перейти к другому состоянию?

if (--clicks=0) select_state=l;

} break;

case STATE_EVADE:

{

_settextposition(24,2) ;

printf("current state:evade   ");

// реализуем Алгоритм Уклонения

if (px>ex) ex--;

if (px<ex) ex++;

if (py>ey) ey—;

if (py<ey) ey++;

//не пора ли перейти к другому состоянию?

if (--clicks==0) select_state=l;

} break;

case STATE_PATTERN:

{

_settextposition(24,2);

printf("current state:pattern   ");

// перемещаем "Муху", используя следующий

// элемент текущего шаблона

ex+=patterns_x[current_pattern][pattern_element];

ey+=patterns_y[current_pattern][pattern_element];




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



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