2012-03-09 2 views
1

Я пытался выяснить способ, которым я могу cpp постепенно замедлять цикл для программы для костей, которую я хочу написать. Получение случайного числа и отображение/сравнение его не сложно. Моя проблема заключается в том, чтобы выяснить, как я могу отображать случайные числа, как если бы кубик катился, где он постепенно становился все медленнее и медленнее, пока я не хочу отображать номер rand, который был сгенерирован.Прогрессивно замедляет цикл?

Я подумал о том, чтобы сделать цикл for внутри цикла for-loop и использовать первое число циклов для вычитания из второго. Я не знаю, есть ли лучший способ или нет. Все серификации приходят с серасами о том, как программа идет медленнее, потому что они не выделяют память.

for (int i = 5; i > 0; i--) 
{ 
    for (int j = 1000; j > 0; j -= i) 
    { 
     cout << randNumGen(); 
    } 
} 
+10

Просто поставить задержку, продолжительность которого зависит по значению 'j' внутри внутреннего цикла for? –

+0

Я пойду с тем, что сказал Мэтт. Альтернативой является время, затрачиваемое на расходование потраченных впустую вычислений, как на задержку, но это среда, специфическая и хорошо ... * расточительство *. –

+0

Я бы пошел еще дальше, чем Мэтт Филлипс, и сгенерировал ваши номера без каких-либо задержек, а затем создал другой цикл «отображения» и отобразил их с любой задержкой, в которой вы нуждаетесь. –

ответ

3
#include <thread> 
#include <chrono> 

::: 
for (int i = 5; i > 0; i--) 
{ 
    for (int j = 1000; j > 0; j -= i) 
    { 
     cout << randNumGen(); 
     std::this_thread::sleep_for(
      std::chrono::milliseconds(j)); 

    } 
} 

http://en.cppreference.com/w/cpp/thread/sleep_for

http://en.cppreference.com/w/cpp/chrono

это, вероятно, также стоит ваше время смотреть на C++ 11 случайным образом больше C++ способ генерации случайных чисел в кроссплатформенной манере.

std::uniform_int_distribution<int> distribution(1, 6); //dice values 
std::mt19937 engine; // Mersenne twister MT19937 
int random = distribution(engine); 

http://en.cppreference.com/w/cpp/numeric/random

#include <thread> 
#include <chrono> 
#include <random> 
#include <iostream> 

::: 

std::random_device rd; 
std::uniform_int_distribution<int> dist(1, 6); //dice values 
std::mt19937 mt(rd()); // Mersenne twister MT19937 

for (int i = 5; i > 0; i--) //i don't really get what your loops mean 
{ 
    for (int j = 1000; j > 0; j -= i) 
    { 
     cout << dist(mt); 
     std::this_thread::sleep_for(
      std::chrono::milliseconds(j)); 

    } 
} 

Вам нужно будет компилировать с C++ 11 поддержки для GCC и лязг это -std = C++ 0x

+0

Thats correct Я узнал, что система, в которой я развивалась, имела таймер «задержки», встроенный с сторожевым таймером. Таким образом, функция сна работала. – LF4

+0

@ LF4 без проблем – 111111

Смежные вопросы