温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何用Java实现五子棋游戏

发布时间:2021-10-11 09:19:04 来源:亿速云 阅读:159 作者:iii 栏目:开发技术

这篇文章主要介绍“如何用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<BoardSize;row++) {    for(int line=0;line<BoardSize;line++) { //    如果此行中有元素为黑棋则number+1     if(board[row][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[row][line]=="○"|| board[row][line]=="+") {      number=0;     }    } //   每一行读取数组元素后未能分出胜负需要将number置为0    number=0;   }  }

展现第一个方法的结果

如何用Java实现五子棋游戏

第二个方法代码

// 实现列判断黑棋子  public static void BlackLine(int BoardSize, String[][] board) { //  先定义一个数number,以此来计数   int number=0; //  一列一列的读取数组中的元素   for(int Line=0;Line<BoardSize;Line++) {    for(int row=0;row<BoardSize;row++) { //    如果此列中有元素为黑棋则number+1     if(board[row][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[row][Line]=="○"|| board[row][Line]=="+") {      number=0;     }    } //   每一列读取数组元素后未能分出胜负需要将number置为0    number=0;   }  }

展现第二个方法的结果

 如何用Java实现五子棋游戏

第三个方法代码

// 实现自左上--->右下判断黑棋,每次第二个for循环最开始列不变,阶梯逼近左下的方法  public static void BlackTopLeftToBottomRight_Line(int BoardSize, String[][] board) { //  先定义一个数number,以此来计数   int number=0; //  每当执行第二个for循环的时候列line总是从0开始   for(int row=0;row<BoardSize;row++) { //   执行这个for循环的时候每一次行+1,列+1,数据元素呈现阶梯分布,阶梯逼近左下    for(int line=0,i=row;line<BoardSize-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[i].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;   }  }

展现第三种方法的结果

如何用Java实现五子棋游戏

第四个方法代码

// 实现自左上--->右下判断黑棋,每次第二个for循环最开始行不变,阶梯逼近右上的方法  public static void BlackTopLeftToBottomRight_Row(int BoardSize, String[][] board) { //  先定义一个数number,以此来计数   int number=0; //  每当执行第二个for循环的时候行row总是从0开始   for(int line=0;line<BoardSize;line++) { //   执行这个for循环的时候每一次列+1,行+1,数据元素呈现阶梯分布,阶梯逼近右上    for(int row=0,i=line;row<BoardSize-line;row++,i++) { //    如果此阶梯中有元素为黑棋则number+1     if(board[row][i]=="●") {      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[row][i]=="○"|| board[row][i]=="+") {      number=0;     }    } //   每当第二个for循环完毕后需要将number置为0    number=0;   }  }

第四个方法结果展示

如何用Java实现五子棋游戏

第五个方法的代码

// 实现自右上--->左下判断黑棋,每次第二个for循环最开始列不变,阶梯逼近右下的方法  public static void BlackTopRightToBottomLeft_Line(int BoardSize, String[][] board) { //  先定义一个数number,以此来计数   int number=0; //  每当执行第二个for循环的时候列line总是从最后一列开始   for(int row=0;row<BoardSize;row++) { //   执行这个for循环的时候每一次列+1,行+1,数据元素呈现阶梯分布,阶梯逼近右下    for(int line=BoardSize-1,i=row;line>=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;   }  }

第五个方法结果展示

如何用Java实现五子棋游戏

第六个方法的代码

// 实现自右上--->左下判断黑棋,每次第二个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<line;j--,row++) { //    如果此阶梯中有元素为黑棋则number+1     if(board[row][j]=="●") {      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[row][j]=="○"|| board[row][j]=="+") {      number=0;     }    } //   每当第二个for循环完毕后需要将number置为0    number=0;   }  }

第六个方法结果展示

如何用Java实现五子棋游戏

后面是白棋的判断方法的代码,与黑棋一样

// 实现行判断白棋  public static void WhiteRow(int BoardSize, String[][] board) { //  先定义一个数number,以此来计数   int number=0; //  一行一行的读取数组中的元素   for(int row=0;row<BoardSize;row++) {    for(int line=0;line<BoardSize;line++) { //    如果此行中有元素为白棋则number+1     if(board[row][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[row][line]=="●"|| board[row][line]=="+") {      number=0;     }    } //   每一行读取数组元素后未能分出胜负需要将number置为0    number=0;   }  } // 实现列判断白棋  public static void WhiteLine(int BoardSize, String[][] board) { //  先定义一个数number,以此来计数   int number=0; //  一列一列的读取数组中的元素   for(int line=0;line<BoardSize;line++) {    for(int row=0;row<BoardSize;row++) { //    如果此列中有元素为白棋则number+1     if(board[row][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[row][line]=="●"|| board[row][line]=="+") {      number=0;     }    } //   每一列读取数组元素后未能分出胜负需要将number置为0    number=0;   }  } // 实现自左上--->右下判断白棋,每次第二个for循环最开始列不变,阶梯逼近左下的方法  public static void WhiteTopLeftToBottomRight_Line(int BoardSize, String[][] board) { //  先定义一个数number,以此来计数   int number=0; //  每当执行第二个for循环的时候列line总是从0开始   for(int row=0;row<BoardSize;row++) { //   执行这个for循环的时候每一次行+1,列+1,数据元素呈现阶梯分布,阶梯逼近左下    for(int line=0,i=row;line<BoardSize-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[i].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 WhiteTopLeftToBottomRight_Row(int BoardSize, String[][] board) { //  先定义一个数number,以此来计数   int number=0; //  每当执行第二个for循环的时候行row总是从0开始   for(int line=0;line<BoardSize;line++) { //   执行这个for循环的时候每一次列+1,行+1,数据元素呈现阶梯分布,阶梯逼近右上    for( int row=0,i=line;row<BoardSize-line;row++,i++) { //    如果此阶梯中有元素为白棋则number+1     if(board[row][i]=="○") {      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[row][i]=="●"|| board[row][i]=="+") {      number=0;     }    } //   每当第二个for循环完毕后需要将number置为0    number=0;   }  } // 实现自右上--->左下判断白棋,每次第二个for循环最开始列不变,阶梯逼近右下的方法  public static void WhiteTopRightToBottomLeft_Line(int BoardSize, String[][] board) { //  先定义一个数number,以此来计数   int number=0; //  每当执行第二个for循环的时候列line总是从最后一列开始   for(int row=0;row<BoardSize;row++) { //   执行这个for循环的时候每一次列+1,行+1,数据元素呈现阶梯分布,阶梯逼近右下    for(int line=BoardSize-1,i=row;line>=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<line;j--,row++) { //    如果此阶梯中有元素为白棋则number+1     if(board[row][j]=="○") {      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[row][j]=="●"|| board[row][j]=="+") {      number=0;     }    } //   每当第二个for循环完毕后需要将number置为0    number=0;   }  } }

到此,关于“如何用Java实现五子棋游戏”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI