Как сравнить переменную char с другой переменной char? - PullRequest
2 голосов
/ 05 апреля 2011

Я работаю над домашним заданием в C, где нам нужно сделать игру в крестики-нолики, в которую можно играть между двумя игроками. У меня есть весь мой код, работающий на данный момент, за исключением функции, которая проверяет, чтобы найти победителя. Вот пример результата игры, с которой я тестировал:

  0 1 2
0  |x| 
  -----
1  |o| 
  -----
2  |x| 
Congratulations to player 1!  You won!

На что я говорю, нет. Нет, игрок 1 определенно не выиграл. Мои проверки (простите меня) - это ряд вложенных операторов if, таких как:

...
else if (gameboard[0][1] != ' ')
    if (gameboard[1][1] == gameboard[0][1])
        if(gameboard[2][1] == gameboard[1][1])
            return 1;
...

gameboard [0] [1] является значением 'x', однако сравнение говорит о том, что gameboard [1] [1] равно ему. Почему это происходит и как мне это исправить?

1 Ответ

1 голос
/ 05 апреля 2011

Ваша игровая доска может быть настроена не так, как вы думаете.

#include <stdio.h>

int main()
{
    char gameboard[3][3] =
    { {' ', 'x', ' '},
      {' ', 'o', ' '},
      {' ', 'x', ' '}
    };

    if (gameboard[0][0] == ' ')
    {
        printf("0,0 is empty\n");
    }

    if (gameboard[0][1] != ' ')
    {
        printf("0,1 has %c\n", gameboard[0][1]);
    }

    if (gameboard[1][1] == gameboard[0][1])
    {
        printf("1,1 equals 0,1\n");
    }
    else
    {
        printf("1,1 is different from 0,1\n");
    }    
}

Выходы:

0,0 is empty
0,1 has x
1,1 is different from 0,1
...