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


«Animotion» - часть 2


Таблица 7.3. Таблица перемещений.

Кадр

Значение

Кадр

Значение

Кадр

Значение

1

17

5

3

9

6

2

0

6

0

10

2

3

6

7

17

11

3

4

2

8

0

12

0

Чтобы показать на примере, насколько «animotion» превосходит по качеству постоянное движение, я создал программу в которой игрок, нажимая на клавишу пробел, может выбирать между ними. Нашим «подопытным кроликом» снова будет беззащитный «человечек-палка». Мы собираемся поместить его в действительно ужасный городской квартал и при этом у него не будет ничего, кроме пары ног, пары рук и пары глаз. (Ой, извините! Глаз-то всего один.) Теперь посмотрите, как он разгуливает по экрану. Затем нажмите клавишу пробела, чтобы перейти с постоянного движения к «animotion». Вы увидите большую разницу. Текст программы приведен в Листинге 7.7, она также использует функции из GRAPH0.C, поэтому не забудьте скомпоновать программу с этим модулем.

 

Листинг 7.7. Демонстрация «animotion» (STICK.С).

// ВКЛЮЧАЕМЫЕ ФАЙЛЫ ////////////////////////////////////////       

#include <io.h>

#include <conio.h>

#include <stdio.h>

#include <stdlib.h>

#include <dos.h>

#include <bios.h>

#include <fcntl.h>

#include <memory.h>

#include <malloc.h>

#include <math.h>

#include <string.h>

#include "graph0.h" // включаем нашу графическую библиотеку

// определения /////////////////////////////////////////////

#define VEL_CONST -1  // флаг постоянной скорости перемещения

// ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ ///////////////////////////////////

unsigned int far *clock = (unsigned int far *)0x0000046C;

// указатель на внутренний таймер 18.2 "тик"/с

sprite object;

pcx_picture stick_cells, street_cells;

// таблица выбора содержит величины перемещения для каждого

// мультипликационного кадра, чтобы движение было более реалистичным

int object_vel = {17,0,6,2,3,0,17,0,6,2,3,0};

// функции ////////////////////////////////




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