java五子棋程序源码.docx
《java五子棋程序源码.docx》由会员分享,可在线阅读,更多相关《java五子棋程序源码.docx(18页珍藏版)》请在冰豆网上搜索。
java五子棋程序源码
一个很经典的java五子棋程序(源码)
importjava.awt.*;
importjava.awt.event.*;
importjava.applet.Applet;
importjava.awt.Color;
public
classenzitextendsAppletimplementsActionListener,MouseListener,MouseMotionListener,ItemListener
{
intcolor_Qizi=0;//旗子的颜色标识0:
白子1:
黑子
intintGame_Start=0;//游戏开始标志0未开始1游戏中
intintGame_Body[][]=new
int[16][16];//设置棋盘棋子状态0无子1白子2黑子
Buttonb1=newButton("游戏开始");
Buttonb2=newButton("重置游戏");
LabellblWin=newLabel("");
CheckboxckbHB[]=newCheckbox[2];
CheckboxGroupckgHB=newCheckboxGroup();
public
voidinit()
{
setLayout(null);
addMouseListener(this);
add(b1);
b1.setBounds(330,50,80,30);
b1.addActionListener(this);
add(b2);
b2.setBounds(330,90,80,30);
b2.addActionListener(this);
ckbHB[0]=newCheckbox("白子先",ckgHB,false);
ckbHB[0].setBounds(320,20,60,30);
ckbHB[1]=newCheckbox("黑子先",ckgHB,false);
ckbHB[1].setBounds(380,20,60,30);
add(ckbHB[0]);
add(ckbHB[1]);
ckbHB[0].addItemListener(this);
ckbHB[1].addItemListener(this);
add(lblWin);
lblWin.setBounds(330,130,80,30);
Game_start_csh();
}
public
voiditemStateChanged(ItemEvente)
{
if(ckbHB[0].getState())//选择黑子先还是白子先
{
color_Qizi=0;
}
else
{
color_Qizi=1;
}
}
public
voidactionPerformed(ActionEvente)
{
Graphicsg=getGraphics();
if(e.getSource()==b1)
{
Game_start();
}
else
{
Game_re();
}
}
public
voidmousePressed(MouseEvente){}
public
voidmouseClicked(MouseEvente)
{
Graphicsg=getGraphics();
intx1,y1;
x1=e.getX();
y1=e.getY();
if(e.getX()<20||e.getX()>300||e.getY()<20||e.getY()>300)
{
return;
}
if(x1%20>10)
{
x1+=20;
}
if(y1%20>10)
{
y1+=20;
}
x1=x1/20*20;
y1=y1/20*20;
set_Qizi(x1,y1);
}
public
voidmouseEntered(MouseEvente){}
public
voidmouseExited(MouseEvente){}
public
voidmouseReleased(MouseEvente){}
public
voidmouseDragged(MouseEvente){}
public
voidmouseMoved(MouseEvente){}
public
voidpaint(Graphicsg)
{
draw_qipan(g);
}
public
voidset_Qizi(intx,inty)//落子
{
if(intGame_Start==0)//判断游戏未开始
{
return;
}
if(intGame_Body[x/20][y/20]!
=0)
{
return;
}
Graphicsg=getGraphics();
if(color_Qizi==1)//判断黑子还是白子
{
g.setColor(Color.black);
color_Qizi=0;
}
else
{
g.setColor(Color.white);
color_Qizi=1;
}
g.fillOval(x-10,y-10,20,20);
intGame_Body[x/20][y/20]=color_Qizi+1;
if(Game_win_1(x/20,y/20))//判断输赢
{
lblWin.setText(Get_qizi_color(color_Qizi)+"赢了!
");
intGame_Start=0;
}
if(Game_win_2(x/20,y/20))//判断输赢
{
lblWin.setText(Get_qizi_color(color_Qizi)+"赢了!
");
intGame_Start=0;
}
if(Game_win_3(x/20,y/20))//判断输赢
{
lblWin.setText(Get_qizi_color(color_Qizi)+"赢了!
");
intGame_Start=0;
}
if(Game_win_4(x/20,y/20))//判断输赢
{
lblWin.setText(Get_qizi_color(color_Qizi)+"赢了!
");
intGame_Start=0;
}
}
publicStringGet_qizi_color(intx)
{
if(x==0)
{
return
"黑子";
}
else
{
return
"白子";
}
}
public
voiddraw_qipan(GraphicsG)//画棋盘15*15
{
G.setColor(Color.lightGray);
G.fill3DRect(10,10,300,300,true);
G.setColor(Color.black);
for(inti=1;i<16;i++)
{
G.drawLine(20,20*i,300,20*i);
G.drawLine(20*i,20,20*i,300);
}
}
public
voidGame_start()//游戏开始
{
intGame_Start=1;
Game_btn_enable(false);
b2.setEnabled(true);
}
public
voidGame_start_csh()//游戏开始初始化
{
intGame_Start=0;
Game_btn_enable(true);
b2.setEnabled(false);
ckbHB[0].setState(true);
for(inti=0;i<16;i++)
{
for(intj=0;j<16;j++)
{
intGame_Body[j]=0;
}
}
lblWin.setText("");
}
public
voidGame_re()//游戏重新开始
{
repaint();
Game_start_csh();
}
public
voidGame_btn_enable(booleane)//设置组件状态
{
b1.setEnabled(e);
b2.setEnabled(e);
ckbHB[0].setEnabled(e);
ckbHB[1].setEnabled(e);
}
public
booleanGame_win_1(intx,inty)//判断输赢横
{
intx1,y1,t=1;
x1=x;
y1=y;
for(inti=1;i<5;i++)
{
if(x1>15)
{
break;
}
if(intGame_Body[x1+i][y1]==intGame_Body[x][y])
{
t+=1;
}
else
{
break;
}
}
for(inti=1;i<5;i++)
{
if(x1<1)
{
break;
}
if(intGame_Body[x1-i][y1]==intGame_Body[x][y])
{
t+=1;
}
else
{
break;
}
}
if(t>4)
{
return
true;
}
else
{
return
false;
}
}
public
booleanGame_win_2(intx,inty)//判断输赢竖
{
intx1,y1,t=1;
x1=x;
y1=y;
for(inti=1;i<5;i++)
{
if(x1>15)
{
break;
}
if(intGame_Body[x1][y1+i]==intGame_Body[x][y])
{
t+=1;
}
else
{
break;
}
}
for(inti=1;i<5;i++)
{
if(x1<1)
{
break;
}
if(intGame_Body[x1][y1-i]==intGame_Body[x][y])
{
t+=1;
}
else
{
break;
}
}
if(t>4)
{
return
true;
}
else
{
return
false;
}
}
public
booleanGame_win_3(intx,inty)//判断输赢左斜
{
intx1,y1,t=1;
x1=x;
y1=y;
for(inti=1;i<5;i++)
{
if(x1>15)
{
break;
}
if(intGame_Body[x1+i][y1-i]==intGame_Body[x][y])
{
t+=1;
}
else
{
break;
}
}
for(inti=1;i<5;i++)
{
if(x1<1)
{
break;
}
if(intGame_Body[x1-i][y1+i]==intGame_Body[x][y])
{
t+=1;
}
else
{
break;
}
}
if(t>4)
{
return
true;
}
else
{
return
false;
}
}
public
booleanGame_win_4(intx,inty)//判断输赢左斜
{
intx1,y1,t=1;
x1=x;
y1=y;
for(inti=1;i<5;i++)
{
if(x1>15)
{
break;
}
if(intGame_Body[x1+i][y1+i]==intGame_Body[x][y])
{
t+=1;
}
else
{
break;
}
}
for(inti=1;i<5;i++)
{
if(x1<1)
{
break;
}
if(intGame_Body[x1-i][y1-i]==intGame_Body[x][y])
{
t+=1;
}
else
{
break;
}
}
if(t>4)
{
return
true;
}
else
{
return
false;
}
}
}