今天查看eclipse上的代码,偶然发现了之前写过的一段小代码,感觉命名代码等都不是特别规范,不过还是想拿来和大家分享下。希望感兴趣的可以看下,里面有好多bug没进行处理,只是当时用来写着玩的。
package com.demo;
/**
* Created by TT on 2017-01-12.
* 五子棋
*/
public class test {
public static void main(String[]args){
QiPan qiPan=new QiPan(10,10);
Player player=new Player("p1","o",qiPan);
// player.xiaQi(0,0);
// player.xiaQi(0,1);
// player.xiaQi(0,2);
// player.xiaQi(0,3);
// player.xiaQi(0,4);
// player.xiaQi(0,0);
// player.xiaQi(1,1);
// player.xiaQi(2,2);
// player.xiaQi(3,3);
// player.xiaQi(4,4);
player.xiaQi(0,9);
player.xiaQi(1,8);
player.xiaQi(2,7);
player.xiaQi(3,6);
player.xiaQi(4,5);
}
}
class QiPan{
private Integer width;
private Integer height;
private String[][] qiPanArray;
public QiPan(Integer width,Integer height){
this.width=width;
this.height=height;
qiPanArray=new String[width][height];
init();
}
public void init(){
for(int i=0;i<qiPanArray.length;i++){
for(int j=0;j<qiPanArray.length;j++){
qiPanArray[i][j]="+";
}
}
paint();
}
public void paint(){
for(int i=0;i<qiPanArray.length;i++){
for(int j=0;j<qiPanArray.length;j++){
System.out.print(qiPanArray[i][j]);
}
System.out.println();
}
System.out.println();
System.out.println("----------------------");
System.out.println();
}
public String[][] getQiPanArray() {
return qiPanArray;
}
public void setQiPanArray(String[][] qiPanArray) {
this.qiPanArray = qiPanArray;
}
public void changeQiPan(Integer width,Integer height,String bOrw){
this.qiPanArray[width][height]=bOrw;
paint();
if(isWin(bOrw,width,height)){
System.out.println("已出胜负");
System.exit(0);
}
}
/**
* 规则
* @param bOrw
* @param width
* @param height
* @return
*/
private boolean isWin(String bOrw,Integer width,Integer height){
//是否横着有5个连续
if(isHeng(bOrw,height))
return true;
//是否竖着有5个连续
if(isZong(bOrw,width))
return true;
//是否斜着有5个连续
if(isXie(bOrw))
return true;
return false;
}
private boolean isHeng(String bOrw,Integer height){
for(int i=0;i<6;i++){
if(qiPanArray[i][height].equals(bOrw)&&qiPanArray[i+1][height].equals(bOrw)&&qiPanArray[i+2][height].equals(bOrw)&&qiPanArray[i+3][height].equals(bOrw)&&qiPanArray[i+4][height].equals(bOrw))
return true;
}
return false;
}
private boolean isZong(String bOrw,Integer width){
for(int i=0;i<6;i++){
if(qiPanArray[width][i].equals(bOrw)&&qiPanArray[width][i+1].equals(bOrw)&&qiPanArray[width][i+2].equals(bOrw)&&qiPanArray[width][i+3].equals(bOrw)&&qiPanArray[width][i+4].equals(bOrw))
return true;
}
return false;
}
private boolean isXie(String bOrw){
try{
for(int i=0;i<6;i++){
for(int j=0;j<6;j++){
if(qiPanArray[i][j].equals(bOrw)&&
qiPanArray[i+1][j+1].equals(bOrw)&&
qiPanArray[i+2][j+2].equals(bOrw)&&
qiPanArray[i+3][j+3].equals(bOrw)&&
qiPanArray[i+4][j+4].equals(bOrw))
return true;
}
}
for(int i=0;i<6;i++){
for(int j=9;j>3;j--){
if(qiPanArray[i][j].equals(bOrw)&&
qiPanArray[i+1][j-1].equals(bOrw)&&
qiPanArray[i+2][j-2].equals(bOrw)&&
qiPanArray[i+3][j-3].equals(bOrw)&&
qiPanArray[i+4][j-4].equals(bOrw))
return true;
}
}
return false;
} catch (Exception e){
return false;
}
}
}
class Player{
private String name;
private String bOrw;
private QiPan qiPan;
public Player(String name,String bOrw,QiPan qiPan){
this.name=name;
this.bOrw=bOrw;
this.qiPan=qiPan;
}
public void xiaQi(Integer width,Integer height) {
qiPan.changeQiPan(width, height, bOrw);
}
}