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


Мультипликация с помощью регистров цвета - часть 3


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

#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 "graphl.h" // включаем нашу графическую библиотеку

// ОПРЕДЕЛЕНИЯ /////////////////////////////////////////////

#define BIRD_START_COLOR_REG 16

#define BIRD_END_COLOR_REG   28

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

unsigned int far *clock = (unsigned int far *)Ox0000046C;

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

pcx_picture birds;

// ФУНКЦИИ /////////////////////////////////////////////////     

void Timer(int clicks)

{

// эта функция использует внутренний таймер с частотой 18.2 "тик"/с.

// 32-битовое значение этого таймера находится по адресу 0000:046Сh

unsigned int now;

// получаем текущее время

now = *clock;

// Ожидаем до истечения указанного периода времени.

// Заметьте, что каждый "тик" имеет длительность-примерно в 55 мс

while(abs(*clock - now) < clicks){}

} // конец Timer

////////////////////////////////////////////////////////////

void Animate_Birds(void)

{            

// эта функция перемещает птичку, изображенную 13-ю различными // цветами, последовательно включая один цвет и выключая остальные

RGB_color color_l, со1оr_2;

int index;

// очистка каждого из цветовых регистров,

// используемых в изображении птички

color_l.red   = 0;

color_l.green = 0;

color_l.blue  = 0;

color_2.red   = 0;

color_2.green = 63;

color_2.blue  = 0;

// очистка всех цветов

for (index=BIRD_START_COLOR_REG;

index<=BIRD_END_COLOR_REG; index++)

{

Set_Palette_Register(index, (RGB_color_ptr)&color_l);

} // конец цикла for

// делаем первую птичку зеленой и затем

// последовательно меняем цвета

Set_Palette_Register(BIRD_START_COLOR_REG,




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



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