人人五子棋的实现
五子棋之人人五子棋的实现也算是继画板之后的另外一大工程了吧,不过还好,过程没有想象中的难,接下来就来看看如何实现简单的五子棋吧!!这是五子棋的界面,虽然说很粗糙简单,可是基本功能还是很齐全的~~~
首先还是要创建一个五子棋的界面,同时在界面上实现棋盘的重绘和棋子的重绘,具体代码如下:
public class Win {//存储棋子的数组 private int array[][]=new int[WZQ.X ][WZQ.Y ]; //构造函数 public Win(int[][] array){ this.array=array; } //判断棋子竖向赢的方法,x和y是棋子的坐标 public boolean winS(int x,int y){ int count=0;//统计棋子的个数 //遍历这一行的列 //开始找左相邻的颜色相同的棋子 for(int i=y;i>=0;i--){ if(array[x][y]==array[x][i]){ count++; } else break; } //找右相邻的颜色相同的棋子 for(int i=y+1;i<WZQ.Y;i++){ if(array[x][y]==array[x][i]) count++; else break; } //如果有5个或者5个以上颜色相同的棋子,返回true if(count>=5) return true; else return false; } //判断棋子横向赢的方法 public boolean winH(int x,int y){ int count=0; for(int i=x;i>=0;i--){ if(array[x][y]==array[i][y]) count++; else break; } for(int i=x+1;i<WZQ.X;i++){ if(array[x][y]==array[i][y]){ count++; } else break; } if(count>=5) return true; else return false; } //判断棋子左斜方赢得方法 public boolean winL(int x,int y){ int count=0; for(int i=x,j=y;i>=0&&j>=0;i--,j--){ if(array[x][y]==array[i][j]) count++; else break; } for(int i=x+1,j=y+1;i<WZQ.X&&j<WZQ.Y;i++,j++){ if(array[x][y]==array[i][j]) count++; else break; } if(count>=5) return true; else return false; } //判断五子棋右斜方赢得方法 public boolean winR(int x,int y){ int count=1; for(int i=x-1,j=y+1;i>=0&&j<WZQ.Y;i--,j++){ if(array[x][y]==array[i][j]) count++; else break; } for(int i=x+1,j=y-1;i<WZQ.X&&j>=0;i++,j--){ if(array[x][y]==array[i][j]) count++; else break; } if(count>=5) return true; else return false; } /** * 验证棋子输赢的方法 */ public void win_or_not(int row,int column){ //判断是否五子相连 if(winS(row,column)||winH(row,column)||winL(row,column) ||winR(row,column)){ if(array[row][column]==1){ //调用服务方法 showMessage("oh yeah!!!白棋胜利"); } else if(array[row][column]==-1){ showMessage("黑棋胜利"); } } } /** * 显示弹出框的方法 */ public void showMessage(String message){ JOptionPane.showMessageDialog(null, message); }}