永发信息网

求一个简单的JAVA五子棋代码!! 网上复制的别来了!

答案:3  悬赏:80  手机版
解决时间 2021-03-23 03:05
求一个简单的JAVA五子棋代码!! 网上复制的别来了!
最佳答案
以下是现写的 实现了两人对战 自己复制后运行把 没什么难度 类名 Games

  import java.util.Scanner;

  public class Games {

  private String board[][];
  private static int SIZE = 17;
  private static String roles = "A玩家";
  //初始化数组
  public void initBoard() {
  board = new String[SIZE][SIZE];
  for (int i = 0; i < SIZE; i++) {
  for (int j = 0; j < SIZE; j++) {
  // if(i==0){
  // String str = "";
  // str += j+" ";
  // board[i][j]= str;
  // }else if(i!=0&&j==0){
  // String str = "";
  // str += i+" ";
  // board[i][j]= str;
  // }else{
  board[i][j] = "╋";
  // }
  }
  }
  }
  //输出棋盘
  public void printBoard() {
  for (int i = 0; i < SIZE; i++) {
  for (int j = 0; j < SIZE; j++) {
  System.out.print(board[i][j]);
  }
  System.out.println();
  }
  }
  //判断所下棋子位置是否合理
  public boolean isOk(int x, int y) {
  boolean isRight = true;
  if (x >= 16 || x < 1 || y >= 16 | y < 1) {
  //System.out.println("输入错误,请从新输入");
  isRight = false;
  }
  if (board[x][y].equals("●") || board[x][y].equals("○")) {
  isRight = false;
  }
  return isRight;
  }
  //判断谁赢了
  public void whoWin(Games wz) {
  // 从数组挨个查找找到某个类型的棋子就从该棋子位置向右,向下,斜向右下 各查找5连续的位置看是否为5个相同的
  int xlabel;// 记录第一次找到某个棋子的x坐标
  int ylabel;// 记录第一次找到某个棋子的y坐标
  // ●○╋
  // 判断人是否赢了
  for (int i = 0; i < SIZE; i++) {
  for (int j = 0; j < SIZE; j++) {
  if (board[i][j].equals("○")) {
  xlabel = i;
  ylabel = j;
  // 横向找 x坐标不变 y坐标以此加1连成字符串
  String heng = "";
  if (i + 5 < SIZE && j + 5 < SIZE) {
  for (int k = j; k < j + 5; k++) {
  heng += board[i][k];
  }
  if (heng.equals("○○○○○")) {
  System.out.println(roles+"赢了!您输了!");
  System.exit(0);
  }
  // 向下判断y不变 x逐增5 连成字符串
  String xia = "";
  for (int l = j; l < i + 5; l++) {
  xia += board[l][j];
  // System.out.println(xia);
  }
  if (xia.equals("○○○○○")) {
  System.out.println(roles+"赢了!您输了!");
  System.exit(0);
  }
  // 斜向右下判断
  String youxia = "";
  for (int a = 1; a <= 5; a++) {
  youxia += board[xlabel++][ylabel++];
  }
  if (youxia.equals("○○○○○")) {
  System.out.println(roles+"赢了!您输了!");
  System.exit(0);
  }
  }
  }
  }
  }
  // 判断电脑是否赢了
  for (int i = 0; i < SIZE; i++) {
  for (int j = 0; j < SIZE; j++) {
  if (board[i][j].equals("●")) {
  xlabel = i;
  ylabel = j;

  // 横向找 x坐标不变 y坐标以此加1连成字符串
  String heng = "";
  if (j + 5 < SIZE && i + 5 < SIZE) {
  for (int k = j; k < j + 5; k++) {
  heng += board[i][k];
  }
  if (heng.equals("●●●●●")) {
  System.out.println(roles+"赢输了!您输了!");
  System.exit(0);
  }
  // 向下判断y不变 x逐增5 连成字符串
  String xia = "";
  for (int l = i; l < i + 5; l++) {
  xia += board[l][ylabel];
  // System.out.println(xia);
  }
  if (xia.equals("●●●●●")) {
  System.out.println(roles+"赢了!您输了!");
  System.exit(0);
  }
  // 斜向右下判断
  String youxia = "";
  for (int a = 1; a <= 5; a++) {
  youxia += board[xlabel++][ylabel++];
  }
  if (youxia.equals("●●●●●")) {
  System.out.println(roles+"赢了!您输了!");
  System.exit(0);
  }
  }
  }
  }
  }
  }
  public static void main(String[] args) {
  Games wz = new Games();
  Scanner sc = new Scanner(System.in);
  wz.initBoard();
  wz.printBoard();

  while (true) {
  System.out.print("请"+roles+"输入X,Y坐标,必须在0-15范围内,xy以空格隔开,输入16 16结束程序");
  int x = sc.nextInt();
  int y = sc.nextInt();
  if (x == SIZE && y == SIZE) {
  System.out.println("程序结束");
  System.exit(0);
  }
  if (x > SIZE || x < 0 || y > SIZE | y < 0) {
  System.out.println("输入错误,请从新输入");
  continue;
  }
  //如果roles是A玩家 就让A玩家下棋,否则就让B玩家下棋。
  if (wz.board[x][y].equals("╋")&&roles.equals("A玩家")) {
  wz.board[x][y] = "○";
  wz.printBoard();
  //判断输赢
  wz.whoWin(wz);
  }else if(wz.board[x][y].equals("╋")&&roles.equals("B玩家")){
  wz.board[x][y] = "●";
  wz.printBoard();
  //判断输赢
  wz.whoWin(wz);
  } else {
  System.out.println("此处已经有棋子,从新输入");
  continue;
  }
  if(roles.equals("A玩家")){
  roles = "B玩家";
  }else if(roles.equals("B玩家")){
  roles = "A玩家";
  }
  }

  }

  }
全部回答
buh hiyhu

参考资料:ejriuo

我有一个,刚刚做的。可以实现人机对战,人人对战,悔棋,禁手等操作。机器方主要采用的是a-b剪枝算法。功能很强大,代码很多。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
少女漫画中的身体比例?
朝阳区有哈尔滨市大吗
魂假野猪怎么打,真野猪和假野猪有什么不同
想问下摄影师冬天拍摄怎么保护手啊
--I hope he wont get ill during the examin
真三国无双7猛将传将星模式怎么下调总额度
谁能帮我找到`许志安《让爱》国语版的及歌词
格力NO.粤A00850怎么去啊,有知道地址的么
阅读下面文言文,回答问题子畏于匡,曰:“文
苏州相城区大润发班车时刻表?
QQ炫舞怎么刷璀璨宝石
解答题有一种专利产品热红止疼袋,它是用厚塑
嘉颐新都怎么去啊,有知道地址的么
部门员工生日祝福语,酒店员工送给新人的结婚
关于文胸的那个十大品牌是?
推荐资讯
Susan isAmerican girl A. aB. anC. theD. 不
再问|夫死后天的父与媳妇生了一子如何称呼
工业六偏磷酸钠溶液配制
louder volume hack 3.6 怎么用?
沈阳到盘锦几点有车 客车
西安做牙套大概多少钱一颗
面试:两杯水一杯有毒,怎么验出来
盛付通给员工家属发工资?怎么回事啊?
求适合寝室玩的单机游戏(可联机) ((不要
主角在一个修真门派有5个女师傅 故事背景在明
exo原来是不是8个韩国4个中国人,现在是不是8
女孩子喜欢什么样的丝巾?(颜色)
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?