You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用JavaScript实现3×3井字棋终局胜负判定程序

判断井字棋终局结果的JavaScript实现

问题概述

给定一个3×3的井字棋终局棋盘(仅包含x和o),需要编写程序判断比赛结果:

  • 若x获胜,输出x
  • 若o获胜,输出o
  • 若无胜者,输出Tie(平局)

输入要求

输入为3行文本,每行包含3个用空格分隔的字符(x或o)。

示例

输入:

x o x
o x x
o o o

输出:

o

实现代码

const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout
});

let board = [];

// 读取输入的3行棋盘数据
rl.on('line', (line) => {
  board.push(line.trim().split(' '));
  if (board.length === 3) {
    rl.close();
  }
}).on('close', () => {
  const result = determineWinner(board);
  console.log(result);
});

// 核心判断函数
function determineWinner(board) {
  // 检查所有行
  for (const row of board) {
    if (row.every(cell => cell === row[0])) {
      return row[0];
    }
  }

  // 检查所有列
  for (let col = 0; col < 3; col++) {
    if (board[0][col] === board[1][col] && board[1][col] === board[2][col]) {
      return board[0][col];
    }
  }

  // 检查两条对角线
  if (board[0][0] === board[1][1] && board[1][1] === board[2][2]) {
    return board[0][0];
  }
  if (board[0][2] === board[1][1] && board[1][1] === board[2][0]) {
    return board[0][2];
  }

  // 无胜者,返回平局
  return 'Tie';
}

代码说明

  1. 输入处理:通过readline模块逐行读取输入,将每行分割为字符数组,最终构建成3×3的棋盘矩阵。
  2. 行检查:使用every方法快速判断一行内的所有字符是否相同,若满足则直接返回该字符作为胜者。
  3. 列检查:遍历每一列索引,对比该列三个位置的字符是否一致。
  4. 对角线检查:分别验证两条对角线的字符是否全部相同。
  5. 结果返回:若上述检查都未找到胜者,返回Tie表示平局。

内容的提问来源于stack exchange,提问作者Ankit Mandawkar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 09:57:37