Зворотний зв'язок

Створення гри типу DOOM, Wolf 3D

Для точнішого визначення швидкості роботи описаного алгоритму (в кадрах за секунду), були написані відповідні процедури. Ось основна схема визначення кількості кадрів за секунду.

long getTime() {

return peek(0, 0x46E)*65535+peek(0, 0x46C);

}

int TimeCounter=0;

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 можна вважати кількістю кадрів за секунду.

А ось що можна зробити для покращення та прискорення цієї гри.

1.В першу чергу потрібно звільнитися від чисел з точкою, що плаває. Використавши числа з фіксованою точкою ми прискоримо весь алгоритм. Число з фіксованою точкою приблизно дорівнює числу з плаваючою точкою побітово зсунутим дещо вліво, щоб зберігати дробову частину. a = long( (float)b << 8). Такі числа можна складати та віднімати без перетворень. Щоб ділити та множити потрібно виконати побітові зсуви — (a >> 8) * (b >>8).

2.По-друге, потрібно всі значення, які можна, вирахувати заздалегідь і помістити в змінні та масиви. Наприклад значення сінусів та косінусів можна занести в таблицю з 360 елементів, що відповідають кожному з 360.


Реферати!

У нас ви зможете знайти і ознайомитися з рефератами на будь-яку тему.







Не знайшли потрібний реферат ?

Замовте написання реферату на потрібну Вам тему

Замовити реферат