【问题标题】:Tic Tac Toe - Turns C井字游戏 - 转 C
【发布时间】:2015-04-24 05:53:38
【问题描述】:

我一直在转来转去,试图弄清楚如何让我的球员轮流。问题是有两个玩家在玩井字游戏,但我不知道该怎么做。这是我的代码:

#include <stdio.h>
#include <stdlib.h>

void displayBoard(char [3][3]);enter code here
int playerType (int player, char boardArray[3][3]);
int selectLocation(char [3][3], int , int );
char setTurn(char [3][3], int , int , char );


int main()
{
    int player,location;
    char position;
    char boardArray[3][3]={{'1','2','3'},
            {'4','5','6'},
            {'7','8','9'}};

    player= playerType (player, boardArray);

    int i;

    for(i=0;i<9;i++)
    {

        if (player==3)
            break;
        else{

            location=selectLocation(boardArray, player, location);

            position=setTurn(boardArray, location, player, position);
        }

    }


    return 0;
}

void displayBoard(char boardArray [3][3]) //This displays the tic tac toe board
{
    printf("\t%c|%c|%c\n", boardArray[0][0], boardArray[0][1], boardArray[0][2]);
    printf("\t%c|%c|%c\n", boardArray[1][0], boardArray[1][1], boardArray[1][2]);
    printf("\t%c|%c|%c\n", boardArray[2][0], boardArray[2][1], boardArray[2][2]);

}
int playerType (int player, char boardArray [3][3]) //This decides who plays first
{

    player=0;

    printf("Enter 1 for Player X.\n");
    printf("Enter 2 for Player O.\n");
    printf("Enter 3 to Quit. \n");
    scanf("%d", &player);


    if (player == 1)
    {
        printf("You're player X.\n");
        displayBoard(boardArray);
    }
    else if (player == 2)
    {
        printf("You're player O.\n");
        displayBoard(boardArray);
    }
    else if(player == 3)
        printf("You Quit.\n");

    else
        printf("Invalid Entry.\n");




    return player;
}


int selectLocation(char boardArray[3][3], int player, int location) //This takes in the location
{
    printf("Pick a location from 1-9.\n");
    scanf("%d", &location);

    return location;
}

char setTurn(char boardArray[3][3], int location, int player, char position) //This outputs the location
{

    if (player == 1)
    {
        switch(location)
        {
        case 1:
        {
            boardArray[0][0]='x';
            break;
        }
        case 2:
        {
            boardArray[0][1]='x';
            break;
        }
        case 3:
        {
            boardArray[0][2]='x';
            break;
        }
        case 4:
        {
            boardArray[1][0]='x';
            break;
        }
        case 5:
        {
            boardArray[1][1]='x';
            break;
        }
        case 6:
        {
            boardArray[1][2]='x';
            break;
        }
        case 7:
        {
            boardArray[2][0]='x';
            break;
        }
        case 8:
        {
            boardArray[2][1]='x';
            break;
        }
        case 9:
        {
            boardArray[2][2]='x';
            break;
        }
        default:
            printf("invalid");
        }

    }
    else if (player == 2)
    {
        switch(location)
        {
        case 1:
        {
            boardArray[0][0]='O';
            break;
        }
        case 2:
        {
            boardArray[0][1]='O';
            break;
        }
        case 3:
        {
            boardArray[0][2]='O';
            break;
        }
        case 4:
        {
            boardArray[1][0]='O';
            break;
        }
        case 5:
        {
            boardArray[1][1]='O';
            break;
        }
        case 6:
        {
            boardArray[1][2]='O';
            break;
        }
        case 7:
        {
            boardArray[2][0]='O';
            break;
        }
        case 8:
        {
            boardArray[2][1]='O';
            break;
        }
        case 9:
        {
            boardArray[2][2]='O';
            break;
        }
        default:
            printf("Invalid");
        }
    }

    printf("\t%c|%c|%c\n", boardArray[0][0], boardArray[0][1], boardArray[0][2]);
    printf("\t%c|%c|%c\n", boardArray[1][0], boardArray[1][1], boardArray[1][2]);
    printf("\t%c|%c|%c\n", boardArray[2][0], boardArray[2][1], boardArray[2][2]);


    return position;

}

【问题讨论】:

  • 那么......你被困在哪里了?什么是预期的 o/p 和什么是实际的?
  • 我宁愿将 boardArray 初始化为全 0,并将 boardindex 设置为 1 或 2 以指示哪些玩家拥有该索引。但回到你的问题......这似乎不清楚......你的开关的哪个功能?还是转弯功能还有待创建?
  • 转弯功能仍有待创建。我在想也许我会有一个嵌套的 for 循环,也许?

标签: c loops


【解决方案1】:

像这样在for循环内更改player selection部分player= playerType (player, boardArray); -

int player,location;
char position;
char boardArray[3][3]={{'1','2','3'},
                       {'4','5','6'},
                       {'7','8','9'}};
int i;
for(i=0;i<9;i++)
{
    player= playerType (player, boardArray);
    if (player==3)
        break;
    else
    {
        location=selectLocation(boardArray, player, location);
        position=setTurn(boardArray, location, player, position);
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-11
    • 2015-06-12
    • 1970-01-01
    • 1970-01-01
    • 2015-01-08
    相关资源
    最近更新 更多