Создание игры типа DOOM, Wolf 3D
Страница: [1]
void main (void) {
long RememberTheTime = getTime ();
int FramesPerSecond = 0;
while (TRUE) {
TimeCounter + +;
if (getTime ()-RememberTheTime> = 18) {
FramesPerSecond = TimeCounter;
TimeCounter = 0;
RememberTheTime = getTime ();
}
}
}
Функция getTime () возвращает текущее время в выгладит длинного целого. Это число увеличивается на единицу примерно 18 раз в секунду. TimeCounter показывает количество исполнился цикл. В функции main () организован основной цикл программы, увеличивает TimeCounter на единицу. В начале работы программы время, возвращаемое функцией GetTime запоминается в переменной RememberTheTime. Но если в ходе работы цикла прошла 1 секунда, то FramesPerSecond будет иметь значение количества проходов цикла в секунду. При условии что за один цикл программы рисуется один кадр, то FramesPerSecond можно считать количеством кадров в секунду.
А вот что можно сделать для улучшения и ускорения этой игры.
В первую очередь нужно освободиться от чисел с точкой плавает. Использовав числа с фиксированной точкой мы ускорим весь алгоритм. Число с фиксированной точкой примерно равно числу с плавающей точкой побитовое сдвинутым несколько влево, чтобы сохранять дробную часть. a = long ((float) b> 8) * (b>> 8).
Во-вторых, нужно все значения, которые можно, вычислить заранее и поместить в переменные и массивы. Например значение Синус и косинус можно занести в таблицу из 360 элементов, соответствующих каждому из 360 (.
Наложение текстуры происходит по методу интерполяции. Зная верхнюю и нижнюю точки, можно пройти в цикле по всем точкам от верхней к нижней и узнать соответствующие точки в текстуре. Но более подробное объяснение выходит за рамки данного документа.
Работа с монстрами почти ничем не отличается от работы с самим игроком. Он имеет координаты своего положения и угол зрения. Перемещается к игроку если имеет достаточно энергии и стреляет из рандомизированное промежуток времени. Если энергии недостаточно, убегает.
Список литературы
1. Lary Myers. Animation Construction Kit 3D
2. Sebastien Loisel. Zed3D. A compact reference for 3D computer graphics.
Дэйв Робертс. Программирование игрушек. Основы.
Mark Feldman. Brezenham's Line and Circle Algorithms.
Sebastien Loisel. A tutorial for 2D and 3D vector and texture mapped graphics. Version 0.60
Chris. Egerter. Texture mapped polygons.
Страница: [1]
версия для печати
Читайте также:
— Космонинична лексика
— Литература
— Физическое воспитание в вузах
— Украина в современном геополитическом пространстве
— Организационная структура управления
|