Java编写的简单五子棋.docx

上传人:b****6 文档编号:5285478 上传时间:2022-12-14 格式:DOCX 页数:8 大小:16.26KB
下载 相关 举报
Java编写的简单五子棋.docx_第1页
第1页 / 共8页
Java编写的简单五子棋.docx_第2页
第2页 / 共8页
Java编写的简单五子棋.docx_第3页
第3页 / 共8页
Java编写的简单五子棋.docx_第4页
第4页 / 共8页
Java编写的简单五子棋.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

Java编写的简单五子棋.docx

《Java编写的简单五子棋.docx》由会员分享,可在线阅读,更多相关《Java编写的简单五子棋.docx(8页珍藏版)》请在冰豆网上搜索。

Java编写的简单五子棋.docx

Java编写的简单五子棋

Java编写的简单五子棋

Java程序设计—五子棋

一、源码

importjava.awt.*;

importjava.awt.event.MouseListener;

importjava.awt.event.MouseEvent;

importjava.util.Vector;

importjavax.swing.*;

publicclasswuziqiextendsJFrameimplementsMouseListener{

publicstaticvoidmain(Stringargs[]){

wuziqid=newwuziqi();

}

Vectorv=newVector();

Vectorwhite=newVector();

Vectorblack=newVector();

JButtonbtnstart=newJButton("开始");

JButtonbtnstop=newJButton("停止");

JToolBartool=newJToolBar();

booleanb;//用来判断白棋还是黑棋

intblackcount,whitecount;//计算悔棋

/**

*构造方法

*/

publicwuziqi(){

super("五子棋");

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭按钮

Containercon=this.getContentPane();

this.addMouseListener(this);//添加监听

tool.add(btnstart);//添加按钮

tool.add(btnstop);

this.setSize(550,500);//设置窗体大小

this.setVisible(true);

}

intw=20;//间距大小是双数

intpx=100,py=100;//棋盘的坐标

intpxw=(px+w),pyw=(py+w);

intwidth=w*16,height=w*16;

intvline=(width+px);//垂直线的长度

inthline=(height+py);//水平线的长度

/**

*画棋盘

*/

publicvoidpaint(Graphicsg){

g.clearRect(0,0,this.getWidth(),this.getHeight());//清除面板

g.setColor(Color.BLACK);//设置网格颜色

g.drawRect(px,py,width,height);//网格大小

g.drawString("简易五子棋",110,70);

for(inti=0;i<15;i++){

g.drawLine(pxw+i*w,py,pxw+i*w,hline);//每条横线和竖线

g.drawLine(px,pyw+i*w,vline,pyw+i*w);

}

for(intx=0;x

Stringstr=(String)v.get(x);

Stringtmp[]=str.split("-");

inta=Integer.parseInt(tmp[0]);

intb=Integer.parseInt(tmp[1]);

a=a*w+px;

b=b*w+py;

if(x%2==0){

g.setColor(Color.CYAN);

}else{

g.setColor(Color.BLACK);

}

g.fillArc(a-w/2,b-w/2,w,w,0,360);

}

}

publicvoidupdeta(Graphicsg){

this.paint(g);

}

publicvoidvictory(intx,inty,Vectorcontain){//判断胜利的方法

intcv=0;//计算垂直的变量

intch=0;//计算水平的变量

intci1=0;//计算斜面的变量1

intci2=0;//计算斜面的变量2

for(inti=1;i<5;i++){

if(contain.contains((x+i)+"-"+y))

ch++;

else

break;

}

System.out.println("前面执行了"+ch+"次");

for(inti=1;i<5;i++){

if(contain.contains((x-i)+"-"+y))

ch++;

else

break;

}

System.out.println("后面执行了"+ch+"次");

for(inti=1;i<5;i++){

if(contain.contains(x+"-"+(y+i)))

cv++;

else

break;

}

for(inti=1;i<5;i++){

if(contain.contains(x+"-"+(y-i)))

cv++;

else

break;

}

for(inti=1;i<5;i++){

if(contain.contains((x+i)+"-"+(y+i)))

ci1++;

else

break;

}

for(inti=1;i<5;i++){

if(contain.contains((x-i)+"-"+(y-i)))

ci1++;

else

break;

}

for(inti=1;i<5;i++){

if(contain.contains((x-i)+"-"+(y+i)))

ci2++;

else

break;

}

for(inti=1;i<5;i++){

if(contain.contains((x+i)+"-"+(y-i)))

ci2++;

else

break;

}

if(ch>=4||cv>=4||ci1>=4||ci2>=4){

System.out.println(v.size()+"步棋");

if(v.size()%2==0){//判断偶数是黑棋胜利,奇数白棋胜利

JOptionPane.showMessageDialog(null,"恭喜你黑棋赢了");

}

else{

JOptionPane.showMessageDialog(null,"恭喜你白棋赢了");

}

this.v.clear();

this.black.clear();

this.white.clear();

this.repaint();

}

System.out.println(ch+""+cv+""+ci1+""+ci2);

}

publicvoidmouseClicked(MouseEvente){

if(e.getButton()==e.BUTTON1){

intx=e.getX();

inty=e.getY();

x=(x-x%w)+(x%w>w/2?

w:

0);

y=(y-y%w)+(y%w>w/2?

w:

0);

x=(x-px)/w;

y=(y-py)/w;

if(x>=0&&y>=0&&x<=16&&y<=16){

if(v.contains(x+"-"+y)){

System.out.println("已有棋了");

}

else{

v.add(x+"-"+y);

this.repaint();

if(v.size()%2==0){

black.add(x+"-"+y);

this.victory(x,y,black);

System.out.println("黑棋");

}

else{

white.add(x+"-"+y);

this.victory(x,y,white);

System.out.println("白棋");

}

System.out.println(e.getX()+"-"+e.getY());

}

}

else{

System.out.println(e.getX()+"-"+e.getY()+"|"+x+"-"+y+"\t超出边界");

}

}

if(e.getButton()==e.BUTTON3){//悔棋方法全在这里

System.out.println("鼠标右键-悔棋");

if(v.isEmpty()){

JOptionPane.showMessageDialog(this,"没有棋可以悔");

}

else{

if(v.size()%2==0){//判断是白方悔棋还是黑方悔棋

blackcount++;

if(blackcount>3){

JOptionPane.showMessageDialog(this,"黑棋已经悔了三步");

}

else{

v.remove(v.lastElement());

this.repaint();

}

}else{

whitecount++;

if(whitecount>3){

JOptionPane.showMessageDialog(this,"白棋已经悔了三步");

}else{

v.remove(v.lastElement());

this.repaint();

}

}

}

}

}

publicvoidmouseEntered(MouseEvente){

}

publicvoidmouseExited(MouseEvente){

}

publicvoidmousePressed(MouseEvente){

}

publicvoidmouseReleased(MouseEvente){

}

}

二、简要说明

该程序为一简易五子棋,棋盘为15*15,白子先落。

可以悔棋,点击鼠标右键悔棋,最多悔3步。

在每次下子前,先判断该处有无棋子,有则不能落子,超出边界不能落子。

下子时白子先落,判断胜利为偶数是黑棋胜利,奇数白棋胜利。

任何一方有达到横、竖、撇、捺连到5子则胜利。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 院校资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1