C ++游戏,线程和并发编程

时间:2015-11-02 16:33:56

标签: c++ multithreading concurrency

我迫切需要一些指导。我需要编写一个Connect 4的游戏程序,其中将应用与线程的并发编程。我需要自己学习并在一周内编写这样的程序。我不知道此时如何实现并发部分,我应该寻找什么资源......希望你能对它有所了解......

1 个答案:

答案 0 :(得分:1)

这个想法似乎是计算机播放器本身就是一个线程,主线程正在处理游戏,即协调人类玩家和机器人玩家。

下面是一些(伪)代码,可以帮助您入门。

std::mutex m;
std::queue<int> from_opponent;
std::queue<int> from_robot;

void robotplayer(bool& go_on)
{
    bool wait_for_opponent = true;
    while (go_on)
    {
        int opponents_move;
        while (wait_for_opponent)
        {
            // Spend x milliseconds planning next move
            // ...
            // ...

            m.lock();
            if (!from_opponent.empty())
            {
                opponents_move = from_opponent.front();
                from_opponent.pop();
                wait_for_opponent = false;
            }
            m.unlock();
        }

        // ... calculate robots move
        // ...

        m.lock();
        from_robot.push(row_number);
        m.unlock();   

        wait_for_opponent = true;
    }
}

int main()
{
    bool go_on = true;

    std::thread robot(robotplayer, go_on);

    while(go_on)
    {
        // Wait for input from user (e.g. via cin)

        // Send move to robot
        m.lock();
        from_opponent.push(row_number);
        m.unlock();   

        // Update display

        // Check for a winner (i.e. set go_on = false)

        // Wait for input from robot

        // Update display

        // Check for a winner (i.e. set go_on = false)
    }

    robot.join();
}