如何用Java实现五子棋游戏
发表于:2025-11-17 作者:千家信息网编辑
千家信息网最后更新 2025年11月17日,这篇文章主要介绍"如何用Java实现五子棋游戏",在日常操作中,相信很多人在如何用Java实现五子棋游戏问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"如何用Java实现
千家信息网最后更新 2025年11月17日如何用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安全错误
数据库的锁怎样保障安全
东莞pc软件开发费用是多少
网络技术服务店面图片
抖音删除数据库会删掉嘛
软件开发建设及推广合同
10个人小型服务器
杭州月牙儿网络技术
网络安全和保密工作讲话
数据库迁移技术的讲解
互联网改革与科技发展
软件开发项目实施验收报告
香港宇宙环球服务器
数据库开源监控工具
超算算力与服务器换算
软件开发结算书范本
网络安全和信息化管理处
数据库服务器性能估算
x3850m5服务器
hustoj数据库
数据库系统的阶段特点
软件开发助理工作靠谱吗
迅动互联网科技
软件开发人员分布
中国联通网络技术大会王睿
查县人口数据库
端口和网络安全
服务器远程连接管理器
丰台区节能软件开发服务价钱
网络安全 pt
脸脸会网络技术俞敏洪
邹平仓储库存软件开发