Секреты программирования игр


Демонстрация смены экрана - часть 2


{

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

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);

Plot_Pixel_Fast((index<<1), 1, (char) worms [index].color);

Plot_Pixel_Fast((index<<1), 2, (char) worms [index].color) ;

Plot_Pixel_Fast((index<<1) + l,0, (char) worms [index].color) ;

Plot_Pixel_Fast((index<<1) + 1,1, (char) worms [index].color) ;

Plot_Pixel_Fast((index<<1) + 1,2, (char) worms [index].color);

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

// плавим экран

while(++ticks<1800)

{

// работа "червячков"

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

{

// пора подвинуть "червячка"

if (++worms[index].counter == worms[index].speed)

{

// обнуляем счетчик

worms[index].counter = 0;

worms[index].color = Get_Pixel(index,worms[index],y+4);




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



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