使用Java实现一个五子棋小游戏

  介绍

使用Java实现一个五子棋小游戏?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

<强>任务概述:

五子棋是全国智力运动会竞技项目之一,是一种两人对弈的纯策略型棋类游戏。通常双方分别使用黑白两色的棋子,下在棋盘直线与横线的交叉点上,先形成五子连线者获胜。

<强>任务过程:

1。绘制棋盘
2。提示黑方(用1表示)和白方(用2表示)分别下棋(X, Y轴位置)并重新绘制棋盘
3。每当一方下棋后判断是否获胜

<强>重点讲解:

根据用户所下棋子的位置对其周围进行检测,分为以下情况:
横向:当前下棋位置左右各4颗棋子连续相同5颗
竖向:当前下棋位置上下各4颗棋子连续相同5颗
斜向:当前下棋位置左上右下各4颗棋子连续相同5颗,当前下棋位置左下右上各4颗棋子连续相同5颗
在检测时要注意数组的下标,若用户下棋位置处于棋盘边缘,则周围坐标很可能已经在棋盘之外,要注意加上相应的判断避免下标越界!

我的思路是,先认为棋盘已经下满,然后在打印棋盘的同时,若当前打印值为0,则认为棋盘未满,可继续下棋操作,若棋盘已经打印完毕,仍然没有打印值为0的情况,则认为棋盘下满,双方平局,游戏结束。

其余内容在代码上有详细的注释,以下为代码:

进口java.util.Scanner;
  
  公开课象棋{
  
  公共静态void main (String [] args) {
  扫描仪扫描仪=new扫描仪(系统);
  int订单=1;//储存顺序,当订单为1时轮到黑方下棋,当订单为2时轮到白方下的棋
  int行=0;//用来储存要下棋的行数
  int列=0;//用来储存要下棋的列数
  int赢得=0;//用来储存获胜者编号,为0则双方均未获胜,为1则白方获胜,为2则黑方获胜
  int count1=0;//用来储存当前下棋位置左右各4颗棋子的相同数量
  int是从=0;//用来储存当前下棋位置上下各4颗棋子的相同数量
  int count3=0;//用来储存当前下棋位置左上右下各4颗棋子的相同数量
  int count4=0;//用来储存当前下棋位置左下右上各4颗棋子的相同数量
  int=1;//用来判断棋盘是否下满,默认值1认为已满,只要有1处空则置0
  董事会int [] []=new int[16][16];//用来记录棋盘//为棋盘的坐标赋值
  (int i=0; i<16岁;我+ +){
  董事会[我][0]=我;//为棋盘的Y轴赋值
  }
  (int j=0; j<16 j + +) {
  董事会[0][j]=;//为棋盘的X轴赋值
  }//开始下棋,无限循环直到有一方胜利或棋盘下满
  而(真){//首先输出棋盘
  (int i=0; i<16岁;我+ +){
  (int j=0; j<16 j + +) {
  如果董事会[我][j]==0)//若棋盘有1处空则认为棋盘未满
  全=0;
  System.out.print(董事会[我][j] +“\ t");
  }
  System.out.println ();
  }//然后判断棋盘是否下满
  如果(完整的==1){//棋盘自始至终未有空值,则认为棋盘已经下满
  System.out.print(“棋盘已下满,双方平局,游戏结束!“);
  打破;//跳出循环
  }//棋盘未满,进入下棋过程
  如果订单==1){//订单为1黑方下的棋
  订单=2;//切换顺序,下一次则白方下的棋//无限循环直到下棋点可以正常下的棋
  而(真){
  System.out.println(“请黑方下棋,请先输入X轴位置(列数,1 - 15):“);
  列=scanner.nextInt();//储存要下棋的列数
  System.out.println(“请黑方下棋,请输入Y轴位置(行数,1 - 15):“);
  行=scanner.nextInt();//储存要下棋的行数
  如果董事会(行)(列)!=0)//下棋点已有棋子,需重新下的棋
  System.out.println(“此次下棋无效,请重新下的棋!“);
  其他{
  董事会(行)(列)=1;//放置黑棋
  打破;//跳出循环
  }
  }
  }
  {//其他订单为2白方下的棋
  订单=1;//切换顺序,下一次则黑方下的棋//无限循环直到下棋点可以正常下的棋
  而(真){
  System.out.println(“请白方下棋,请先输入X轴位置(列数,1 - 15):“);
  列=scanner.nextInt();//储存要下棋的列数
  System.out.println(“请白方下棋,请输入Y轴位置(行数,1 - 15):“);
  行=scanner.nextInt();//储存要下棋的行数
  如果董事会(行)(列)!=0)//下棋点已有棋子,需重新下的棋
  System.out.println(“此次下棋无效,请重新下的棋!“);
  其他{
  董事会(行)(列)=2;//放置白棋
  打破;//跳出循环
  }
  }
  }//本次下棋完毕,判断是否有人获胜
  for (int i=4;我& lt;4,我+ +){//判断当前下棋位置左右各4颗棋子的相同数量,连续4组相同则获胜
  如果(列+ i> 0,,列+我+ 1 & lt; 16){//防止下标越界
  如果董事会(行)(列+ i)==董事会(行)(列+我+ 1),,董事会(行)(列+ i) !=0) {
  count1 + +;
  如果(count1==4){//连续4组相同,获胜
  赢得=订单;
  打破;
  }
  }
  其他的
  count1=0;//未连续相同,清除相同计数
  }//判断当前下棋位置上下各4颗棋子的相同数量,连续4组相同则获胜
  如果行+ i> 0,,行+我+ 1 & lt; 16){//防止下标越界
  如果董事会(行+ i)(列)==董事会(行+我+ 1)(列),,董事会(行+ i)(列)!=0){
  是从+ +;
  如果是从==4){//连续4组相同,获胜
  赢得=订单;
  打破;
  }
  }
  其他的
  是从=0;//未连续相同,清除相同计数
  }//判断当前下棋位置左上右下各4颗棋子的相同数量,连续4组相同则获胜
  如果(列+ i> 0,,列+我+ 1 & lt; 16,,行+ i> 0,,行+我+ 1 & lt; 16){//防止下标越界
  如果董事会(行+ i)(列+ i)==董事会(行+我+ 1)(列+我+ 1),,董事会(行+ i)(列+ i) !=0) {
  count3 + +;
  如果(count3==4){//连续4组相同,获胜
  赢得=订单;
  打破;
  }
  }
  其他的
  count3=0;//未连续相同,清除相同计数
  }//判断当前下棋位置左下右上各4颗棋子的相同数量,连续4组相同则获胜
  如果(列+ i> 0,,列+我+ 1 & lt; 16,,row-i-1> 0,,row-i

使用Java实现一个五子棋小游戏