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


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


PCX_Grap_Bitmap ((pcx_picture_pfcr) stext_cells,

(sprite_ptr)&object,7,1,2);

PCX_Grap_Bitmap((pcx picture ptr)&text cells,

(sprite_ptr)Sobject,8,2,2);

PCX_Grap_Bitmap((pcx_picture_ptr)&text_cells,

(sprite_ptr)&object,9,0,3);

PCX_Grap_Bitmap((pcx_picture_ptr)&text_dells,

(sprite_ptr)&object,10,1,3) ;

PCX_Grap_Bitmap ((pcx_picture_ptr) &text_cells,

(sprite_ptr)&object,11,2,3);

// инициализация положения корабля

object.curr_frame = 0;

object.x          = 0;

object.у         =0;

Clear_Double_Buffer() ;

// отслеживание действий игрока и прорисовка корабля

while(!done) {

// нажал ли игрок клавишу?

if (kbhit()) {

switch(getch()) {

case '4' // повернуть корабль влево

{

if (++direction==12)

{

direction==0;

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

} break;

case'6': // повернуть корабль вправо

{

if (--direction < 0)

{

direction=11;

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

} break;

case '8' : // ускорить корабль

{

if (++ship_speed > 20) ship_speed=20;

} break; case

'2': // замедлить корабль

{

if (--ship_speed < 0)

ship_speed=0;

} break;

case 'q': // выход из программы

{

done=l;

} break;

default: break;

} // конец

оператора

switch

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

angle=direction*30+90;

xv = (float)(ship_speed*cos(3.14159*angle/180));

zv = (float)(ship_speed*sin(3.14159*angle/180)};

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

// переместить корабль

x+=xv;

z+=zv;

// ограничить по ближней плоскости

if (z<256)

Z=256;

// рассчитать размер изображения

scale = (int)( scale_distance/z );

// на основании размера изображения

// рассчитать проекции Х и Y

object.х = (int) ((float)x*view_distance / (float)z) + 160 - (scale>>1);

object.у = 100 - (((int) ( (float) y*view_distance / (float)z) + (scale>>1)) );

// ограничить рамками экрана if

(object.х < 0)

object.х

= 0;

else if (object.x+scale >= SCREEN_WIDTH)

object.x = SCREEN_WIDTH-scale;

if (object.у < 0) object.у

= 0;

else

if (object.y+scale >= SCREEN_HEIGHT)




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