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

Неправильно работает таймер SDL_AddTimer - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как работает калькулятор? http://www.cyberforum.ru/cpp-beginners/thread990290.html
100500-й раз задаю вопрос про этот калькулятор. Возможно, сам виноват - формулировал неточно. Ну, так вот: пожалуйста, опишите на примере введённого выражения (например) 21 + 3* 12 (с сохранением...
C++ Перепишите пожалуйста код с языка Pascal на C++ Вот сам код. {$N+} uses crt; const nmax=60; function Step2(n:byte):extended; var p:extended; i:byte; begin p:=1; http://www.cyberforum.ru/cpp-beginners/thread990283.html
C++ Даны два класса: ellipse и circle
Помогите решить пожалуйста!Да,я чайник.. :( Даны два класса: ellipse и circle. Объекты этих классов могут быть отображены на экране с помощью функции-члена draw и перемещены с помощью...
C++ Не работает getline
Есть прога, которая считает предложения и выводит самое длинное.Есть главный кейс с меню. В первом пункте кейса есть гетлайн, но при выборе этого пункта прога прогоняет кейс до ввода переменной для...
C++ найти и вывести объем тетраэдра http://www.cyberforum.ru/cpp-beginners/thread990264.html
Как найти объем через координаты вершин? Как его написать? //На вход подается некоторое количество тетраэдров(координаты вершин). //Отсортировать и вывести их по возрастанию объемов. #include...
C++ целочисленный массив X(n) ребят помогите пожалуйста, не могу сообразить В целочисленный массив X(n) после каждого нечетного элемента вставить максимальный простой элемент этого же массива. Определить среднее... подробнее

Показать сообщение отдельно
dimakozyr
157 / 24 / 1
Регистрация: 17.08.2013
Сообщений: 461

Неправильно работает таймер SDL_AddTimer - C++

28.10.2013, 11:14. Просмотров 486. Ответов 5
Метки (Все метки)

Бобры появляются каждые 2 секунды.
Через 6 секунд срабатывает таймер и они появляются в 2 раза быстрее.
Если все жизни вышли, таймер должен удаляться, а время отображения становиться опять 2 секунды.
Но почему-то если сыграть одну игру, проиграть, нажать play, бобры сразу появляются с большой скоростью.

// SceneElements.h
C++
1
2
3
4
class SceneElements {
    double& getTimeToDisplayBeaverInSeconds()
    { return timeToDisplayBeaverInSeconds; } // По умолчанию 2
};
// SceneElements.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Uint32 callback(Uint32 interval, void *param) {
    SceneElements* p = (SceneElements*)param;
 
        // Уменьшение времени отображения бобров в 2 раза
    p -> setTimeToDisplayBeaverInSeconds(
        p -> getTimeToDisplayBeaverInSeconds() /= 2;
    return interval;
}
 
void SceneElements::scene_2_events() {
    // Запуск таймера. 6000 - время (мс), через которое вызовется callback()
    SDL_TimerID timer_id = SDL_AddTimer(6000, callback, this);
 
    // Некоторый код
 
    if ( /* Если жизней ноль */ ) {
    SDL_RemoveTimer(timer_id);  // Удаление таймера
 
        // Время отображения бобров устанавливается в 2 секунды
    timeToDisplayBeaverInSeconds = MAX_TIME_TO_DISPLAY_BEAVER;  
 
        // Количество жизней устанавливаем в максимум
    pDrawScene -> setLivesOfPlayerToMax();
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru