如果矩阵[N] [N]是=符号,则检查N次

时间:2015-11-18 07:55:52

标签: c tic-tac-toe

我正在用矩阵[N] [N]创建一个非常基本的Tic-Tac-Toe。 如果每个矩阵索引是例如“X”或“O”,我如何检查每一行,每列和对角线? 例如,如果我有一个矩阵[10] [10],我如何检查第一行是否包含所有'X'? 语言是C,我必须没有任何复杂的事情,我只能使用while循环,等等,不是函数或其他任何东西。 TY!

编辑:这是我试写的代码(它检查每个对角线符号是'X'还是'O'),它实际上有效,但仅适用于3x3矩阵(经典的tic-tac-toe)。我想要的是让它适用于NxN矩阵。

  for (i=0; i<MAX; i++){
            if (matrix[i-1][i-1] == 'X' && matrix[i][i] == 'X' && matrix[i+1][i+1] == 'X')
                flagC=1;
            else if (matrix[i-1][i-1] == 'O' && matrix[i][i] == 'O' && matrix[i+1][i+1] == 'O') 
                flagC=1;

2 个答案:

答案 0 :(得分:0)

char check_row(char** matrix, int row, char value)
{
    for(i = 0; i < N; i++)
        if(matrix[row][i] != value)
            return 0;
    return 1;
}

char check_col(char** matrix, int col, char value)
{
    for(i = 0; i < N; i++)
        if(matrix[i][col] != value)
            return 0;
    return 1;
}

如果要谈论对角线,首先应该决定如何表示对角线。这不难,只想一点。在对角行中,行号等于列号(或N列号)。

答案 1 :(得分:0)

所以稍微考虑一下,行和列很容易检查:

// Check rows for 'X'
int check;
for(row=0; row<N; row++)
{
    check = 1;

    for(col=0; col<N; col++)
    {
        if(matrix[row][col] != 'X')
            check = 0;
    }
    if(check)
        printf("A row is full of 'X'\n");
}

//Check cols for 'X'
for(col=0; col<N; col++)
{
    check = 1;
    for(row=0; row<N; i++)
    {
        if(matrix[row][col] != 'X')
            check = 0;
    }
    if(check)
        printf("A col is full of 'X'\n");
}

对角线有点棘手,但并不多。这将检查左上角到右下角:

// Check diagonals for 'X'
int check = 1;
for(col=0; col<N; col++)
    if(matrix[col][col] != 'X')
        check = 0;

要检查右上角到左下角,我们可以从右上角开始,然后降低col值:

// Check opposite diagonals for 'X'
int check = 1;
for(col=N-1; col >= 0; col--)
    if(matrix[col][col] != 'X')
        check = 0;

注意我没有测试过它,它只是伪代码。您可以通过以下方式将其改编为您的代码:)