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


Гаснущее изображение - часть 3


// 32-битовое значение этого таймера имеет адрес 0000:046Ch

unsigned int now;

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

now = *clock;

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

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

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

} // конец Timer ////////////////////////////////////////////////////////////

void Fade_Lights (void)

{ // эта функция гасит свет, медленно уменьшая значения цветов

// во всех цветовых регистрах

int index,pal_reg;

RGB_color color,color_1,color_2,color_3;

for (index=0; index<30; index++)

{

for (pal_reg=l; pal_reg<255; pal_reg++)

{

// получить затемняемый цвет

Get_Palette_Register(pal_reg,(RGB_color_ptr)&color) ;

if (color.red > 5) color.red-=3;

else

color.red = 0;

if (color.green > 5) color.green-=3;

else

color.green = 0;

if (color.blue  > 5) color.blue-=3;

else

color.blue = 0;

// уменьшить интенсивность цвета

Set_Palette_Register(pal_reg,(RGB_color_ptr)&color) ;

} // конец внутреннего цикла

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

Timer(2);

} // конец внешнего цикла } // конец Fade_Lights

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

void Disolve(void)

{

// "растворение" экрана рисованием биллиона черных пикселей

unsigned long index;

for (index=0; index<=300000; index++, Plot_Pixel_Fast(rand()%320, rand()%200, 0));

} // конец Disolve

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

void Melt(void)

{

// Функция "оплавляет" экран, двигая маленьких "червячков"

// с разной скоростью вниз по экрану. Эти "червячки" меняют

// на своем пути цвет пикселей.

int index,ticks=0;

// инициализация "червячков"

for (index=0; index<160; index++)

{

worms[index].color   = Get_Pixel(index,0);

worms[index].speed   = 3 + rand()%9;

worms[index].у       =0;

worms[index].counter = 0;

// прорисовка "червячка"

Plot Pixel_Fast((index<<1), 0, (char) worms [index].color);




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



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