您的位置:首页 > 编程语言 > Java开发

JAVA五子棋项目总结

2015-06-18 19:36 1196 查看
                  五天左右的时间完成了五子棋项目一些基本操作,对此项目的功能实现主要

人人对战,人机算法暂且不论。。。。

        对人人对战中,主要难度在于判断胜利条,黑白棋子重绘功能,以及悔棋功能的实现。

        棋盘的绘制主要应用重绘功能加上个for循环(代码如下):

(这里绘制的是12横线12竖线的棋盘)

public void paint(Graphics g){
super.paint(g);
//画横线
for (int i = 0; i < 12; i++) {
g.drawLine(20, 20+40*i, 460,20+40*i );
//利用直线功能绘制横线,(20, 20+40*i, 460,20+40*i )
为坐标
}
//画竖线
for (int i = 0; i < 12; i++) {
g.drawLine(20+40*i,20,20+40*i,460);
}

        旗子的实现:

for (int i = 0; i < list.size(); i++) {

g.setColor(color);  
g.fillOval(x-15,y-15,30,30);

}
}

而判断下棋子是黑白这里我则用了boolean来实现

boolean bool = false;

//如果bool是true则棋子是白色,否则为黑色
if(bool==true){

g.setColor(Color.WHITE);  
color=Color.WHITE;
all[yM][xM] = Color.WHITE;  //当前坐标有棋子当再次被点击时,则颜色不变
bool=!bool;
}else{
g.setColor(Color.BLACK);
color=Color.BLACK;
all[yM][xM]=Color.BLACK;
bool=!bool;
}

之后更是输赢的算法是,这里只说横排判断方法:

public boolean checkWin(int xM,int yM){
Color c = all[yM][xM];   //首先获得起点棋子的颜色
int qizi=1;    //棋子初始为1

int XM;
XM=xM-1;     //棋子的坐标向右移
Color color=all[yM][XM];     //获得棋子右移的颜色
while(true){
XM--;
if(XM<0){              //当检测坐标超出棋盘范围是则停止
break;
}
if(color==c){               //检测右移后的棋子颜色与初始棋子颜色是否相同
qizi= qizi+1;   //棋子个数加一

color=all[yM][XM];
}else{
break;
}

}
XM=xM+1;     //棋子的坐标向左移

// System.out.println(XM+""+yM);
color=all[yM][XM];     //获得
while(true){
XM++;
if(XM>11){
break;
}
if(color==c){
qizi= qizi+1;   //棋子个数加

color=all[yM][XM];
}else{
break;
}

}
if(qizi>=5){             //检测棋子颜色相同的个数大于或者等于5
return true;
}else{
return false;
}

 

最后在到鼠标监听器调用此方法即可(因为检测的是当前下棋是坐标的棋子)     

如: /**
* 调用checkWin方法
*/
boolean ifWin = checkWin(xM,yM);
if(ifWin){

//如果赢了,则提示胜利
JOptionPane.showMessageDialog(Wqz.this, "胜利","提示",
JOptionPane.ERROR_MESSAGE);

all=new Color[12][12];
list.clear();  //清空棋盘数据
repaint();      
return;

}

姑且做到此处。。。。。。。。。。。。。。。。。。。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: