Столкнулся с трудностью в процессе описания игры крестики- нолики на JavaScript: как реализовать проверку на выигрыш?

1. Создал двухмерный массив startPosition
var startPosition = [
  ['','',''],
  ['','',''],
  ['','','']
];
, 2. Ввел понятия преимущественные позиции
var advantagePosition = [
  [3,2,3],
  [2,4,2],
  [3,2,3]
];
,
3. Описал чередования ходов(потом уже добавил проверку на возможность хода)
var player = 1;

var move = function(j,k){
  if(startPosition[j][k] !== ''){
    console.log('ячейка уже занята!');
  }
  else if(player++ % 2){
    startPosition[j][k] = 'X';
  }
  else{
    startPosition[j][k] = 'O';
  }
  return true;
};

var render = function(){
  for(var i=0; i<3; i++){
    console.log(startPosition[i]);
  }
};


4. Протестировал
(function(){
  render();
  move(1,1); //первый ход
  render();
  move(0,0); //второй ход
  move(0,0); //сообщение об ошибке
  move(0,0); //сообщение об ошибке
  render();
  move(2,2);
  render();
})();

Получилось
["", "", ""]
["", "", ""]
["", "", ""]
["", "", ""]
["", "X", ""]
["", "", ""]
"ячейка уже занята!"
"ячейка уже занята!"
["O", "", ""]
["", "X", ""]
["", "", ""]
["O", "", ""]
["", "X", ""]
["", "", "X"]

5. Не знаю как описать победу, может кто нибудь подскажет?
  • Вопрос задан
  • 4174 просмотра
Решения вопроса 1
@krll-k Автор вопроса
for(i=0; i<3; i++)  /* проверка строк */
    if(matrix[i][0]==matrix[i][1] &&
       matrix[i][0]==matrix[i][2]) return matrix[i][0];

  for(i=0; i<3; i++)  /* проверка столбцов */
    if(matrix[0][i]==matrix[1][i] &&
       matrix[0][i]==matrix[2][i]) return matrix[0][i];

  /* проверка диагоналей */
  if(matrix[0][0]==matrix[1][1] &&
     matrix[1][1]==matrix[2][2])
       return matrix[0][0];

  if(matrix[0][2]==matrix[1][1] &&
     matrix[1][1]==matrix[2][0])
       return matrix[0][2];
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы