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

Java语言+二维数组+非递归实现五子棋游戏

以前做过一个C语言版五子棋:C语言+二维数组+非递归实现五子棋游戏

现在做一个Java语言版五子棋,规则如下:

1、白子为O;

2、黑子为@;

3、白子先手;

4、格子占满时为平局;

5、四个方向上有连续五个子为胜利;

6、如果选择0 3表示选的第1行与第4列;

废话不多说,直接上代码:

import java.util.Scanner;/*** 命令行版五子棋* 规则:* 1、白子为O;* 2、黑子为@;* 3、白子先手;* 4、格子占满时为平局;* 5、四个方向上有连续五个子为胜利;* 6、如果选择0 3表示选的第1行与第4列;*/
public class WuZiQi {public static final int N = 16;public static void main(String[] args) {Scanner sc = new Scanner(System.in);char[][] GAME = new char[N][N];int count = 0;    //轮换落子计算int m, n; //白家int x, y; //黑家int res = 0;wzq_init(GAME);wzq_show(GAME);while (true) {//当棋盘格子被下满了时if (N * N == count) {System.out.println("棋盘已经下满了,平局!");sc.close();return;}if (0 == count % 2) {System.out.print("请白家落子(例如0 3或1 3):");m = sc.nextInt();n = sc.nextInt();while (m < 0 || m > N - 1 || n < 0 || n > N - 1) {System.out.print("输入的坐标超出范围,请重新输入:");m = sc.nextInt();n = sc.nextInt();}while ('+' != GAME[m][n]) {System.out.print("此处已经落过子,请重新落子:");m = sc.nextInt();n = sc.nextInt();}GAME[m][n] = 'O';res = wzq_play(m, n, GAME);if (1 == res) {wzq_show(GAME);System.out.println("程序结束");sc.close();return;}} else {System.out.print("请黑家落子(例如0 3或1 3):");x = sc.nextInt();y = sc.nextInt();while (x < 0 || x > N - 1 || y < 0 || y > N - 1) {System.out.print("输入的坐标超出范围,请重新输入:");x = sc.nextInt();y = sc.nextInt();}while ('+' != GAME[x][y]) {System.out.print("此处已经落过子,请重新落子:");x = sc.nextInt();y = sc.nextInt();}GAME[x][y] = '@';res = wzq_play(x, y, GAME);if (1 == res) {wzq_show(GAME);System.out.println("程序结束");sc.close();return;}}count++;wzq_show(GAME);}}//显示五子棋棋盘public static void wzq_show(char[][] GAME) {System.out.println("五子棋棋盘如下:");for (int i = 0; i < N; i++) {for (int j = 0; j < N; j++) {System.out.print(GAME[i][j]);}System.out.println();}}//初始化五子棋棋盘public static void wzq_init(char[][] GAME) {for (int i = 0; i < N; i++) {for (int j = 0; j < N; j++) {GAME[i][j] = '+';}}}//游戏是否胜利的运算,一旦有人胜利则返回1public static int wzq_play(int a, int b, char[][] GAME) {int i = 0, j = 0, k = 0;//方向-上的for (j = b - 4; j < b + 4; j++) {if (j < 0 || j > N - 1) {continue;}for (i = 0; i < 5; i++) {if (j + i < 0 || j + i > N - 1) {break;}if ('@' == GAME[a][j + i] || '+' == GAME[a][j + i]) {break;}if ('O' == GAME[a][j + i] && 4 == i) {System.out.println("\n恭喜你,白家-方向上获胜!");return 1;}}for (i = 0; i < 5; i++) {if (j + i < 0 || j + i > N - 1) {break;}if ('O' == GAME[a][j + i] || '+' == GAME[a][j + i]) {break;}if ('@' == GAME[a][j + i] && 4 == i) {System.out.println("\n恭喜你,黑家-方向上获胜!");return 1;}}}//方向|上的for (i = a - 4; i < a + 4; i++) {if (i < 0 || i > N - 1) {continue;}for (j = 0; j < 5; j++) {if (i + j < 0 || i + j > N - 1) {break;}if ('@' == GAME[i + j][b] || '+' == GAME[i + j][b]) {break;}if ('O' == GAME[i + j][b] && 4 == j) {System.out.println("\n恭喜你,白家|方向上获胜!");return 1;}}for (j = 0; j < 5; j++) {if (i + j < 0 || i + j > N - 1) {break;}if ('O' == GAME[i + j][b] || '+' == GAME[i + j][b]) {break;}if ('@' == GAME[i + j][b] && 4 == j) {System.out.println("\n恭喜你,黑家|方向上获胜!");return 1;}}}//方向\上的for (i = a - 4, j = b - 4; i < a + 4 && j < b + 4; i++, j++) {if (i < 0 || i > N - 1 || j < 0 || j > N - 1) {continue;}for (k = 0; k < 5; k++) {if (i + k < 0 || i + k > N - 1 || j + k < 0 || j + k > N - 1) {break;}if ('@' == GAME[i + k][j + k] || '+' == GAME[i + k][j + k]) {break;}if ('O' == GAME[i + k][j + k] && 4 == k) {System.out.println("\n恭喜你,白家\方向上获胜!");return 1;}}for (k = 0; k < 5; k++) {if (i + k < 0 || i + k > N - 1 || j + k < 0 || j + k > N - 1) {break;}if ('O' == GAME[i + k][j + k] || '+' == GAME[i + k][j + k]) {break;}if ('@' == GAME[i + k][j + k] && 4 == k) {System.out.println("\n恭喜你,黑家\方向上获胜!");return 1;}}}//方向/上的for (i = a + 4, j = b - 4; i > a - 4 && j < b + 4; i--, j++) {if (i < 0 || i > N - 1 || j < 0 || j > N - 1) {continue;}for (k = 0; k < 5; k++) {if (i - k < 0 || i - k > N - 1 || j + k < 0 || j + k > N - 1) {break;}if ('@' == GAME[i - k][j + k] || '+' == GAME[i - k][j + k]) {break;}if ('O' == GAME[i - k][j + k] && 4 == k) {System.out.println("\n恭喜你,白家/方向上获胜!");return 1;}}for (k = 0; k < 5; k++) {if (i - k < 0 || i - k > N - 1 || j + k < 0 || j + k > N - 1) {break;}if ('O' == GAME[i - k][j + k] || '+' == GAME[i - k][j + k]) {break;}if ('@' == GAME[i - k][j + k] && 4 == k) {System.out.println("\n恭喜你,黑家/方向上获胜!");return 1;}}}return 0;}
}

idea里面测试可以正常运行,游戏结果正常,运行环境:jdk1.8+win11。

相关文章:

Java语言+二维数组+非递归实现五子棋游戏

以前做过一个C语言版五子棋&#xff1a;&#xff23;语言&#xff0b;二维数组&#xff0b;非递归实现五子棋游戏 现在做一个Java语言版五子棋&#xff0c;规则如下&#xff1a; 1&#xff64;白子为O; 2&#xff64;黑子为&#xff1b; 3&#xff64;白子先手&#xff1b;…...

WordCloud—— 词云

【说明】文章内容来自《机器学习入门——基于sklearn》&#xff0c;用于学习记录。若有争议联系删除。 wordcloud 是python的第三方库&#xff0c;称为词云&#xff0c;也成文字云&#xff0c;可以根据文本中的词频以直观和艺术化的形式展示文本中词语的重要性。 依赖于pillow …...

linux网络----UDP编程

一、函数接口: 1.socket:创建一个用来网络通信的终端节点&#xff1b; 参数: type&#xff1a;套接字类型 SOCK_STREAM 流式套接字 TCP SOCK_DGRAM 数据报套接字 UDP SOCK_RAM 原始套接字 domain: 协议族 AF_INET protocal: 默认为0 2.s…...

[AI工具推荐]AiRestful智能API代码生成

智能API代码示例生成工具AiRestful 一、产品介绍二、如何使用1、第一步(必须):2、第二步(可选):3、第三步(智能生成): 三、如何集成到您的网站(应用)1、开始接入2、接入案例 四、注意点 一、产品介绍 AiRestful是一款基于智能AI的,帮助小白快速生成任意编程语言的API接口调用示…...

Elasticsearch 8.10.0同义词API用法详解,支持同义词热更新

Elasticsearch 的同义词功能非常强大,如果使用得当,可以显着提高搜索引擎的效果。使用同义词功能时的一个常见问题是更新同义词集。 同义词在搜索引擎领域用途 同义词在搜索引擎领域的用途可概括如下: 增强搜索的准确性——当用户输入一个关键词时,可能与他们实际意图相关…...

深度学习之模型权重

在深度学习中&#xff0c;模型的权重&#xff08;weights&#xff09;是指神经网络中的参数&#xff0c;这些参数用于调整和学习模型的行为&#xff0c;以便能够对输入数据进行有效的映射和提取有用的特征。深度学习模型通常由许多神经元和连接组成&#xff0c;而权重就是连接这…...

纯前端使用XLSX导出excel表格

1 单个sheet page.js(页面中的导出方法) import { exportExcel } from ../../../utils/exportExcel.js; leadOut() {const arr [{ id: 1, name: 张三, age: 14, sex: 男 },{ id: 2, name: 李四, age: 15, sex: 女 },{ id: 3, name: 王五, age: 16, sex: 男 },];const allR…...

将mjpg格式数转化成opencv Mat格式

该博客可以解决如下两个问题&#xff1a; 1、将mjpg格式数据转化成opencv Mat格式 2、v4l2_buffer 格式获取的mjpg格式数据转换成Mat格式。 要将 MJPEG 格式的数据转换为 OpenCV 的 Mat 格式&#xff0c;您可以使用 imdecode 函数。imdecode 函数可以将图像数据解码为 Mat 对象…...

【golang/g3n】3D游戏引擎G3N的windows安装与测试

目录 说在前面安装测试 说在前面 操作系统&#xff1a;win 11go version&#xff1a;go1.21.5 windows/amd64g3n版本&#xff1a;github.com/g3n/engine v0.2.0其他&#xff1a;找了下golang 3d相关的库&#xff0c;目前好像就这个比较活跃 安装 按照官方教程所说&#xff0c;…...

sap table 获取 valuation class MBEW 查表获取

参考 https://www.tcodesearch.com/sap-tables/search?qvaluationclass...

介绍一些操作系统—— Ubuntu 系统

介绍一些操作系统—— Ubuntu 系统 Ubuntu 系统 Ubuntu 是一个以桌面应用为主的 Linux 发行版操作系统&#xff0c;其名称来自非洲南部祖鲁语或豪萨语的“ubuntu"一词&#xff0c;意思是“人性”“我的存在是因为大家的存在"&#xff0c;是非洲传统的一种价值观。U…...

React中props 和 state异同初探

在 React 中&#xff0c;props 和 state 是两个非常重要的概念&#xff0c;它们决定了组件的行为和渲染方式。 Props props&#xff08;属性&#xff09;是父组件传递给子组件的数据。它们类似于函数的参数&#xff0c;可以在组件内部被访问和使用&#xff0c;但不能被修改。…...

spring-kakfa依赖管理之org/springframework/kafka/listener/CommonErrorHandler错误

问题&#xff1a; 整个项目使用spring-boot2.6.8版本&#xff0c;使用gradle构建&#xff0c;在common模块指定了implementation org.springframework.kafka:spring-kafka:2.6.8’这个工程也都能运行&#xff08;这正常发送kafka消息和接收消息&#xff09;&#xff0c;但是执行…...

基于go语言开发的海量用户及时通讯系统

文章目录 二十三、海量用户即时通讯系统1、项目开发前技术准备2.实现功能-显示客户端登录菜单3.实现功能-完成用户登录-1.完成客户端可以该长度值发送消息长度&#xff0c;服务器端可以正常接收到-2.完成客户端可以发送消息&#xff0c;服务器端可以接收到消息并根据客户端发送…...

19.Oracle 中count(1) 、count(*) 和count(列名) 函数的区别

count(1) and count(字段) 两者的主要区别是 count(1) 会统计表中的所有的记录数&#xff0c;包含字段为null 的记录。count(字段) 会统计该字段在表中出现的次数&#xff0c;忽略字段为null 的情况。 即不统计字段为null 的记录。 count(*) 和 count(1)和count(列名)区别 …...

C 库函数 - time()

描述 C 库函数 time_t time(time_t *seconds) 返回自纪元 Epoch&#xff08;1970-01-01 00:00:00 UTC&#xff09;起经过的时间&#xff0c;以秒为单位。如果 seconds 不为空&#xff0c;则返回值也存储在变量 seconds 中。 声明 下面是 time() 函数的声明。 time_t time(t…...

基于Python数据可视化的网易云音乐歌单分析系统

目录 《Python数据分析初探》项目报告 基于Python数据可视化的网易云音乐歌单分析系统一、项目简介&#xff08;一&#xff09;项目背景&#xff08;二&#xff09;项目过程 二、项目设计流程图&#xff08;一&#xff09;基于Python数据可视化的网易云音乐歌单分析系统的整体…...

Jenkins----基于 CentOS 或 Docker 安装部署Jenkins并完成基础配置

查看原文 文章目录 基于 CentOS7 系统部署 Jenkins 环境基于 Docker 安装部署 Jenkins环境配置 Jenkins 中文模式配置用户名密码形式的 Jenkins 凭据配置 ssh 私钥形式的 Jenkins 凭据配置 Jenkins 执行任务的节点 基于 CentOS7 系统部署 Jenkins 环境 &#xff08;1&#xff…...

flume系列之:监控flume agent channel的填充百分比

flume系列之:监控flume agent channel的填充百分比 一、监控效果二、获取flume agent三、飞书告警四、获取每个flume agent channel的填充百分比一、监控效果 二、获取flume agent def getKafkaFlumeAgent():# 腾讯云10.130.112.60zk = KazooClient(hosts...

信息安全和网络安全的区别

信息安全与网络安全都属于安全领域&#xff0c;但它们的范围和重点不同。 信息安全主要关注数据的保护&#xff0c;包括对敏感数据进行加密、防止数据丢失或泄露等措施。信息安全通常与数据存储、传输和处理相关。 而网络安全更侧重于保护计算机系统和网络免受攻击、病毒、蠕…...

多租户下的系统基础表设计

多租户下的系统基础表设计在设计 多租户进销存系统&#xff08;SaaS&#xff09; 时&#xff0c;核心是 租户隔离 权限控制 组织结构。 一般推荐的设计是 “租户 → 机构 → 角色 → 用户” 的层级结构&#xff0c;同时所有业务数据都带 tenant_id。租户表&#xff08;Tenant…...

终极实战指南:在Docker容器中运行Windows系统的完整解决方案

终极实战指南&#xff1a;在Docker容器中运行Windows系统的完整解决方案 【免费下载链接】windows Windows inside a Docker container. 项目地址: https://gitcode.com/GitHub_Trending/wi/windows 还在为Windows虚拟机占用大量系统资源而烦恼吗&#xff1f;想体验在容…...

3步实现会呼吸的界面边界:让表单交互体验提升300%的动态效果

3步实现会呼吸的界面边界&#xff1a;让表单交互体验提升300%的动态效果 【免费下载链接】motion-primitives UI kit to make beautiful, animated interfaces, faster. Customizable. Open Source. 项目地址: https://gitcode.com/gh_mirrors/mo/motion-primitives 在现…...

实战指南:基于Cursor与快马平台,从零搭建一个可用的商品管理后台

今天想和大家分享一个实战项目——用Cursor和InsCode(快马)平台从零搭建商品管理后台的全过程。这个项目麻雀虽小五脏俱全&#xff0c;包含了前后端完整链路&#xff0c;特别适合想练手全栈开发的朋友。 项目架构设计 整个系统采用前后端分离模式。后端用Spring Boot搭建RESTfu…...

社交媒体机器人检测的终极对决:TwiBot-22基准测试深度解析

社交媒体机器人检测的终极对决&#xff1a;TwiBot-22基准测试深度解析 【免费下载链接】TwiBot-22 项目地址: https://gitcode.com/gh_mirrors/tw/TwiBot-22 在数字时代&#xff0c;社交媒体上的机器人账号已成为信息传播的重要参与者。它们既能推动正面信息传播&#…...

计算机毕业设计springboot足球俱乐部管理系统 基于SpringBoot的青少年足球培训综合服务平台的设计与实现 基于SpringBoot架构的足球青训营数字化运营系统的设计与实现

计算机毕业设计springboot足球俱乐部管理系统&#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。 随着足球运动的全球普及和竞技水平的持续提升&#xff0c;青少年足球培训已成为各国…...

Qwen3-ASR-1.7B保姆级教程:解决‘识别结果不准确’的5类高频问题

Qwen3-ASR-1.7B保姆级教程&#xff1a;解决‘识别结果不准确’的5类高频问题 1. 引言&#xff1a;为什么你的语音识别总是不准&#xff1f; 你是不是遇到过这样的情况&#xff1a;用语音识别软件录音&#xff0c;结果出来的文字乱七八糟&#xff0c;完全不是你说的内容&#…...

为什么你的MoveIt2 Python API总报错?ROS2环境变量与PYTHONPATH的隐藏陷阱

为什么你的MoveIt2 Python API总报错&#xff1f;ROS2环境变量与PYTHONPATH的隐藏陷阱 当你第一次在ROS2中尝试使用MoveIt2的Python API时&#xff0c;那种"ModuleNotFoundError: No module named moveit"的报错信息可能会让你抓狂。这不是因为你做错了什么&#xff…...

智能客服系统搭建实战:基于NLP与微服务架构的AI客服实现指南

最近在帮公司搭建一套智能客服系统&#xff0c;从零开始踩了不少坑&#xff0c;也积累了一些实战经验。今天就来聊聊&#xff0c;如何基于当前比较成熟的 NLP 和微服务架构&#xff0c;一步步构建一个能扛住真实业务压力的 AI 客服系统。整个过程涉及技术选型、核心模块实现、性…...

华硕笔记本性能困境突破:G-Helper工具的全方位优化方案

华硕笔记本性能困境突破&#xff1a;G-Helper工具的全方位优化方案 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops. Control tool for ROG Zephyrus G14, G15, G16, M16, Flow X13, Flow X16, TUF, Strix, Scar and other models 项目地…...