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


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


row[x] = (int) (x_scale_index+.5);

if (row[x] > (SPRITE_X_SIZE-1)) row[x] = (SPRITE_X_SI2E-1);

// рассчитываем следующий индекс

х_scale_index+=x_scale_step;

} // конец

цикла

} // конец Create Scale_Data X

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

void Create_Scale_Data_Y(int scale, int *row)

{

// эта функция масштабирует полосу текстуры всех возможных

// размеров и создает огромную таблицу соответствий

int у;

float y_scale_index=0, y_scale step;

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

// для отображения на результирующее изображение за цикл

y_scale_step = (float)(sprite_height)/(float)scale;

y_scale_index+=y_scale_step;

for (у=0; y<scale; y++)

{ // помещаем данные в массив для последующего использования

row[y] = ((int)(y_scale_index+.5)) * SPRITE_X_SIZE;

if (row[y] > (SPRITE_Y_SIZE-1)*SPRITE_X_SIZE) row[y]] = (SPRITE_Y_SIZE-1)*SPRITE_X_SIZE;

// рассчитываем следующий индекс

y_scale_index+=y_scale_step;

} // конец

цикла

} // конец Create_Scale_Data_Y ////////////////////////////////////////

void Build_Scale_Table(void)

{

// эта функция строит таблицу масштабирования путем расчета

// коэффициентов масштабирования для всех возможных размеров

// от 1 до 200 пикселей

int scale;

// резервируем

память

for (scale=1; scale<=MAX_SCALE; scale++)

{

scale_table_y[scale] = (int *)malloc(scale*sizeof(int)+1);

scale_table_x[scale] = (int far *)_fmalloc(scale*sizeof(int)+1);

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

// создаем Таблицу масштабирования для осей Х и У

for (scale=l; scale<=MAX_SCALE; scale++)

{

// рассчитываем коэффициент для данного масштаба

Create_Scale_Data_Y (scale, (int *)scale_table_y[scale]);

Create_Scale_Data_X (scale, (int far *)scale_table x[scale]);

} // конец

цикла

} // конец Build_Scale_Table

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

void Scale_Sprite(sprite_ptr sprite,int scale)

{

// эта функция масштабирует спрайт (без отсечения). Масштабирование

// производится с использованием заранее рассчитанной таблицы,




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



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