Как сделать задержку в c
Перейти к содержимому

Как сделать задержку в c

  • автор:

Как создать задержку в коде

Я написал змейку, но она движется очень быстро. Для фикса надо только добавить в конце цикла 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» (стоять на месте), читайте дальше .

Step 1 Пусть ваш процессор.

Пусть ваш процессор поработает в течение некоторого времени, не вызывая заметного события.

Step 2 Не выполняйте другие.

Не выполняйте другие операции во время этой задержки, чтобы создать простую временную задержку.
Метод 1 из 2:

Методика цикла «for-loop»

Step 1 Используйте типичный .

Используйте типичный цикл «for», за которым следует пустой оператор для реализации задержки.

Step 2 Напишите следующим образом, для примера:

  • for (i=1 ; i
  • Оператор, идущий после «;» заставляет компьютер выполнить цикл 100 раз без заметного события. Он лишь создает временную задержку.

Метод 2 из 2:

Методика «sleep()»

Step 1 Используйте sleep().

Используйте sleep(). Функция называется sleep(int ms), объявленная в , которая заставляет программу ждать в течение указанного времени в миллисекундах.

Step 2 Включите следующую строку в вашу программу перед

  • #include

Step 3 Вставьте там, где.

  • 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
Вот вроде все. Спасибо за доброжелательность.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *