Ваша идея может быть озвучена либо с помощью
- , используя
.equals()
вместо ==
, если вы действительно храните строки, либо - Store символов вместо строк, в этом случае
==
безопасен.
Теперь, если вы действительно играете в крестики-нолики, у вас есть 8 различных условий выигрыша, которые, если вы увеличиваете свой текущий стилькодирования будет иметь вид (здесь я предполагаю символы, а не строки):
winner =
(b[0] != ' ' && b[0] == b[1] && b[1] == b[2]) ||
(b[3] != ' ' && b[3] == b[4] && b[4] == b[5]) ||
...
(b[0] != ' ' && b[0] == b[4] && b[4] == b[8]);
Там есть другие способы сделать это;Я уверен, что поиск в Google по методу крестики-нолики или крестики-нолики покажет вам немало.
Если вы хотите получить фантазию, есть хорошо известная техника «маркировки»каждая клетка с силой два.Затем, сложив баллы (т. Е. Посмотрев на битовый вектор игрока) и выполнив двоичное И для набора из восьми выигрышных условий, вы можете определить выигрышную позицию за один выстрел.
Вот блок комментариев дляигра в крестики-нолики, иллюстрирующая технику.(Вы не запрашивали фактический код , поэтому я удерживаю , что из ответа):
/*
* To determine a win condition, each square is "tagged"
* from left to right, top to bottom, with successive
* powers of 2. Each cell thus represents an individual
* bit in a 9-bit string, and a player's squares at any
* given time can be represented as a unique 9-bit value.
* A winner can thus be easily determined by checking
* whether the player's current 9 bits have covered any
* of the eight "three-in-a-row" combinations.
*
* 273 84
* \ /
* 1 | 2 | 4 = 7
* -----+-----+-----
* 8 | 16 | 32 = 56
* -----+-----+-----
* 64 | 128 | 256 = 448
* =================
* 73 146 292
*
*/
var wins = [7, 56, 448, 73, 146, 292, 273, 84];
Это был JavaScript.Для Java используйте
private static final int[] WINS = new int[]{7, 56, 448, 73, 146, 292, 273, 84};
Извинения, если бинарный логический подход здесь не тот, который вы хотите;Я подумал, что это было бы хорошим местом, чтобы показать это, хотя, если другие попадут на эту страницу.