Логика игры - PullRequest
       5

Логика игры

1 голос
/ 28 марта 2009

Я играю в крестики-нолики (крестики-нолики) и в своем классе логики я представляю состояние игры с помощью двухмерного массива, но это проблема, я проверяю массив следующим образом:

 if(gameModel[0][0] == gameModel[1][1] && gameModel[0][0] == gameModel[2][2]){
     return true;
    }
 if(gameModel[2][0] == gameModel[1][1] && gameModel[2][0] == gameModel[0][2]){
     return true;
    }

и так далее для всех 8 условий, однако, массив инициализируется со всеми значениями 0 в начале, поэтому он всегда находит три совпадающих значения, как я могу обойти эту проблему, не меняя весь мой код

спасибо

Ответы [ 2 ]

5 голосов
/ 28 марта 2009

В этом случае вам просто нужно добавить проверку, если установлено значение:

if (   gameModel[0][0] == gameModel[1][1] 
    && gameModel[0][0] == gameModel[2][2] 
    && gameModel[0][0] != 0) {
 return true;
}
3 голосов
/ 29 марта 2009

Одна вещь, которая бросается в глаза при этом: почему вы используете целые числа вместо класса для представления этого? Правда, это простая игра, но класс Piece, кажется, выпадает как довольно очевидный класс.

Кроме того, с int у вас действительно есть 3 состояния, предположительно что-то вроде:

0 = empty
1 = X
2 = Y

Таким образом, вы должны проверить на 0 (пусто), прежде чем пытаться проверить, имеют ли они одинаковое значение, это будет быстрее (хотя на самом деле это волнует, это не должно быть быстрым), и имеет более логичный смысл ( квадрат пуст? Если это так, не беспокойтесь о проверке, имеют ли квадраты одинаковые значения).

Даже для таких простых вещей, как это, особенно когда вы только начинаете, попробуйте принять ООП, это другой способ мышления, и он требует практики, поэтому практикуйтесь как можно больше!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...