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


Создание звездного неба с использованием целых чисел - часть 3


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

unsigned int now;

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

now = *clock;

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

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

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

} // конец Timer

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

void Init_Stars(void)

{

// эта функция инициализирует структуру данных звезд

// при старте программы

int index,divisor;

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

{

star_field[index].x      = 150 + rand() % 20;

star_field[indexl.у      = 90 + rand() % 20;

if (rand()%2==1)

star_field[index].xv     = -4 + -2 * rand() % 3;

else

star_field[index].xv     = 4 + 2 * randO % 3;

if (rand()%2==1)

star_field[index].yv     = -4 + -2 * rand() % 3;

else

star_field[index].yv     = 4 + 2 * randO % 3;

divisor = 1 + rand()%3;

star_field[index].xa    = star_field[index].xv/divisor;

star_field[index] .ya     = star_field [index] .yv/divisor;

star_field[index].color     = 7;

star_field[index].clock     = 0;

star_field[index].acc_time  = 1 + rand() % 3;

star_field[index].acc_count = 0;

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

} // конец Init Stars

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

void Move_Stars(void) {

// Эта функция перемещает звезды и проверяет, не вышла ли звезда

// за пределы экрана. Если да, звезда создается вновь.

int index,divisor;

for (index=0; index<NUM STARS; index++)

{

star_field[index].x += star_field[index].xv;

star field[index].y += star_field[index].yv;

// проверка выхода звезды за пределы экрана

if(star_field[index].x>=SCREEN_WJDTH || star_field[index].x<0 ||

star_field[index].y>=SCREEN_HEIGHT || star_field[index].y<0)

{

// восстановление звезды

star_field[index].x      = 150 + rand() % 20;

star_field[index].у      = 90  + randf) % 20;

if (rand()%2==l)

star_field[index].xv     = -4 + -2 * rand() % 3;

else

star_field[index] .xv     = 4 + 2 * rand() % 3;

if (rand()%2==l)




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