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


Моделирование реального мира - часть 2


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

unsigned int far *clock = (unsigned int far *)0x0000046C;

                        // указатель на внутренний таймер

// функции ///////////////////////////////

void Timer(int clicks)

{

// эта функция использует внутренний таймер с частотой 18.2 "тик"/c.

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

unsigned int now;

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

= *clock;

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

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

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

} // конец Timer

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

void main(void)

{

float ball_x   = 160, ball_y = 50, ball_yv = 0, ball_acc = EARTH_GRAVITY;

int done=0, key;

// используем графические функции Си

_setvideomode(_MRES256COLOR) ;

_settextposition(0,0);

printf("Q to quit, use +,- to change gravity.");

while(!done)

{ // была ли нажата клавиша?

if

(kbhit())

{

// какая клавиша была нажата?

switch(getch())

{

case ' -' :

{

ball_acc-=.1;

} break;

case '=':

{

ball_acc+=.1;

} break;

case 'q' :

{

done=1;

} break;

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

// сообщим игроку новое значение ускорения

_settextposition(24,2);                  

printf("Gravitational Constant = %f",ball_асc);

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

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

_setcolor(0) ;

_ellipse(_GBORDER, ball_x,ball_y,ball_x+10,ball_y+10);

// перемещаем мяч

ball_y+=ball_yv;                             

// увеличиваем ускорение

ball_yv+=(ball_acc*.1);                      

// проверим, не достиг ли мяч пола

if (ball_y>190)

{

ball_y=50;

ball_yv=0 ;

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

// рисуем мяч

_setcolor(l) ;

_ellipse(_GBORDER, ball_x,ball_y,ball_x+10,ball_y+10) ;

// немного подождем

Timer(2);

} // конец while

// восстановить начальный видеорежим

_setvideomode(_DEFAULTMODE);

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

Физические модели нужны для того чтобы все происходящее в игре выглядело более реально и, кроме того, для того чтобы представлять себе, как наш объект будет взаимодействовать со статическими объектами.




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



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