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

188
03 августа 2018, 01:20

Я написал змейку, но она движется очень быстро. Для фикса надо только добавить в конце цикла while задержку, например, в пол секунды, как это сделать?

Answer 1

У вас есть несколько вариантов для решения этой задачи:

1 вариант:

#include <thread>
#include <chrono>
...
std::this_thread::sleep_for(std::chrono::nanoseconds(500000000));

2 вариант:

#include <unistd.h> // для Unix систем
...
sleep(500);

3 вариант:

#include <windows.h> // для Win32 систем
...
Sleep(500);

4 вариант:

#include <dos.h> // для Win32 систем
...
delay(500);   

Но конечно же, данные варианты не являются наилучшим способом для решения этой задачи. В частности я бы сделал для змейки таймер(тактовый генератор), которые на каждый такт изменял бы позицию змейки на поле, а также генерировал новую еду для змейки к примеру и многое другое... Подробнее об этом вы можете прочитать здесь.

Answer 2

sleep в помощь. Но в зависимости от оси/компилятора могут быть разные решения, но с новым стандартом можно использовать sleep_for

Задержка в пол секунды будет выглядеть так

std::this_thread::sleep_for(500ms);
Answer 3

В цикле движения используй Sleep(кол_во миллисекунд)

(Ниже код для примера, который можешь у себя прогнать, чтобы увидеть, как все работает)

#include <iostream>
#include <cstdlib>
short a = 0;
int main() {
    while(a < 10) {
    a++;
    std::cout << a << std::endl;
    Sleep(1000);
    system("cls");
    }
}
Answer 4

ну есть #include<windows.h>

а там есть функция sleep(кол-во миллисекунд) она останавливает программу на столько-то миллисекунд(1000 миллисекунд = 1 секунда)

READ ALSO
Ошибка в работе с указателем

Ошибка в работе с указателем

В программе массив должен заполниться числами от 0 до 9 и после этого, отсчитывая от указателя, (который, как известно, ссылается всегда на 1 элемент...

157
Проблема с ARcore

Проблема с ARcore

Учу ARcore, но кроме сайта разработчика (на котором достаточно мало материалов), не могу найти ни одной книги и ни одного урокаПосоветуйте, пожалуйста,...

154
Проблема с отображением картинки в WebView

Проблема с отображением картинки в WebView

После попытки загрузки картинки в WebView выходит ошибка E/libEGL: validate_display99 error 3008 (EGL_BAD_DISPLAY) И на месте где должна быть картинка белый квадратМожно...

142
NPE при попытке reader.readLine;

NPE при попытке reader.readLine;

Дан файл, в котором построчно хранятся данные вида:

181