структура c ++: повторение набора функций с определенной скоростью - PullRequest
0 голосов
/ 31 октября 2011

Так что я застрял с небольшой программой на C ++. Я использую «кодовые блоки» в среде w7.

Я сделал функцию, которая показывает карту ASCII и маркер. Вторая функция обновляет положение маркеров на этой карте.

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

every x times/second DO { showmap(); updatePosition();}

Я новичок в C ++ и надеюсь, вы поможете!

Ответы [ 3 ]

2 голосов
/ 31 октября 2011

петля с усле

unsigned XtimesPerSecond = 5;    // for example
unsigned long long microseconds = 1000000 / XtimesPerSecond;

do
{
    showmap();
    updatePosition();
    usleep(microseconds);
} while(true);
1 голос
/ 31 октября 2011

В зависимости от того, что еще нужно сделать вашей программе, вам может потребоваться использовать событийно-ориентированное программирование . Если обновление этого маркера - единственное, что он будет делать, будет достаточно простого цикла while со сном, как показано в других ответах.

Для программирования, управляемого событиями, обычно требуется цикл обработки событий - функция, которую вы вызываете в main, которая ожидает события и отправляет их. Большинство циклов событий предоставляют событий таймера - где, по сути, вы просите цикл событий вызвать функцию X по истечении заданного интервала времени.

Скорее всего, вы не хотите писать свой собственный цикл событий. Есть много вариантов для цикла событий, в зависимости от многих вещей, таких как язык программирования и требуемая переносимость.

Некоторые примеры циклов событий:

0 голосов
/ 31 октября 2011

Кажется, что вы хотите реализовать бесконечный цикл, как игровой движок.

Попробуйте сделать это:

while (true)
{
    showmap();
    updatePosition();
    sleep(1);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...