如何用Java实现五子棋游戏
发表于:2025-02-13 作者:千家信息网编辑
千家信息网最后更新 2025年02月13日,这篇文章主要介绍"如何用Java实现五子棋游戏",在日常操作中,相信很多人在如何用Java实现五子棋游戏问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"如何用Java实现
千家信息网最后更新 2025年02月13日如何用Java实现五子棋游戏
这篇文章主要介绍"如何用Java实现五子棋游戏",在日常操作中,相信很多人在如何用Java实现五子棋游戏问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"如何用Java实现五子棋游戏"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
该项目为Java编程语言编写的五子棋游戏(控制台版),用到二维数组、for循环、if语句、while()语句、Scanner Until包,此项目主要是对数组的使用。该项目的功能有落子、输出棋盘、判断输赢。
代码条:
package edu.qizi.gam; import java.util.Scanner; public class GobangTest { public static void main(String[] args) { int BoardSize = 20; // 棋盘的实现 String[][] board = new String[BoardSize][BoardSize]; for (int i = 0; i < board.length; i++) { for (int j = 0; j < board[i].length; j++) { board[i][j] = "+"; } } //输出棋盘 PrintBoard(board); while(true) { //黑棋落子 System.out.println("黑棋落子"); BlackMoveLater(board);// 每下一步黑棋要输出一下棋盘 PrintBoard(board); // 行判断黑棋 BlackRow(BoardSize, board);// 列判断黑棋 BlackLine(BoardSize, board);// 自左上--->右下判断黑棋,每次第二个for循环最开始列不变,阶梯逼近左下的方法 BlackTopLeftToBottomRight_Line(BoardSize, board);// 自左上--->右下判断黑棋,每次第二个for循环最开始行不变,阶梯逼近右上的方法 BlackTopLeftToBottomRight_Row(BoardSize, board);// 自右上--->左下判断黑棋,每次第二个for循环最开始列不变,阶梯逼近右下的方法 BlackTopRightToBottomLeft_Line(BoardSize, board);// 自右上--->左下判断黑棋,每次第二个for循环最开始行不变,阶梯逼近左上的方法 BlackTopRightToBottomLeft_Row(BoardSize, board); // 白棋落子 System.out.println("白棋落子"); WhiteMoveLater(board);// 每下一步白棋要输出一下棋盘 PrintBoard(board); // 行判断白棋 WhiteRow(BoardSize, board);// 列判断白棋 WhiteLine(BoardSize, board);// 自左上--->右下判断白棋,每次第二个for循环最开始列不变,阶梯逼近左下的方法 WhiteTopLeftToBottomRight_Line(BoardSize, board);// 自左上--->右下判断白棋,每次第二个for循环最开始行不变,阶梯逼近右上的方法 WhiteTopLeftToBottomRight_Row(BoardSize, board);// 自右上--->左下判断白棋,每次第二个for循环最开始列不变,阶梯逼近右下的方法 WhiteTopRightToBottomLeft_Line(BoardSize, board);// 自右上--->左下判断白棋,每次第二个for循环最开始行不变,阶梯逼近左上的方法 WhiteTopRightToBottomLeft_Row(BoardSize, board); } }
下面是实现的方法
//实现棋盘输出的方法 public static void PrintBoard(String[][] board) { for (int i = 0; i < board.length; i++) { for (int j = 0; j < board[i].length; j++) { System.out.print( board[i][j]+" "); } System.out.println(); } }
实现黑棋落子
// 实现黑棋落子的方法 public static void BlackMoveLater(String[][] board) { while(true) { Scanner sc1=new Scanner(System.in); System.out.println("请输入黑棋落子的横坐标[1---20]:"); int BlackBoard_x=sc1.nextInt(); //判断横坐标是否数组越界 if(BlackBoard_x<1 || BlackBoard_x>20) { System.out.println("你输入的坐标范围有误 ,横坐标取1到20,请正确输入:\n"); continue; } Scanner sc2=new Scanner(System.in); System.out.println("请输入黑棋落子的纵坐标[1---20]:"); int BlackBoard_y=sc2.nextInt(); //判断纵坐标是否数组越界 if(BlackBoard_y<1 || BlackBoard_y>20) { System.out.println("你输入的坐标范围有误,纵坐标取1到20,请正确输入:\n"); continue; } //判断此位置是否可以落入棋子 if(board[BlackBoard_x-1][BlackBoard_y-1]=="○") { System.out.println("此位置已经有棋子了,请你将棋子下到空位置"); continue; }else { board[BlackBoard_x-1][BlackBoard_y-1]="●"; break; } } }
实现白棋落子
// 实现白棋落子的方法 public static void WhiteMoveLater(String[][] board) { while(true) { Scanner sc1=new Scanner(System.in); System.out.println("请输入白棋落子的横坐标[1---20]:"); int WhiteBoard_x=sc1.nextInt(); //判断横坐标是否数组越界 if(WhiteBoard_x<1 || WhiteBoard_x>20) { System.out.println("你输入的坐标范围有误 ,横坐标取1到20,请正确输入:\n"); continue; } Scanner sc2=new Scanner(System.in); System.out.println("请输入白棋落子的纵坐标[1---20]:"); int WhiteBoard_y=sc2.nextInt(); //判断纵坐标是否数组越界 if(WhiteBoard_y<1 || WhiteBoard_y>20) { System.out.println("你输入的坐标范围有误,纵坐标取1到20,请正确输入:\n"); continue; } //判断此位置是否可以落入棋子 if(board[WhiteBoard_x-1][WhiteBoard_y-1]=="●") { System.out.println("此位置已经有棋子了,请你将棋子下到空位置\n"); continue; }else { board[WhiteBoard_x-1][WhiteBoard_y-1]="○"; break; } } }
判定输赢以黑棋为例(有六个方法),下面一一列举
// 实现行判断黑棋子 public static void BlackRow(int BoardSize, String[][] board) {// 先定义一个数number,以此来计数 int number=0;// 一行一行的读取数组中的元素 for(int row=0;row展现第一个方法的结果
第二个方法代码
// 实现列判断黑棋子 public static void BlackLine(int BoardSize, String[][] board) {// 先定义一个数number,以此来计数 int number=0;// 一列一列的读取数组中的元素 for(int Line=0;Line展现第二个方法的结果
第三个方法代码
// 实现自左上--->右下判断黑棋,每次第二个for循环最开始列不变,阶梯逼近左下的方法 public static void BlackTopLeftToBottomRight_Line(int BoardSize, String[][] board) {// 先定义一个数number,以此来计数 int number=0;// 每当执行第二个for循环的时候列line总是从0开始 for(int row=0;row展现第三种方法的结果
第四个方法代码
// 实现自左上--->右下判断黑棋,每次第二个for循环最开始行不变,阶梯逼近右上的方法 public static void BlackTopLeftToBottomRight_Row(int BoardSize, String[][] board) {// 先定义一个数number,以此来计数 int number=0;// 每当执行第二个for循环的时候行row总是从0开始 for(int line=0;line第四个方法结果展示
第五个方法的代码
// 实现自右上--->左下判断黑棋,每次第二个for循环最开始列不变,阶梯逼近右下的方法 public static void BlackTopRightToBottomLeft_Line(int BoardSize, String[][] board) {// 先定义一个数number,以此来计数 int number=0;// 每当执行第二个for循环的时候列line总是从最后一列开始 for(int row=0;row=0+row;line--,i++) {// 如果此阶梯中有元素为黑棋则number+1 if(board[i][line]=="●") { number++; }// 当number为5的时候则黑棋一方的胜 while(number==5) { System.out.println("黑棋方胜!"); //胜出后输出棋盘 for ( row = 0; row < board.length; row++) { for ( line = 0; line < board[row].length; line++) { System.out.print( board[row][line]+" "); } System.out.println(); } //胜后退出系统 System.exit(0); }// 如果此阶梯中虽有五个黑棋但是并不相连,不能说是黑方胜,需将number置为0 if(board[i][line]=="○"|| board[i][line]=="+") { number=0; } }// 每当第二个for循环完毕后需要将number置为0 number=0; } } 第五个方法结果展示
第六个方法的代码
// 实现自右上--->左下判断黑棋,每次第二个for循环最开始行不变,阶梯逼近左上的方法 public static void BlackTopRightToBottomLeft_Row(int BoardSize, String[][] board) {// 先定义一个数number,以此来计数 int number=0;// 每当执行第二个for循环的时候行row总是从最后一列开始 for(int line=BoardSize-1;line>=0;line--) {// 执行这个for循环的时候每一次列+1,行+1,数据元素呈现阶梯分布,阶梯逼近左上 for(int row=0,j=line;row第六个方法结果展示
后面是白棋的判断方法的代码,与黑棋一样
// 实现行判断白棋 public static void WhiteRow(int BoardSize, String[][] board) {// 先定义一个数number,以此来计数 int number=0;// 一行一行的读取数组中的元素 for(int row=0;row右下判断白棋,每次第二个for循环最开始列不变,阶梯逼近左下的方法 public static void WhiteTopLeftToBottomRight_Line(int BoardSize, String[][] board) {// 先定义一个数number,以此来计数 int number=0;// 每当执行第二个for循环的时候列line总是从0开始 for(int row=0;row 右下判断白棋,每次第二个for循环最开始行不变,阶梯逼近右上的方法 public static void WhiteTopLeftToBottomRight_Row(int BoardSize, String[][] board) {// 先定义一个数number,以此来计数 int number=0;// 每当执行第二个for循环的时候行row总是从0开始 for(int line=0;line 左下判断白棋,每次第二个for循环最开始列不变,阶梯逼近右下的方法 public static void WhiteTopRightToBottomLeft_Line(int BoardSize, String[][] board) {// 先定义一个数number,以此来计数 int number=0;// 每当执行第二个for循环的时候列line总是从最后一列开始 for(int row=0;row =0+row;line--,i++) { if(board[i][line]=="○") {// 如果此阶梯中有元素为白棋则number+1 number++; }// 当number为5的时候则白棋一方的胜 while(number==5) { System.out.println("白棋方胜!"); //胜出后输出棋盘 for ( row = 0; row < board.length; row++) { for ( line = 0; line < board[row].length; line++) { System.out.print( board[row][line]+" "); } System.out.println(); } //胜后退出系统 System.exit(0); }// 如果此阶梯中虽有五个白棋但是并不相连,不能说是白方胜,需将number置为0 if(board[i][line]=="●"|| board[i][line]=="+") { number=0; } }// 每当第二个for循环完毕后需要将number置为0 number=0; } }// 实现自右上--->左下判断白棋,每次第二个for循环最开始行不变,阶梯逼近左上的方法 public static void WhiteTopRightToBottomLeft_Row(int BoardSize, String[][] board) {// 先定义一个数number,以此来计数 int number=0;// 每当执行第二个for循环的时候行row总是从最后一列开始 for(int line=BoardSize-1;line>=0;line--) {// 执行这个for循环的时候每一次列+1,行+1,数据元素呈现阶梯分布,阶梯逼近左上 for(int row=0,j=line;row 到此,关于"如何用Java实现五子棋游戏"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
白棋
阶梯
黑棋
循环
方法
时候
元素
棋盘
次第
方胜
输出
数组
一方
个数
输入
棋子
系统
说是
代码
一行
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全机房维护标准
游戏服务器多开需要什么配置
攀登5g网络技术
桓台服装管理软件开发公司
网络安全危害的表现形式
数据库表锁实现原理
服务器间通信
软件开发后如何提交测试
网络安全8个方法
云服务器与云数据库
数据库安全创建登录用户
网络安全与网络安全法心得
东源供应链软件开发
链和网络技术有限公司
五年级网络安全画
数据库加锁解锁
魔方云服务器登录页面
服务器的连接
院士网络安全专家
安卓软件开发专业的看法
北京智云互联网科技有限公司
数据库的对应英文
酷狗音乐服务器总是繁忙
网络安全进牧区警民和谐共学法
sql安装完成后没有本地数据库
excel服务器免费下载
深圳聊天软件开发费用是多少
软件开发10年工作总结
网络技术交换
域管理服务器系统维护