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


Рисование линий - часть 5


color.red   = 0;

color.green = index;

color.blue = 0;

Set_Palette_Register(index+128, (RGB_color_ptr)&color);

// оттенки синего

color.red   = 0;

color.green = 0;

color.blue = index;

Set_Palette_Register(index+192, (RGB_color_ptr)&color);

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

} // конец функции

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

void V_Line(int y1,int y2,int x,unsigned int color)

{                               

// рисуем вертикальную линию у2 > yl

unsigned int line_offset, index;

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

line_offset

= ((y1<<8) + (y1<<6)} + x;

for (index=0; index<=y2-y1; index++)

{

video_buffer[line_offset] = color;

line_offset+==320; // переходим к следующей линии

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

} // конец функции

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

void main(void)

{

int index;

RGB_color color,color_1;

// установить режим 320х200х256

Set_Mode(VGA256) ;

// создать палитру цветов

Create_Cool_Palette();

// рисуем по одной вертикальной линии для каждого цвета

for (index=0; index<320; index++) V_Line(0,199,index,index);

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

while(!kbhit())

{

Get_Palette_Register(0,(RGB_color_ptr)&color 1) ;

Get_Palette_Register(0,(RGB_color_ptr)&color_l);

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

{

Get_Palette_Register(index+l,(RGB_color_ptr)&color);

Get_Palette__Register(index+l, (RGB_color_ptr)&color) ;

Set Palette Register(index,(RGB color_ptr)&color) ;

} // конец

цикла for

Set_Palette_Register(255,(RGB_color_ptr)&color_1);

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

// переходим обратно в текстовый режим

Set_Mode(TEXT_MODE);

} // конец функции

Программа из Листинга 5.8 создает новую палитру, которая содержит 64 оттенка всех основных цветов, включая серый. Затем, она разделяет каждый цвет вертикальными линиями и после этого перемешивает их.

Вроде, хватит об этом. Теперь стоит поговорить о том, как целиком прочитать файл с образом. Начнем с формата PCX-файлов.




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