13格的五子棋代码Word文档格式.docx
《13格的五子棋代码Word文档格式.docx》由会员分享,可在线阅读,更多相关《13格的五子棋代码Word文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
//初始化坐标位置
booleanstart=true,redplay=true,success=false;
//初始化重新开始,下棋,胜利
ints[]=newint[155],jj[]=newint[155];
//初始化棋局位置,棋子信息
JButtonjbutton1,jbutton2;
//定义重新开始红队先下,重新开始蓝队先下两个按钮
JLabeljlabel;
//定义标签
publicwuziqi(){
Containerc=getContentPane();
//给容器赋值
c.setLayout(newFlowLayout());
jbutton1=newJButton("
重新开始红队先下"
);
c.add(jbutton1);
jbutton2=newJButton("
重新开始蓝队先下"
c.add(jbutton2);
jlabel=newJLabel();
c.add(jlabel,BorderLayout.SOUTH);
//增加鼠标监听器
addMouseListener(newMouseAdapter()
{
publicvoidmousePressed(MouseEventevent)
{if(event.isAltDown())
{repaint();
}
//获得鼠标点击的坐标
x=event.getPoint().x;
y=event.getPoint().y;
System.out.println("
坐标是:
"
+x+"
"
+y+"
;
"
intlocation=location(x,y);
//用a保存坐标的信息
location="
+location);
//一方胜利或平局就重新开始
if(success)
jlabel.setForeground(Color.RED);
jlabel
.setText("
+"
游戏已结束,请重新开始"
//棋局还没结束,继续下棋
else
//如果先前一位置上已有一棋子,在此位置上再有一棋子就提醒另选位置重新下棋
if(s[location]==1)
jlabel.setText("
此位置有棋子,请另选位置重新下棋"
//如果此位置是第一次有棋,则改变棋盘相应的信息
if(s[location]==0)
start=false;
s[location]=s["
+location+"
]="
+s[location]);
for(inti=1;
for(intj=1;
{
if(location==(j-1)*12+i)
{
chequer[j][i]=1;
System.out.println("
j="
+j+"
i="
+i+"
chequer[j][i]="
+"
chequer["
]["
+chequer[j][i]);
}
}
jlabel.setText("
repaint();
//使刚下的棋子在棋盘上刻画出来
s[location]=1;
}
});
//给按钮1添加监听器,当点击按钮1则红队先下
jbutton1.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEventarg0){
for(inti=1;
i<
s.length;
i++)
s[i]=0;
jj[i]=0;
//红棋结果为1,蓝棋结果为2
s.length="
+s.length);
start=true;
//重画棋盘
success=false;
redplay=true;
jlabel.setForeground(Color.black);
jlabel
.setText("
+
"
红队先下"
}});
//给按钮2添加监听器,当点击按钮2则红队先下
jbutton2.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEventarg0)
redplay=false;
蓝队先下"
});
setSize(800,800);
setVisible(true);
publicvoidpaint(Graphicsg)
//划棋盘
if(start)
super.paint(g);
intx=100,y=100,c=600,k=600;
for(inti=0;
600;
i+=50)
g.drawRect(x,y+i,c,k-i);
g.drawRect(x+i,y,c-i,k);
}
//画棋子
if(!
start)
jlabel.setForeground(Color.black);
if(redplay)
g.setColor(Color.red);
//出现错误
for(inti=1;
if(chequer[j][i]==1)
g.drawLine(100+(i-1)*50+10,100+(j-1)*50+10,100+(i-1)*50+40,100+(j-1)*50+40);
g.drawLine(100+(i-1)*50+40,100+(j-1)*50+10,100+(i-1)*50+10,100+(j-1)*50+40);
chequer[j][i]=0;
jj[(j-1)*12+i]=1;
(j-1)*12+i"
+((j-1)*12+i));
jj[(j-1)*12+i]=jj["
+((j-1)*12+i)+"
+jj[(j-1)*12+i]);
redplay=false;
jlabel
.setText("
"
蓝队下棋"
//正确
redplay){System.out.println("
!
redplay"
redplay)
g.setColor(Color.blue);
for(intj=1;
if(chequer[j][i]==1)
{
g.drawOval(100+(i-1)*50+12,100+(j-1)*50+12,25,25);
chequer[j][i]=0;
jj[(j-1)*12+i]=2;
System.out.println("
redplay=true;
红队下棋"
result();
//调用result(),判断棋局的最终结果
publicvoidresult()
inttemp[][]=newint[13][13];
temp[j][i]=jj[(j-1)*12+i];
9;
{for(intj=1;
{
if(temp[j][i]==2&
&
temp[j][i+1]==2&
temp[j][i+2]==2&
temp[j][i+3]==2&
temp[j][i+4]==2)
jlabel.setForeground(Color.RED);
jlabel.setText("
+
"
蓝方获胜,连接线"
_"
"
+(i+1)+"
"
+(i+2)+"
+(i+3)+"
+(i+4)
+"
success=true;
if(temp[j][i]==1&
temp[j][i+1]==1&
temp[j][i+2]==1&
temp[j][i+3]==1&
temp[j][i+4]==1)
jlabel.setForeground(Color.RED);
jlabel.setText("
红方获胜,连接线"
success=true;
{for(intj=1;
{
if(temp[j][i]==2&
temp[j+1][i]==2&
temp[j+2][i]==2&
temp[j+3][i]==2&
temp[j+4][i]==2)
jlabel.setText("
"
+(j+1)+"
+(j+2)+"
+(j+3)+"
+(j+4)+"
+i
+"
);
if(temp[j][i]==1&
temp[j+1][i]==1&
temp[j+2][i]==1&
temp[j+3][i]==1&
temp[j+4][i]==1)
+"
+"
temp[j+1][i+1]==2&
temp[j+2][i+2]==2&
temp[j+3][i+3]==2&
temp[j+4][i+4]==2)
jlabel.setForeground(Color.RED);
+"
+i+1+"
+i+2+"
temp[j+1][i+1]==1&
temp[j+2][i+2]==1&
temp[j+3][i+3]==1&
temp[j+4][i+4]==1)
{
+(i+4)
for(inti=5;
temp[j+1][i-1]==2&
temp[j+2][i-2]==2&
temp[j+3][i-3]==2&
temp[j+4][i-4]==2)
+(i-1)+"
+(i-2)+"
+j+3+"
+(i-3)+"
+(i-4)
temp[j+1][i-1]==1&
temp[j+2][i-2]==1&
temp[j+3][i-3]==1&
temp[j+4][i-4]==1)
intcount=0;
for(intd=0;
d<
145;
d++)
if(s[d]==1)
count++;
count="
+count);
if(!
success)
if(count==144)
双方平局,请重新开始!
//判断棋子所属棋格
publicintlocation(intx,inty)
for(inti=1;
{for(intj=1;
{
if(x>
=100+50*(i-1)&
x<
100+50*i&
y>
=100+50*(j-1)&
y<
100+50*j)
{location=(j-1)*12+i;
}
returnlocation;
}
publicstaticvoidmain(String[]args){
wuziqis=newwuziqi();
s.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}