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

能用就好 越简单越好!!
chenping8810@163.com

3楼那大哥 你的那个没界面...要界面的 简陋的也没关系

  以下是现写的 实现了两人对战 自己复制后运行把 没什么难度 类名 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玩家";
  }
  }

  }

  }
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-10-17
我有一个,刚刚做的。可以实现人机对战,人人对战,悔棋,禁手等操作。机器方主要采用的是a-b剪枝算法。功能很强大,代码很多。
第2个回答  2010-10-17
buh hiyhu

参考资料:ejriuo

求一个简单的JAVA五子棋代码!! 网上复制的别来了!
public void whoWin(Games wz) { \/\/ 从数组挨个查找找到某个类型的棋子就从该棋子位置向右,向下,斜向右下 各查找5连续的位置看是否为5个相同的 int xlabel;\/\/ 记录第一次找到某个棋子的x坐标 int ylabel;\/\/ 记录第一次找到某个棋子的y坐标 \/\/ ●○╋ \/\/ 判断人是否赢了 for (int i =...

java五子棋
statusText.setText("黑棋胜,黑:白为"+chessBlackWin+":"+chessWhiteWin+",重新开局,等待白棋下子..."); } else if(chessColorWin==-1) { chessWhiteWin++; statusText.setText("白棋胜,黑:白为"+chessBlackWin+":"+chessWhiteWin+",重新开局,等待黑棋下子..."); } } public void getLocation(in...

求五子棋代码(要java写的),有界面
import java.awt.Color;public class WuZhiqi extends Applet implements ActionListener, MouseListener,MouseMotionListener, ItemListener { int color = 0;\/\/ 旗子的颜色标识 0:白子 1:黑子 boolean isStart = false;\/\/ 游戏开始标志 int bodyArray[][] = new int[16][16]; \/\/ 设置棋盘棋子状...

关于java五子棋的代码
\/\/棋子枚举类public enum Chessman{ \/\/枚举类第一行必须列出所有实例,这两个表示创建两个棋子视力,它们的棋子成员变量分别是●和○ BLACK_CHESS("●"), WHITE_CHESS("○"); \/\/成员变量,决定这个棋子的类型 private String chessman; \/\/构造器,枚举类的构造器只能提供给自己的实例使用,外部不能...

下了个JAVA五子棋代码不会看 求注释
public void itemStateChanged(ItemEvent e) \/\/ItemListener接口中的方法,必须要有 { if (ckbHB[0].getState()) \/\/选择黑子先还是白子先 { color_Qizi=0; \/\/白棋先 } else { color_Qizi=1; \/\/黑棋先 } } public void actionPerformed(ActionEvent e) \/\/ActionListener接口中的方法,也是必须...

我想知道用Java编写的五子棋怎么判断输赢
代码:先把每个点放入2维数组里 定义一个 chess[x][y]\/\/这里的x ,y是用mouseclick监听他的x,y 用arg0.getY() , arg0.getY() 方法取到的 值 定义一个boolean类判断是否赢 flag \/\/ 横向 boolean flag = false; \/\/一开始不赢 int i1 = 1; \/\/用他来循环第几个棋子 int count...

跪求JAVA五子棋源代码
很sb的电脑五子棋:import java.io.*;import java.util.*;public class Gobang { \/\/ 定义一个二维数组来充当棋盘 private String[][] board;\/\/ 定义棋盘的大小 private static int BOARD_SIZE = 15;public void initBoard() { \/\/ 初始化棋盘数组 board = new String[BOARD_SIZE][BOARD_SIZE]...

求五子棋Java代码旁边就注释 让我看的清楚明白一些,要详细的解释和思路...
ItemListener \/\/继承Applet表明是个applet,后面的接口必须要实现每个接口的所有方法 { int color_Qizi=0;\/\/旗子的颜色标识 0:白子 1:黑子 int intGame_Start=0;\/\/游戏开始标志 0未开始 1游戏中 int intGame_Body[][]=new int[16][16]; \/\/设置棋盘棋子状态 0 无子 1 白子 2 黑子 ...

java 五子棋的源代码 以及类图 用例图 时序图
readLine())!=null){ String[] posStrArr=inputstr.split(",");int xpos=Integer.parseInt(posStrArr[0]);int ypos=Integer.parseInt(posStrArr[1]);gb.board[xpos-1][ypos-1]="●";gb.printboard();System.out.println("请输入您下棋的坐标,应为X,Y的格式:");} } } ...

java 五子棋 源代码 在我的基础上加个悔棋 判断胜负后把胜利的一方显示...
allChess[19][19] ;\/\/19 * 19 的棋盘 存放所有的棋子 0 --> 当前没有棋子 1 --> 黑子 2 --> 白子 比如: allChess[2][3]=2 --> 第3行第4列为白子 如果想要悔棋的话,我的理解是这样的:拿白子举例:每下一个白子后,保存两个数组,连续下两次白子之后的数组,如果想悔棋,黑方...

相似回答