Java怎么实现简单无界面五子棋
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,这篇"Java怎么实现简单无界面五子棋"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"
千家信息网最后更新 2025年11月07日Java怎么实现简单无界面五子棋
这篇"Java怎么实现简单无界面五子棋"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"Java怎么实现简单无界面五子棋"文章吧。
项目介绍:
本次设计是基于知识点Java类和对象以及数组开发的一个小型五子棋游戏程序。游戏开始时,选择黑棋、白棋开局,将一枚棋子落在棋盘一坐标上,然后轮番落子,如此轮流下子,直到某一方首先在棋盘的竖、横或两斜四方向上的五子连成线,则该方该局获胜。
项目实现思路:
1、棋盘设计为10*10格,棋盘类型Chess[][] 二维数组,所含属性String chessType; 棋盘首先chessType值是"➕"。
2、初始化二维数组
3、玩家选择黑白圈后,开始下棋。输入要下棋子的行列坐标,黑白棋子轮流落子,当一方连成五子或下满棋盘时,游戏结束(连成五子的一方获胜,下满棋盘为和棋)。
4、每一次落子成功后,马上判断以该位置为中心的八个方向:上、下、左、右、左上、左下、右上、右下是否有相同颜色的棋子连成五子,如果连成五子,则游戏结束,输出相应的信息。
5、当游戏一方胜利后显示胜利信息。从程序表面看,这是一个二维平面图,所以数据用二维数组来表示,数组两个下标可以表示棋盘上的位置,数组元素的值代表棋格上的状态,共有三种情况,分别是,⭕代表白棋,●代表黑棋,➕代表格子。
源代码
1.棋子
/** * @author hudongsheng * @date 2020/10/29 - 9:28 */public class ChessType { private String chessType; private int x; private int y; public int getX() { return x; } public void setX(int x) { this.x = x; } public int getY() { return y; } public void setY(int y) { this.y = y; } public ChessType() { } public String getChessType() { return chessType; } public void setChessType(String chessType) { this.chessType = chessType; }}2.下棋
/** * @author hudongsheng * @date 2020/10/29 - 9:27 */public class Gobang { private int size = 1; private ChessType[][] chessTypes; private int row; private int colum; private int x; private int y; //创建一个棋盘 public Gobang(int row,int colum){ this.row = row; this.colum = colum; chessTypes = new ChessType[row][colum]; } //初始化棋盘 public void initChessType(){ for(int i = 0; i< chessTypes.length; i++){ for (int j = 0; j< chessTypes[i].length; j++){ chessTypes[i][j] = new ChessType(); chessTypes[i][j].setChessType("➕"); } } } //下白棋 public void setWhiteChess(int x,int y){ chessTypes[x][y].setChessType("⭕"); } //下黑棋 public void setBlackChess(int x,int y){ chessTypes[x][y].setChessType("●"); } //判断是否胜利 public boolean checkWin(int i,int j) { // TODO Auto-generated method stub boolean flag = false; //判断纵向是否有五个棋子是相同的颜色 int count1 = 1;//相同颜色棋子的个数 String color = chessTypes[i][j].getChessType(); //刚下的棋子的颜色 int a = 1; //棋子索引的增量 while((i+a)=0 && color == chessTypes[i-a][j].getChessType()){ count1++; a++; } if(count1 >= 5){ flag = true; } //判断纵向是否有五个棋子是相同的颜色 int count2 = 1; a = 1; while((j+a)=0 && color == chessTypes[i][j-a].getChessType()){ count2++; a++; } if(count2 >= 5){ flag = true; } //右上 左下 是否有五个棋子是相同的颜色 int count3 = 1; a = 1; while((i+a)=0 && color == chessTypes[i+a][j-a].getChessType()){ count3++; a++; } a = 1; while((i-a)>=0 && (j+a)= 5){ flag = true; } //左上 右下 是否有五个棋子是相同的颜色 int count4 = 1; a = 1; while((i-a)>0 && (j-a)>=0 && color == chessTypes[i-a][j-a].getChessType()){ count4++; a++; } a = 1; while((i+a)= 5){ flag = true; } return flag; } //落子后打印棋盘 public void print(){ for(int i = 0; i< chessTypes.length; i++){ for (int j = 0; j< chessTypes[i].length; j++){ System.out.print(chessTypes[i][j].getChessType()); } System.out.println(); } }}
3.测试
** * @author hudongsheng * @date 2020/10/29 - 9:27 */public class Test { public static void main(String[] args) { boolean flag = true; int x; int y; Gobang gobang = new Gobang(10,10); Scanner scanner = new Scanner(System.in); gobang.initChessType(); //下棋 System.out.println("黑棋执先"); while (true){ gobang.print(); System.out.println("请输入下黑棋的坐标:"); x = scanner.nextInt(); y = scanner.nextInt(); gobang.setBlackChess(x,y); if(gobang.checkWin(x,y)){ gobang.print(); System.out.println("黑棋胜!"); break; } gobang.print(); System.out.println("请输入下白棋的坐标:"); x = scanner.nextInt(); y = scanner.nextInt(); gobang.setWhiteChess(x,y); if(gobang.checkWin(x,y)){ gobang.print(); System.out.println("白棋胜!"); break; } } }}以上就是关于"Java怎么实现简单无界面五子棋"这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注行业资讯频道。
棋子
棋盘
五子
颜色
相同
数组
黑棋
内容
白棋
连成
五子棋
一方
代表
坐标
二维
界面
知识
胜利
输入
位置
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
盐城市网络安全保卫支队
织梦数据库服务器密码忘记了
服务器修改远程端口
刷卡器服务器超时10098
市人社局网络安全演练
定远直销软件开发技术哪家好
oracle数据库常见错误
学校国家网络安全周宣传设计
互联网科技人才定义
数据库企业信息表
数据库系统概述作业
网络安全辅助人员是不是网警
服务器贴装
过往相关学习经历计算机网络技术
网络安全股龙头股
太原有什么软件开发公司
看门狗2游戏内连接服务器
网络安全在北京市年薪有多少
浪潮服务器虚拟化
倍数软件开发费用
oracle 复制数据库
金山区智能软件开发批发价格
互联网数据库第二章试题
松江区网络技术服务代理商
达梦数据库连接时系统错误
常州app软件开发
服务器维修服务
服务器管理器应用程序错误
四川大数据软件开发正规平台
郑州汇一城互联网科技有限公司