Как создать задержку в коде
Я написал змейку, но она движется очень быстро. Для фикса надо только добавить в конце цикла while задержку, например, в пол секунды, как это сделать?
Отслеживать
user206435
задан 23 июн 2018 в 7:32
33 1 1 золотой знак 1 1 серебряный знак 5 5 бронзовых знаков
Ответы ниже решают Вашу проблему, но делают это плохо. Вам нужно использовать таймер и менять позицию по таймеру, использование sleep это почти всегда неправильно.
23 июн 2018 в 7:45
Скорее всего в данном случае sleep будет самым хороших решением.
23 июн 2018 в 7:52
4 ответа 4
Сортировка: Сброс на вариант по умолчанию
У вас есть несколько вариантов для решения этой задачи:
1 вариант:
#include #include . std::this_thread::sleep_for(std::chrono::nanoseconds(500000000));
2 вариант:
#include // для Unix систем . sleep(500);
3 вариант:
#include // для Win32 систем . Sleep(500);
4 вариант:
#include // для Win32 систем . delay(500);
Но конечно же, данные варианты не являются наилучшим способом для решения этой задачи. В частности я бы сделал для змейки таймер(тактовый генератор), которые на каждый такт изменял бы позицию змейки на поле, а также генерировал новую еду для змейки к примеру и многое другое. Подробнее об этом вы можете прочитать здесь.
Как в C++ Buildere сделать задержку программы?
Такая ситуация: пишу программу на Buildere. Нужно чтобы некоторое действие она выполняла с задержкой скажем секунд эдак несколько. Как это реализовать?
Лучший ответ
В C++ Builder’е задержку можно реализовать несколькими способами:
1. функция sleep() — приостанавливает программу на целое число секунд (подключаемая библиотека dos.h);
2. функция delay() — приостанавливает программу на целое число милисекунд. Работает только в Borland C++ 3.1 (подключаемая библиотека dos.h);
3. функция Sleep() — приостанавливает программу на целое число милисекунд (подключается заголовочным файлом windows.h). Работает как в консольных приложениях, так и в приложениях с формами.
4. и самый интересный вариант, самописная не документированная конструкция:
Основное преимущество — подключать ничего не надо.
Как организовать задержку выполнения программы в C
wikiHow работает по принципу вики, а это значит, что многие наши статьи написаны несколькими авторами. При создании этой статьи над ее редактированием и улучшением работали, в том числе анонимно, 11 человек(а).
Количество просмотров этой статьи: 30 670.
В этой статье:
Вы когда-нибудь хотели создать программу на C, которая выжидает определенное время? Вы можете настроить способ, чтобы дать времени «пролететь», например: при показе всплывающей страницы (уведомление или подсказка) для игры. . ОК, вот несколько способов создания программы вида «stand still» (стоять на месте), читайте дальше .
Пусть ваш процессор поработает в течение некоторого времени, не вызывая заметного события.
Не выполняйте другие операции во время этой задержки, чтобы создать простую временную задержку.
Метод 1 из 2:
Методика цикла «for-loop»
Используйте типичный цикл «for», за которым следует пустой оператор для реализации задержки.
- for (i=1 ; i
- Оператор, идущий после «;» заставляет компьютер выполнить цикл 100 раз без заметного события. Он лишь создает временную задержку.
Метод 2 из 2:
Методика «sleep()»
Используйте sleep(). Функция называется sleep(int ms), объявленная в , которая заставляет программу ждать в течение указанного времени в миллисекундах.
- #include
- sleep(1000);
- Измените «1000» на количество миллисекунд, которые вы хотите ждать (например, если вы хотите сделать 2-секундную задержку, замените его на «2000».
- Совет: В некоторых системах значение может указываться в секундах вместо миллисекунд. Поэтому, иногда 1000 — не является 1 с, но, в действительности, 1000 секунд.
Пример кода
Программа, которая ожидает определенное количество секунд:
#include #include int main() int del; // The delay period printf("Enter the delay time (in seconds): "); scanf("%i",&del); del *= 1000; // Multiply it by 1000 to convert to milliseconds Delay(del); // Delay. printf("Done."); return 0; >
Программа, которая выполняет обратный отсчет от 10 to 0:
#include #include int main() int i; for(i = 10; i >= 0; i--) printf("%i\n",i); // Write the current 'countdown' number Delay(1000); // Wait a second > return 0; >
Как сделать задержку в c
Есть ли в чистом Cи эквивалент usleep () WinAPI
или только использовать _asm вставку
Ничего не смог нарыть
WAIT() -это из какой оперы:'(
Добавлено 02.07.05, 19:31
по ключу delay нашел, что в Си нет функции задержки.
Сообщение отредактировано: oksman — 03.07.05, 09:03
Сообщ. #2 , 02.07.05, 22:08
Full Member
Рейтинг (т): 27
В принципе в stdlib есть ф-ция clock, с помощью которой можно организовать задержку.
Но её резолюция низкая и платформо-зависимая (обычно 10-100 милисекунд).
Сообщ. #3 , 03.07.05, 07:17
Рейтинг (т): 17
если для доса то у борланда есть функция sleep
Сообщ. #4 , 03.07.05, 07:52
Senior Member
Рейтинг (т): 36
Цитата rodion @ 03.07.05, 07:17
если для доса то у борланда есть функция sleep
Она не только для доса годится: DOS, UNIX, WIN32, OS/2
Сообщ. #5 , 03.07.05, 09:03
Senior Member
Рейтинг (т): 9
Цитата The-Boss @ 03.07.05, 07:52
Цитата rodion @ 03.07.05, 07:17
если для доса то у борланда есть функция sleep
Она не только для доса годится: DOS, UNIX, WIN32, OS/2
При компиляции В VC++6
получаю
Release/: fatal error LNK1120: 1 unresolved externals symbol _sleep
пути к stdlib.h прописаны
Сообщ. #6 , 03.07.05, 09:15
Full Member
Рейтинг (т): 27
sleep — компиляторо/платформо зависимая ф-ция. Такой ф-ции в stdlib нет.
На Win32 есть ф-ция Sleep(milliseconds). #include
На Unix это sleep(seconds).
На Borland это помоему delay(milliseconds).
Сообщение отредактировано: Dimach — 03.07.05, 09:17
Сообщ. #7 , 03.07.05, 09:16
Unregistered
oksman, а может с другой стороны зайдем — зачем тебе задержка?
Сообщ. #8 , 03.07.05, 09:34
Senior Member
Рейтинг (т): 9
Цитата Dimach @ 03.07.05, 09:15
sleep — компиляторо/платформо зависимая ф-ция. Такой ф-ции в stdlib нет.
На Win32 есть ф-ция Sleep(milliseconds). #include
На Unix это sleep(seconds).
На Borland это помоему delay(milliseconds).
Dimach
Спасибо.
Беда в том, что я дорабатываю чужую программу,которую хозяева не поддерживают
(автор неизвестен).
Программа при виде windows.h встает на уши и сообщает мне, что я дебил.
-юсртыхэю 03.07.05, 10:23
Цитата Adil @ 03.07.05, 09:16
oksman, а может с другой стороны зайдем — зачем тебе задержка?
Adil
Извини если ответ получится пространным.
Есть купленный девайс(видеолинейка).К ней идет набор драйверов
и тестовая программа.За программу исполняющую наши нужды естественно надо платить.
Богатство Академии наук думаю тебе известно.Поэтому приходится мне( по специальности чистому железячнику и программисту-дилетанту) эту тестовую программу приспосабливать под наши нужды.
Сам написать нужное я не могу, явно нехватает опыта.
Большую часть удалось сделать( кстати с огромной помощью сего форума и твоей тоже — за что огромное всем спасибо).Сама программа слишком велика, чтобы её обсуждать, напрягая знающих людей.Вот сейчас ИМХО понадобилась задержка, для проверки некоторых аспектов работы оной прогр.
Sleep/windows.h ( нашел в поиске по форуму) в этой прогр не проходят.
См ответ Dimach
Вот вроде все. Спасибо за доброжелательность.