当前位置: 首页 > news >正文

前端js实现井字游戏和版本号对比js逻辑【适用于vue和react】

// 实现 compareVersion 方法,用于比较两个版本号(version1、version2) * 如果version1 > version2,返回1; * 如果version1 < version2,返回-1; * 其他情况,返回0。 * 版本号规则x.y.z,xyz均为大于等于0的整数,至少有x位 * * 目标: * js * compareVersion('0.1', '1.1.1'); // 返回-1 * compareVersion('13.37', '1.2 '); // 返回1 * compareVersion('1.1', '1.1.0'); // 返回0 * compareVersion('1.1', '1.1.1'); // 返回-1 * */

const compareVersions = (version1, version2) => {const v1Parts = version1.split('.').map(Number);const v2Parts = version2.split('.').map(Number);const maxLength = Math.max(v1Parts.length, v2Parts.length);for (let i = 0; i < maxLength; i++) {const v1 = v1Parts[i] ?? 0;const v2 = v2Parts[i] ?? 0;if (v1 > v2) {return 1; // version1 大于 version2} else if (v1 < v2) {return -1; // version1 小于 version2}}return 0; // 两个版本号相等
}
const version1 = "1.1";
const version2 = "1.1.1";
const result = compareVersions(version1, version2);
if (result === 1) {console.log(`compareVersions函数返回值→${result}:${version1} 大于 ${version2}`);
} else if (result === -1) {console.log(`compareVersions函数返回值→${result}:${version1} 小于 ${version2}`);
} else {console.log(`compareVersions函数返回值→${result}:${version1} 等于 ${version2}`);
}

/* 井字棋游戏。输入一个二维数组代表棋盘,
其中 * 『1』代表当前玩家的棋子,
『0』代表没有棋子,
『-1』代表对方玩家的棋子。 *
若一方棋子在横、竖、斜方向连成排则为获胜,返回当前玩家是否胜出。

  • 示例:入参为 [[1,0,1],[1,-1,-1],[1,-1,0]] 时,返回 true * */
    // 默认初始棋盘
    //如下initBoard代表初始化棋盘,分别对应井字棋盘九宫格的每个格子
    const initBoard = [
    [0, 0, 0],
    [0, 0, 0],
    [0, 0, 0],
    ];
    const gameCheck = (board, currentPlayer = 1) => {
    const rows = board.length;//行
    const cols = board[0].length;//列
    // 检查行
    for (let i = 0; i < rows; i++) {
    if (board[i][0] !== 0 && board[i].every(cell => cell === currentPlayer)) {
    return true;//如果所有行都是为当前人下的那么就返回成功
    }
    }
    // 检查列
    for (let j = 0; j < cols; j++) {
    let column = [];
    for (let i = 0; i < rows; i++) {
    column.push(board[i][j]);
    }
    if (column[0] !== 0 && column.every(cell => cell === currentPlayer)) {
    return true;
    }
    }
    // 检查对角线
    // leftRight从左往右向下对角线
    const leftRight = [board[0][0], board[1][1], board[2][2]]
    // rightLeft从右往左向下对角线
    const rightLeft = [board[0][2], board[1][1], board[2][0]]
    if (leftRight.every((cell) => cell === currentPlayer) || rightLeft.every((cell) => cell === currentPlayer)) {
    return true
    }
    return false
    }
    const board = [
    [1, 0, 1],
    [1, -1, -1],
    [1, -1, 0]
    ];
    const playerWins = gameCheck(board);
    console.log(当前玩家是否胜出: ${playerWins});
http://www.lryc.cn/news/220370.html

相关文章:

  • unity 通过Andriod arr 访问 手机自带的浏览器
  • MySQL -- 索引
  • 23ccpc(最长上升子序列题解)
  • BUUCTF easycap 1
  • [LeetCode]-160. 相交链表-141. 环形链表-142.环形链表II-138.随机链表的复制
  • 聊一聊关于手机Charge IC的电流流向
  • 【k8s】pod调度——亲和,反亲和,污点,容忍
  • 分享者 - 携程旅游创作者搬砖项目图文教程
  • vite配置.env环境变量文件,开发环境,测试环境,预发布环境,生产环境
  • 0003Java安卓程序设计-springboot基于Android的学习生活交流APP
  • Java8 时间字符串校验是否为对应的日期格式
  • 2023.11.6联赛总结
  • UE5——源码阅读——9——引擎预初始化
  • 报错Could not resolve placeholder ‘driver‘ in value “${driver}“
  • Rust编程基础核心之所有权(下)
  • 高防CDN:企业网络安全的坚强后盾
  • gitlab 设置 分支只读
  • Spring Boot 面试题——常用注解
  • RabbitMQ(高级特性) 设置队列所有消息存活时间
  • 刷题学习记录
  • WPF中依赖属性及附加属性的概念及用法
  • Golang爬虫封装
  • 技术分享 | 抓包分析 TCP 协议
  • 基于前馈神经网络完成鸢尾花分类
  • 软考高级系统架构设计师系列之:UML建模、设计模式和软件架构设计章节选择题详解
  • 成集云 | 电商平台、ERP、WMS集成 | 解决方案
  • 吴恩达《机器学习》4-6->4-7:正规方程
  • VO、DTO
  • RK3566上运行yolov5模型进行图像识别
  • 汽车标定技术(一):XCP概述