Прогрессивно замедляется цикл? - PullRequest
1 голос
/ 09 марта 2012

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

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

1 Ответ

3 голосов
/ 09 марта 2012
#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 random, это скорее 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 и clang, это -std = c ++ 0x

...