首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tac-Toe Player vs AI -- AI问题

Tac-Toe Player vs AI -- AI问题
EN

Stack Overflow用户
提问于 2019-01-23 20:18:52
回答 1查看 168关注 0票数 4

这是一个C语言的玩家vs AI tic-tac-toe游戏。如果AI滚动到一个被占用的位置,我如何让它再次滚动,直到它到达一个空置的位置?

代码语言:javascript
复制
char boardchar[3][3] = { {'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'} }; 


void Turn()
{
    /*Player's Turn*/

    AIrandomizer();
    AI = AI_roll();


        if (AI == 1 && boardchar[0][0] == '1')
        {
            boardchar[0][0] = symbAI;
        }

        else if (AI == 2 && boardchar[0][1] == '2')
        {
            boardchar[0][1] = symbAI;                   
        }


        else if (AI == 3 && boardchar[0][2] == '3')
        {
            boardchar[0][2] = symbAI;               
        }


        else if (AI == 4 && boardchar[1][0] == '4')
        {
            boardchar[1][0] = symbAI;       
        }

        else if (AI == 5 && boardchar[1][1] == '5')
        {
            boardchar[1][1] = symbAI;               
        }


        else if (AI == 6 && boardchar[1][2] == '6')
        {
            boardchar[1][2] = symbAI;               
        }

        else if (AI == 7 && boardchar[2][0] == '7')
        {
            boardchar[2][0] = symbAI;               
        }

        else if (AI == 8 && boardchar[2][1] == '8')
        {
            boardchar[2][1] = symbAI;               
        }

        else if (AI == 9 && boardchar[2][2] == '9')
        {
            boardchar[2][2] = symbAI;           
        }

}

我已经尝试了switch(case)和多个I和else I,但我仍然想不出解决这个问题的方法。

EN

回答 1

Stack Overflow用户

发布于 2019-01-23 20:28:03

您可以使用while或do-while语句。

还要制作一个3x3的二维数组来跟踪这些点:0=未填充,1=人类,2= AI (更好的方法是使用枚举)。

在伪代码中:

全局变量:

代码语言:javascript
复制
int spots[3][3]; // 3x3 array

代码:

代码语言:javascript
复制
Setup(); // Setup of board, sets 0's to spots.

while (!endOfGame())
{
    Player(); // Handle player, assuming it plays first, sets a 1 in one spot

    if (!endOfGame())
    {
         AI();
    }
}


void AI() 
{
    do
    {
       square = AIChoice();
    } while (spots[square] == 0);

    // Now we know spots[square] == 0, thus unfilled
    spots[square] = 2; // AI
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54327109

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档