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


Пример обработчика прерывания № 1 - Там полно звезд... - часть 3


if (star_first)

{

// сброс флага первого вызова

star_first=0;

// инициализация всех звезд

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

{

// инициализация цвета, скорости и координаты каждой звезды

stars[index].х     = rand()%320;

stars[index].у     = rand()%180;

// выбор плоскости для звезды switch(rand()%3)

{ case 0:

// плоскость 1 - наиболее удаленная плоскость

{

// установка скорости и цвета звезды

stars[index].vel = 2;

stars[index].color = 8;

} break;

case 1: // плоскость 2 - плоскость, расположенная

// посередине

{

stars[index].vel = 4;

stars [index] .color =7;

} break;

case 2: // плоскость 3 -самая ближняя плоскость

{

stars[index].vel = 6;

stars[index].color = 15;

} break;

} // конец оператора switch

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

} // конец оператора if

else

{ // не первый вызов функции, поэтому производим рутинные

// действия: стирание, перемещение, рисование

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

{ // стирание

Plot_Pixel_Fast(stars[index].х,stars[index]-у,0);

// перемещение

if ((stars[index].x+=stars[index].vel) >=320 ) stars[index].х = 0;

// рисование

Plot_Pixel_Fast(stars[index],x,stars[index],y, stars[index].color);

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

} // конец else

} // конец Star_Int

// ОСНОВНАЯ ПРОГРАММА ///////////////////////////////////

void main(void)

{ int num1, num2,с

;

_setvideomode(_MRES256COLOR) ;

// установка обработчика прерывания

Old_Isr = _dos_getvect(TIME_KEEPER_INT) ;

_dos_setvect(TIME_KEEPER_INT, Star_Int);

// ожидание нажатия клавиши пользователем

_settextposition(23,0);

printf("Hit Q - to quit.");

printf("\nHit E - to see something wonderful...");

// чтение символа

с = getch();

// хочет ли пользователь рискнуть?

if (c=='e')

{

printf("\nLook stars in DOS, how can this be ?") ;

exit(0);

// выход без восстановления старого обработчика прерывания

} // конец оператора if

/ восстановление старого обработчика прерывания

_dos_setvect(TIME_KEEPER_INT, 01d_Isr);

_setvideomode(_DEFAULTMODE) ;

}// конец

функции main




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



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