Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 23.08.2019
Сообщений: 4
1

Задержка (Остановка) только одной функции в программе

23.08.2019, 14:32. Показов 549. Ответов 10
Метки нет (Все метки)

В общем, осваиваю я с++, для чего делаю разнообразные элементарные программы. Создавая очередную консольную программу, мне понадобилось вывести на экран таймер, который будет отсчитывать некоторое количество времени, и, в случае, если пользователь правильно не введёт символ, то программа бы завершала работу. Мне нужно было задать переменную, и сделать цикл, который раз в секунду отнимал от этой переменной единицу, В случае ввода правильного символа - цикл бы начинался заново, в случае не правильного ввода - программа бы завершалась. Но все попытки свелись к тому, что нашёл только вариант со Sleep(1000), но он останавливает на заданное время всю программу,а не только данный цикл. Вот функция main:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int main()
{
    Start(); //Стартовые настройки
    Paint(); // Отрисовка начальной карты (Эта программа - игра)
    while (!GameOver)
    {
        Map();   //постоянное обновление карты
        Input(); // считывание клавиш
    }
    if (GameOver = true) //При проигрыше
    {
        system("cls");
        cout << "GAMEOVER";
    }
}
Помогите хотя бы идеей, как это сделать. Заранее, спасибо. main показал, потому что Если я ставил свой недо-таймер в разные места (перед Map, после Input, или вообще вне цикла), Программа работала по разному.
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.08.2019, 14:32
Ответы с готовыми решениями:

две функции в одной программе
Добрый день. Есть проблема. Нужна помощь. Изучая с++ по самоучителю. Там указанны были две...

Объединять классы и внешние функции в одной программе плохой тон программирования?
Доброго времени суток! Преподаватель в институте задал определённую задачу, однако не определил...

Задержка в программе (не API)
Как сделать задержку в программе на VC++ 6.0. Не API функцией.

Остановка, задержка
Какой код в Visual Basic 6.0 для задержки ? К примеру в C# - это...

10
22 / 20 / 3
Регистрация: 26.12.2010
Сообщений: 173
23.08.2019, 14:46 2
Используйте потоки.
0
0 / 0 / 0
Регистрация: 23.08.2019
Сообщений: 4
23.08.2019, 15:04  [ТС] 3
Morgot, Расшифруйте, я новичок)
0
Модератор
Эксперт С++
11071 / 9128 / 5485
Регистрация: 18.12.2011
Сообщений: 24,399
23.08.2019, 15:05 4
Не по существу вопроса, но
Цитата Сообщение от Саве Посмотреть сообщение
while (!GameOver)
Здесь Вы понимаете, что GameOver - логическая переменная и используете ее значение как логическое выражение.
Цитата Сообщение от Саве Посмотреть сообщение
if (GameOver = true) //При проигрыше
А куда эти знания девались теперь?
да еще с ошибкой.
C++
1
if (GameOver) //При проигрыше
1
221 / 148 / 79
Регистрация: 14.03.2016
Сообщений: 459
23.08.2019, 15:07 5
Можно использовать библиотеку chrono, для расчета времени за один тик цикла, и функцию Sleep с аргументом в 20 - 100 мс, чтобы программа не крутилась слишком быстро. Тогда таймер можете сделать через обновления времени через chrono, либо просто поставить какое-нибудь число и уменьшать его каждый тик, тоже, в принципе, таймер.
0
Продавец времени
5780 / 3189 / 732
Регистрация: 12.03.2015
Сообщений: 15,121
23.08.2019, 15:14 6
Если можно юзать WinAPI, то есть SetTimer() и KillTimer(). Примеров их использования в интернетах - туева хуча.
З.Ы. Честно признаюсь: в консольных приложениях ни разу не юзал. Пробуй.
0
0 / 0 / 0
Регистрация: 23.08.2019
Сообщений: 4
23.08.2019, 15:37  [ТС] 7
zss, не совсем понял вопрос. Изначально значение переменной GameOver = false. При некоторых условиях, которые отображены в функциях Paint() и Map(), содержимое которых я здесь не показал, Логическая переменная GameOver меняет значение на противоположное, перестаёт выполнятся цикл while и выполняется Оператор выбора If, упомянутый выше. Надеюсь, я объяснял вообще то, что вы спросили)
0
Life Builder
526 / 493 / 373
Регистрация: 12.01.2011
Сообщений: 1,734
23.08.2019, 16:19 8
Цитата Сообщение от Саве Посмотреть сообщение
и выполняется Оператор выбора If, упомянутый выше.
строка 10:
Цитата Сообщение от Саве Посмотреть сообщение
if (GameOver = true) //При проигрыше
Здесь, как я понимаю, оператор сравнение нужно. А не присвоение.
C++
1
if (GameOver == true)
0
Модератор
Эксперт С++
11071 / 9128 / 5485
Регистрация: 18.12.2011
Сообщений: 24,399
23.08.2019, 16:42 9
Цитата Сообщение от Саве Посмотреть сообщение
не совсем понял вопрос
В принципе, некрасиво говорить, что масло масляное. Это очевидно, поэтому, не
C++
1
if (GameOver == true)
а
C++
1
if (GameOver)
0
0 / 0 / 0
Регистрация: 23.08.2019
Сообщений: 4
23.08.2019, 16:56  [ТС] 10
zss, А, Да, Вы правы. Это ошибка. Вручную переписывал, просто. Да какая разница, писать просто GameOver, или с оператором присвоения. Мне не жалко лишние 6 клавиш нажать. Мне ведь не важно, сколько весит программа. Ну да ладно, вопрос не об этом
0
Продавец времени
5780 / 3189 / 732
Регистрация: 12.03.2015
Сообщений: 15,121
23.08.2019, 17:31 11
Цитата Сообщение от Саве Посмотреть сообщение
Мне ведь не важно, сколько весит программа. Ну да ладно, вопрос не об этом
Это индикатор того, что автор кода - сказочный долбо... двоечник.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.08.2019, 17:31

Привести пример функции непрерывной только в одной точке; только в двух точках
Помогите пожалуйста привести примеры функций, непрерывных в а)в одной точке; б)в двух точках;...

Дать доступ пользователю из вне только к одной программе?
Возник такой вопрос. Есть сеть из 3х компьютеров объеденные через Workgroup с выходом в Интернет....

Задержка в программе
как заставить прогу ждать допустим 30 сек(т.е. не идти дальше по кодув течении определённого...

задержка в программе
как сделать задержку в 10секунд???


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.