Форум программистов, компьютерный форум CyberForum.ru

Фикс скорости Игры - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Описать абстрактный класс для операции http://www.cyberforum.ru/cpp-beginners/thread727343.html
Опишите абстрактный класс объектов, для которых определены операции ==, =, !=. Операцию == определите полностью для случая, когда объекты являются строками символов. Покажите на примере хотя бы одной операции как такое вообще реализовать.
C++ Определить класс с именем STUDENT 1. Определить класс с именем STUDENT, содержащий следующие поля: а) Фамилия и инициалы; б) Номер группы; в) Успеваемость (массив из пяти элементов). Определить методы доступа к этим полям и перегруженные операции извлечения и вставки для объектов типа STUDENT. 2. Написать программу, выполняющую следующие действия: а) ввод с клавиатуры данных в массив, состоящий из десяти объектов типа... http://www.cyberforum.ru/cpp-beginners/thread727342.html
C++ вычисление в математических задачах
Найти площадь треугольника, две стороны которого равны a и b , а угол между этими сторонами γ
Метод ближайшего соседа C++ Builder
Добрый день! Нужна помощь по созданию алгоритма. Реализовать метод ближайшего соседа(метод одиночной связи) на с++ Builder, используя матрицу 10х10. Создал матрицу, но элементы, исключая диагональ должны отличаться. Пытался рандом сделать типа дубль, но выдает ошибку. Подскажите как возможно реализовать рандом по всем ячейкам? и как вообще реализуется алгоритм соседей? ...
C++ Обработка последовательностей (Если набор образует убывающую посл-ть, вывести 0...) http://www.cyberforum.ru/cpp-beginners/thread727303.html
Дано целое число N и набор из N вещественных чисел. Если данный набор образует убывающую последовательность, то вывести 0; в противном случае вывести номер первого числа, нарушающего закономерность.
C++ Найти первый из номеров K, для которых выполняется условие... Дано число D (> 0). Последовательность чисел AN определяется следующим образом: A1 = 2, AN = 2 + 1/AN–1, N = 2, 3, ... Найти первый из номеров K, для которых выполняется условие |AK – AK–1| < D, и вывести этот номер, а также числа AK–1 и AK. подробнее

Показать сообщение отдельно
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
11.12.2012, 13:22     Фикс скорости Игры
Есть два диаметрально различающихся решения:
1) Вычислять время, прошедшее между кадрами и с учётом этого времени вычислять "приращения" для перемещений и прочего. Т.е. на слабой машине выполнится одно перемещение на 10 мм, а на быстрой машине выполнится пять перемещений, но по 2мм каждое (условно говоря).
2) Фиксировать частоту кадров (это гораздо проще). Ты вычисляешь, сколько времени ушло на отрисовку одного кадра. Сравниваешь затраченное время с заданной единицей времени (например 1/60 секунды) и, если затраченное время меньше, то усыпляешь игру на доли секунды, не получишь эту 1/60 секунды.

Второй вариант проще закодировать

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//цикл игры
while(...)
{
    DWORD startTime = GetTickCount();
 
    ...
    // Визуализация и прочее
    ...
 
    DWORD endTime = GetTickCount();
 
    DWORD oneFrameTime = 1000 / 50; // 50 кадров в секунду, чтобы с целыми числами работать
    DWORD sleepTime = endTime - startTime;
    if( sleepTime >= oneFrameTime )
         continue; // Отрисовка заняла больше 1/50 секунды. Игра будет "подтормаживать"
    else
       ::Sleep( oneFrameTime - sleepTime );
}
 
Текущее время: 20:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru