С для профессиональных программистов




Программа генерации движения спрайта компьютера.


Если спрайт компьютера находится в режиме догоняющего, то для генерации очередного его кванта движения используется функция it_comp_move(). В основном компьютер повторяет стратегию движения пользователя. Движение его спрайта отклоняется из-за того, что он должен обходить объекты-препятствия. Однако спрайт компьютера может игнорировать некоторые объекты, что позволяет выровнять баланс игры.

Приведем текст функции it_comp_move().

/* Генерация движения спрайта компьютера, когда

он в роли догоняющего */

void it_comp_move(ob1, ob2, human, sides)

int ob1[][4], ob2[][4], human[][4], sides;

register int x, y, d; /* d = direction */

static skip = 0;

skip++;

if(skip==3)

skip=0;

return;

/* уменьшение времени реакции компьютера */

x = 0;

y = 0;

/* движение к игроку */

if(human[0][0]<ob1[0][0])

x = -1;

else

if(human[0][0]>ob1[0][0])

x = 1;

if(human[0][1]<ob1[0][1])

y = -1;

else

if(human[0][1]>ob1[0][1])

y = 1;

if(is_legal(ob1, x, y, sides))

update_object(ob1, x, y, sides);

update_object(ob2, x, y, sides);

else

if(x && is_legal(ob1, x, 0, sides))

update_object(ob1, x, 0, sides);

update_object(ob2, x, 0, sides);

else

if(is_legal(ob1, 0, y, sides))

update_object(ob1, 0, y, sides);

update_object(ob2, 0, y, sides);

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

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

/* Генерация движения спрайта компьютера, когда

он выступает в роли убегающего */

void it_comp_move(ob1, ob2, human, sides)

int ob1[][4], ob2[][4], human[][4], sides;

register int x, y, d; /* d = direction */




Содержание  Назад  Вперед