编写Java程序,实现简单的五子棋博弈游戏(美和易思Java练习习题)

简介: 编写Java程序,实现简单的五子棋博弈游戏(美和易思Java练习习题)

74.png

package com.qq.gb;
import java.util.Scanner;
public class GoBang {
  Scanner sc = new Scanner(System.in);
  String [][] num= new String[15][15];//创建二维数组
  int userId = 0;//判断当前用户 
  int x = 0;//横坐标
  int y = 0;//纵坐标
  static boolean win = false;//用于判断输赢的变量
  //初始化二维数组
  public void board() {
    for (x = 0; x < num.length; x++) {
      for (y = 0; y < num.length; y++) {
        num[x][y]="+";
      }
    }
  }
  //打印棋盘方法
  public void printBoard() {
    for (int x = 0; x < num.length; x++) {
      for (int y = 0; y < num.length; y++) {
        System.out.print(num[x][y]+"  ");
      }
      System.out.println();
    }
  }
  //用户下棋的方法
  public void userXY() {
    System.out.println("请输入所放棋子的横坐标:");
    x = sc.nextInt();
    System.out.println("请输入所放棋子的纵坐标:");
    y = sc.nextInt();
    //判断当前用户如果userId是0则是第一个用户
    if (userId==0) {
      if (!num[x-1][y-1].equals("+")) {
        System.out.println("该棋子已经存在,请重新输入!");
        userXY();
      }else {
        num[x-1][y-1] = "X";
        userId = 1;
        printBoard();
      }
    } else {
      if (!num[x-1][y-1].equals("+")) {
        System.out.println("该棋子已经存在,请重新输入!");
        userXY();
      }else {
        num[x-1][y-1] = "O";
        userId = 0;
        printBoard();
      }
    }
  }
  //判断输赢的方法
  public void winOrLose() {
    //创建Boolean类型的变量判断结果
    boolean a1,a2,a3,a4,b1,b2,b3,b4;//a和b分别代表一个玩家,1,2,3,4分别代表能赢的4种情况
    for (int x = 0; x < num.length-4; x++) {
      for (int y = 4; y < num.length; y++) {
        //当五颗棋子呈右上左下连着的时候游戏结束
        a4 = num[x][y].equals("X")&&num[x+1][y-1].equals("X")&&num[x+2][y-2].equals("X")&&num[x+3][y-3].equals("X")&&num[x+4][y-4].equals("X");
        b4 = num[x][y].equals("X")&&num[x+1][y-1].equals("X")&&num[x+2][y-2].equals("X")&&num[x+3][y-3].equals("X")&&num[x+4][y-4].equals("X");
        if (a4==true){
          win = true;
          System.out.println("游戏结束!");
          System.out.printf("玩家%d赢了",userId);
          break;
        }else if (b4==true){
          win = true;
          System.out.println("游戏结束!");
          System.out.printf("玩家%d赢了",userId);
          break;
        }
      }
    }
    for (int x = 0; x < num.length-4; x++) {
      for (int y = 0; y < num.length-4; y++) {
        //当五个棋子横排或者竖排连着的时候游戏结束
        a1 = num[x][y].equals("X")&&num[x][y+1].equals("X")&&num[x][y+2].equals("X")&&num[x][y+3].equals("X")&&num[x][y+4].equals("X");
        b1 = num[x][y].equals("O")&&num[x][y+1].equals("O")&&num[x][y+2].equals("O")&&num[x][y+3].equals("O")&&num[x][y+4].equals("O");
        a2 = num[x][y].equals("X")&&num[x+1][y].equals("X")&&num[x+2][y].equals("X")&&num[x+3][y].equals("X")&&num[x+4][y].equals("X");
        b2 = num[x][y].equals("O")&&num[x+1][y].equals("O")&&num[x+2][y].equals("O")&&num[x+3][y].equals("O")&&num[x+4][y].equals("O");
        //当五颗棋子呈左上右下连着的时候游戏结束
        a3 = num[x][y].equals("X")&&num[x+1][y+1].equals("X")&&num[x+2][y+2].equals("X")&&num[x+3][y+3].equals("X")&&num[x+4][y+4].equals("X");
        b3 = num[x][y].equals("O")&&num[x+1][y+1].equals("O")&&num[x+2][y+2].equals("O")&&num[x+3][y+3].equals("O")&&num[x+4][y+4].equals("O");
        if ((a1==true)||(a2==true)||(a3==true)){
          win = true;
          System.out.println("游戏结束!");
          System.out.printf("玩家%d赢了",userId);
          break;
        }else if ((b1==true)||(b2==true)||(b3==true)){
          win = true;
          System.out.println("游戏结束!");
          System.out.printf("玩家%d赢了",userId);
          break;
        }
      }
    }
  }
  public static void main(String[] args) {
    GoBang gb = new GoBang();
    gb.board();//初始化二维数组
    gb.printBoard();//打印棋盘
    do {
      gb.userXY();//循环下棋
      gb.winOrLose();//判断输赢
    } while (win==false);//当win变量变为ture时停止循环
  }
}
相关文章
|
23天前
|
Java
Java猜数字游戏
Java猜数字游戏
17 2
|
1月前
|
Java Android开发
基于Java的坦克大战游戏的设计与实现
基于Java的坦克大战游戏的设计与实现
14 0
|
1月前
|
Java
java程序导出堆文件
java程序导出堆文件
|
1月前
|
SQL Oracle Java
sql文件批处理程序-java桌面应用
sql文件批处理程序-java桌面应用
25 0
|
14天前
|
Java Maven
【Java报错】显示错误“Error:java: 程序包org.springframework.boot不存在“
【Java报错】显示错误“Error:java: 程序包org.springframework.boot不存在“
35 3
|
1天前
|
Java
网页运行java程序cheerpj
网页运行java程序cheerpj
26 0
|
29天前
|
Java
elasticsearch使用java程序添加删除修改
elasticsearch使用java程序添加删除修改
9 0
|
1月前
|
Java
java程序
re是java运行时的环境,包含jvm和运行时所需要的类库 jdk是java开的程序包,包含jre和开发人员使用的工具 jvm就是我们常说的java虚拟机,他是整个java实现跨平台的最核心 的部分,所有的java程序会首先被编译为.class的类文件,这种类文 件可以在虚拟机上执行。也就是说class并不直接与机器的操作系统 相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释 给本地系统执行。 只有jvm还不能成class的执行,因为再解释class的时候jvm需要调用 解释所需要的类库lib,而jre包含lib类库。jvm屏蔽了与具体操作系 统平台相关的信息,使得java程
17 0
|
8月前
|
IDE 小程序 前端开发
详细解读java的俄罗斯方块游戏的源代码--【课程设计】
详细解读java的俄罗斯方块游戏的源代码--【课程设计】
|
Java 定位技术 开发者
基于Java的俄罗斯方块游戏
基于Java的俄罗斯方块游戏
基于Java的俄罗斯方块游戏