Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Для новичков > Время выполнения проги |
Автор: 1122 17.5.2008, 17:34 |
Всем привет. Как сделать так, чтобы программа выполнялась только, например, 5 минут. Заранее спасибо. |
Автор: archimed7592 17.5.2008, 20:05 |
1122, а по истечению 5-ти минут что будет(должно быть)? |
Автор: 1122 17.5.2008, 20:25 |
Конец программы. Ну в принципе не важно, что должно быть (вывод меню на экран или еще что-нибудь). Или Например в цикле увеличивать переменную на единицу в течении пяти минут, а потом выход из цикла (или из функции, в которой цикл).... |
Автор: rrrFer 17.5.2008, 20:46 | ||||
1122
Можно так(неоптимально наверно):
|
Автор: 1122 17.5.2008, 20:58 |
Спасибо. А как данный пример адаптировать к задаче такого рода: "Создать игру. С верхней части экрана падают шарики. Управляя боченком, игрок должен собрать как можно больше шаров за одну минуту." И что возвращает функция difftime(t2,t1)? |
Автор: rrrFer 18.5.2008, 06:43 | ||||||
очевидно разность времен t2 и t1, которые определяются в момент вызова time(&t2) и time(&t1) соответственно (в секундах)
Возможно так:
ну и аналогично там где идет управление бочонком |
Автор: LostSoul 18.5.2008, 08:40 |
WinApi пользоваться можно? Если да, то такое просто реализовать с двумя потоками. В одном - ожидание 5 минут, во втором - код игры. |
Автор: rrrFer 18.5.2008, 13:37 | ||
LostSoul создать вспомогательны процесс можно и без WinApi, выглядеть это может например так:
однако тут есть ряд проблем: во-первых при использовании system или ShellExecute или CreateProcess или функций типа exec(например execve) -надо указывать полный путь к исполняемой программе. Путь конечно определить можно, но зачем так сложно решать задачу непонятно, или можно использовать средства командной строки для поиска этого файла - это конечно очень просто, однако рабоать будет долго... во-вторых время будет отсчитываться только пока на этом приложении будет установлен фокус, однако "1122" пишет игру и поэтому явно фокус будет установлен именно на игре, а значит, поток отсчета времени будет вытеснен и Sleep(m/30); будет выполняться весно ![]() кстати, m/30 - это 2 секунды, если тебе надо 5 минут, то пиши m*5 |
Автор: 1122 18.5.2008, 22:29 |
Спасибо. Завтра поэксперементирую! |
Автор: archimed7592 18.5.2008, 23:06 |
Зачем? 0_о Добавлено через 40 секунд (я про std::system)... |
Автор: rrrFer 20.5.2008, 08:24 | ||||
archimed7592
а что ты предлагаешь написать тут вместо D:\\myprocess.exe? |
Автор: rrrFer 20.5.2008, 14:28 |
archimed7592 путь к исполняемой программе надо, чтобы ее исполнить |
Автор: archimed7592 20.5.2008, 15:05 | ||
Делаю
И ничего не надо... Со start то же самое. Если исполняемый файл находится в текущей директории(для windows) или путь к нему находится в PATH, то, очевидно, ничего не требуется. Другое дело, что если он не находится в текущей директории и путь к нему не присутствует в PATH, но это уже проблема не std::system, а кого-то другого. |
Автор: rrrFer 20.5.2008, 15:13 | ||||
ммм...
это что? |
Автор: archimed7592 20.5.2008, 15:16 |
Это строка из одного из моих проектов с изменённым названием исполняемого файла, дабы был ясен смысл. Я это к тому, что никаких полных путей мне писать не приходится и для меня это не проблема(пока я не создам её себе сам) ![]() |