五子棋java源码.doc_第1页
五子棋java源码.doc_第2页
五子棋java源码.doc_第3页
五子棋java源码.doc_第4页
五子棋java源码.doc_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

package o5;import java.awt.event.*;public class wuziqi extends JFrame implements ActionListener,MouseListener,MouseMotionListener, KeyListener, RunnableJPanel jPanel = new JPanel();JButton b = new JButton100;List list1= new ArrayList();/控制已经点击过的再点击不产生事件List listred= new ArrayList();/已下的红子List listgreen= new ArrayList();/已下的绿子List jiqixiaziweizhi= new ArrayList();/机器下的子List count1= new ArrayList();/计数为1时机器方所有邻近落子位置(包括棋局外)List count1r= new ArrayList();/计数为1时机器方所有邻近落子位置(棋局内)List quanji= new ArrayList();/所有可以落子的位置List count2= new ArrayList();/计数为2以上时机器方所有邻近落子位置(包括棋局外)List count2r= new ArrayList();/计数为2以上时时机器方所有邻近落子位置(棋局内)Robot robot;int end=0;int start=-1;int fs=-1;boolean zhencekuai=new boolean100;/划分100个鼠标侦测块int x,y;int count=0;/鼠标点击计数,控制落子颜色int renjiduizhan=-1;int countsd=0;public wuziqi() super(五子棋-chenglizhou);this.addMouseMotionListener(this);this.addMouseListener(this);this.addKeyListener(this);this.setContentPane(jPanel);jPanel.setLayout(new FlowLayout();for(int i=0;i100;i+)quanji.add(i);bi=new JButton( );Dimension size = bi.getPreferredSize();size.width = size.height = Math.max(size.width, size.height);bi.setPreferredSize(size);bi.setOpaque(false);jPanel.add(bi);bi.setVisible(false);bi.setContentAreaFilled(false); jPanel.setOpaque(false);this.setBounds(50, 50, 460, 560);this.setVisible(true);public void paint(Graphics g)for(int i=0;i150&x456&y490)/开始游戏功能实现 g.clearRect(0, 0, 450, 450); repaint(); end=1; count=0;/初始化所有的全局变量 list1.removeAll(list1); listred.removeAll(listred);listgreen.removeAll(listgreen);jiqixiaziweizhi.removeAll(jiqixiaziweizhi);count1.removeAll(count1);count1r.removeAll(count1r);count2.removeAll(count2);count2r.removeAll(count2r); for(int c=0;c42&x510&y26&x456&y26&x490&y518)/自我博弈功能启动renjiduizhan=-1;fs=-1; for(int t=0;t10;t+)/A块起始for(int i=0;i=19+42*i&x=32+42*t&y=32+42*(t+1);if(zhencekuaii+10*t&!list1.contains(i+10*t)&end!=0)System.out.print(侦测块+ (i+10*t);count=count+1;if(count%2!=0)g.setColor(Color.RED);g.fillOval(5+19+42*i, 5+32+42*t, 30, 30);listred.add(i+10*t);list1.add(i+10*t);System.out.println(listred+ listred);for(int a=0;a100;a+)/l块起始if(listred.contains(a)&listred.contains(a+10)&listred.contains(a+20)&listred.contains(a+30)&listred.contains(a+40)|(listred.contains(a)&listred.contains(a+11)&listred.contains(a+22)&listred.contains(a+33)&listred.contains(a+44)&(a+44)/10-a/10!=5 )|(listred.contains(a)&listred.contains(a+9)&listred.contains(a+18)&listred.contains(a+27)&listred.contains(a+36)&(a+36)/10-a/10!=3 )|(listred.contains(a)&listred.contains(a+1)&listred.contains(a+2)&listred.contains(a+3)&listred.contains(a+4) )&a/10=(a+4)/10 ) g.setFont(new Font(Serif,Font.ITALIC|Font.BOLD,80);g.drawString(红方赢啦, 60, 240); end=0;start=1; for(int c=0;c100;c+ ) bc.setVisible(true); /l块结束if(renjiduizhan=0)/“人机对战”功能实现/c块起始if(count=1&jiqixiaziweizhi.size()=0)/下即连成二子位置添加到count1集合if(i+10*t+1)/10=(i+10*t)/10)count1.add(i+10*t+1);if(i+10*t)/10=(i+10*t-1)/10)count1.add(i+10*t-1);count1.add(i+10*t+10);count1.add(i+10*t-10);if(i+10*t+11)/10-(i+10*t)/10!=2)count1.add(i+10*t+11);if(i+10*t)/10-(i+10*t-11)/10!=2)count1.add(i+10*t-11);if(i+10*t+9)/10!=(i+10*t)/10)count1.add(i+10*t+9);if(i+10*t-9)/10!=(i+10*t)/10)count1.add(i+10*t-9);for(int d=0;dcount1.size();d+)/去掉count1棋局外的部分if(quanji.contains(count1.get(d)if(!list1.contains(count1.get(d)/去掉已落过子的位置count1r.add(count1.get(d);System.out.println(count1r);int c1= (int) (Math.random()*count1r.size();g.setColor(Color.green);g.fillOval(5+19+42*(count1r.get(c1)%10), 5+32+42*(count1r.get(c1)/10), 30, 30);jiqixiaziweizhi.add(count1r.get(c1);list1.add(count1r.get(c1);count=count+1;else/b块起始List count2r1= new ArrayList();/尚未落子的位置for(int d1=0;d1100;d1+)if(!list1.contains(d1)count2r1.add(d1);if(jiqixiaziweizhi.size()=0) for(int j=0;jlistgreen.size();j+) jiqixiaziweizhi.add(listgreen.get(j); for(int f=0;fjiqixiaziweizhi.size();f+)/下即连成二子位置添加到count2集合 if(jiqixiaziweizhi.get(f)+1)/10=(jiqixiaziweizhi.get(f)/10)count2.add(jiqixiaziweizhi.get(f)+1); if(jiqixiaziweizhi.get(f)/10=(jiqixiaziweizhi.get(f)-1)/10)count2.add(jiqixiaziweizhi.get(f)-1);count2.add(jiqixiaziweizhi.get(f)+10);count2.add(jiqixiaziweizhi.get(f)-10);if(jiqixiaziweizhi.get(f)+11)/10-(jiqixiaziweizhi.get(f)/10!=2)count2.add(jiqixiaziweizhi.get(f)+11);if(jiqixiaziweizhi.get(f)/10-(jiqixiaziweizhi.get(f)-11)/10!=2)count2.add(jiqixiaziweizhi.get(f)-11);if(jiqixiaziweizhi.get(f)+9)/10!=(jiqixiaziweizhi.get(f)/10)count2.add(jiqixiaziweizhi.get(f)+9);if(jiqixiaziweizhi.get(f)/10!=(jiqixiaziweizhi.get(f)-9)/10)count2.add(jiqixiaziweizhi.get(f)-9);for(int d=0;dcount2.size();d+)/a块起始/去掉count2棋局外的部分if(quanji.contains(count2.get(d)if(count2r.size()=0&!list1.contains(count2.get(d)count2r.add(count2.get(d);else/去掉已落过子的位置和count2中重复的if(!count2r.contains(count2.get(d)&!list1.contains(count2.get(d)count2r.add(count2.get(d); /a块结束System.out.println(list1+list1);System.out.println(count2r+count2r);for(int h=0;hcount2r.size();h+)/去掉count2r中机器已下过的位置if(list1.contains(count2r.get(h) )count2r.remove(h);h-;System.out.println(count2r+count2r);int c1= (int) (Math.random()*count2r.size();/随机选一个相邻的位置/*/ 1 2 3 4 /即成五子的情形 -1 1 2 3 -2 -1 1 2 -3 -2 -1 1-4 -3 -2 -1 1 2 3 /即成四子的情形 -1 1 2 -2 -1 1 -3 -2 -1 1 2 /即成三子的情形 -1 1 -2 -1*/for(int p=-1;p=1;p+)/g块起始/分析下一子即成三子的情形for(int h=0;hcount2r.size();h+ )if(count2r.contains(count2r.get(h)&jiqixiaziweizhi.contains(count2r.get(h)+10*p)&jiqixiaziweizhi.contains(count2r.get(h)+20*p)&(count2r1.contains(count2r.get(h)+20*p+10*p)|count2r1.contains(count2r.get(h)-10*p)|(count2r.contains(count2r.get(h)&jiqixiaziweizhi.contains(count2r.get(h)+11*p)&jiqixiaziweizhi.contains(count2r.get(h)+22*p)&(count2r.get(h)+22*p)*p/10-count2r.get(h)*p/10!=3&(count2r1.contains(count2r.get(h)+22*p+11*p)|count2r1.contains(count2r.get(h)-11*p) )|(count2r.contains(count2r.get(h)&jiqixiaziweizhi.contains(count2r.get(h)+9*p)&jiqixiaziweizhi.contains(count2r.get(h)+18*p)&(count2r.get(h)+18*p)*p/10-count2r.get(h)*p/10!=1&(count2r1.contains(count2r.get(h)+18*p+9*p)|count2r1.contains(count2r.get(h)-9*p) )|(count2r.contains(count2r.get(h)&jiqixiaziweizhi.contains(count2r.get(h)+1*p)&jiqixiaziweizhi.contains(count2r.get(h)+2*p) )&count2r.get(h)/10=(count2r.get(h)+2*p)/10&(count2r1.contains(count2r.get(h)+2*p+1*p)|count2r1.contains(count2r.get(h)-1*p) ) c1=h; /g块结束 for(int h=0;hcount2r.size();h+ )/g1块起始/分析下一子即成三子的情形if(jiqixiaziweizhi.contains(count2r.get(h)+10*(-1)&jiqixiaziweizhi.contains(count2r.get(h)+10*(1)&(count2r1.contains(count2r.get(h)+10*(1)+10)|count2r1.contains(count2r.get(h)+10*(-1)-10)|(jiqixiaziweizhi.contains(count2r.get(h)+11*(-1)&jiqixiaziweizhi.contains(count2r.get(h)+11*(1)&(count2r.get(h)+11*(1)/10-(count2r.get(h)+11*(-1)/10!=3&(count2r1.contains(count2r.get(h)+11*(1)+11)|count2r1.contains(count2r.get(h)+11*(-1)-11) )|(jiqixiaziweizhi.contains(count2r.get(h)+9*(-1)&jiqixiaziweizhi.contains(count2r.get(h)+9*(1)&(count2r.get(h)+9*(1)/10-(count2r.get(h)+9*(-1)/10!=1&(count2r1.contains(count2r.get(h)+9*(1)+9)|count2r1.contains(count2r.get(h)+9*(-1)-9) )|(jiqixiaziweizhi.contains(count2r.get(h)+1*(-1)&jiqixiaziweizhi.contains(count2r.get(h)+1*(1) )&(count2r.get(h)+1*(-1)/10=(count2r.get(h)+1*(1)/10 &(count2r1.contains(count2r.get(h)+1*(1)+1)|count2r1.contains(count2r.get(h)+1*(-1)-1) c1=h; /g1块结束int w=0;System.out.println(count2r1+count2r1);for(int p=-1;p=1;p+)/f块起始/分析下一子即成四子的情形for(int h=0;hcount2r.size();h+ )if(count2r.contains(count2r.get(h)&jiqixiaziweizhi.contains(count2r.get(h)+10*p)&jiqixiaziweizhi.contains(count2r.get(h)+20*p)&jiqixiaziweizhi.contains(count2r.get(h)+30*p)&(count2r1.contains(count2r.get(h)+30*p+10*p)|count2r1.contains(count2r.get(h)-10*p)|(count2r.contains(count2r.get(h)&jiqixiaziweizhi.contains(count2r.get(h)+11*p)&jiqixiaziweizhi.contains(count2r.get(h)+22*p)&jiqixiaziweizhi.contains(count2r.get(h)+33*p)&(count2r.get(h)+33*p)*p/10-count2r.get(h)*p/10!=4&(count2r1.contains(count2r.get(h)+33*p+11*p)|count2r1.contains(count2r.get(h)-11*p) )|(count2r.contains(count2r.get(h)&jiqixiaziweizhi.contains(count2r.get(h)+9*p)&jiqixiaziweizhi.contains(count2r.get(h)+18*p)&jiqixiaziweizhi.contains(count2r.get(h)+27*p)&(count2r.get(h)+27*p)*p/10-count2r.get(h)*p/10!=2&(count2r1.contains(count2r.get(h)+27*p+9*p)|count2r1.contains(count2r.get(h)-9*p) )|(count2r.contains(count2r.get(h)&jiqixiaziweizhi.contains(count2r.get(h)+1*p)&jiqixiaziweizhi.contains(count2r.get(h)+2*p)&jiqixiaziweizhi.contains(count2r.get(h)+3*p) )&count2r.get(h)/10=(count2r.get(h)+3*p)/10 &(count2r1.contains(count2r.get(h)+3*p+1*p)|count2r1.contains(count2r.get(h)-1*p) c1=h; w=4; System.out.println(count2r1.contains(count2r.get(h)+3*p+1*p)|count2r1.contains(count2r.get(h)-1*p); /f块结束for(int p1=0;p1=4;p1+=4 )/f1块起始/分析下一子即成四子的情形for(int h=0;hcount2r.size();h+ )if(jiqixiaziweizhi.contains(count2r.get(h)+10*(-1)&jiqixiaziweizhi.contains(count2r.get(h)+10*(1)&jiqixiaziweizhi.contains(count2r.get(h)+10*(2-p1)&(count2r1.contains(count2r.get(h)+10*(2-p1/4)+10)|count2r1.contains(count2r.get(h)+10*(-1-p1/4)-10)|(jiqixiaziweizhi.contains(count2r.get(h)+11*(-1)&jiqixiaziweizhi.contains(count2r.get(h)+11*(1)&jiqixiaziweizhi.contains(count2r.get(h)+11*(2-p1)&(count2r.get(h)+11*(2-p1/4)/10 -(count2r.get(h)+11*(-1-p1/4)/10!=4&(count2r1.contains(count2r.get(h)+11*(2-p1/4)+11)|count2r1.contains(count2r.get(h)+11*(-1-p1/4)-11) )|(jiqixiaziweizhi.contains(count2r.get(h)+9*(-1)&jiqixiaziweizhi.contains(count2r.get(h)+9*(1)&jiqixiaziweizhi.contains(count2r.get(h)+9*(2-p1)&(count2r.get(h)+9*(2-p1/4)/10 -(count2r.get(h)+9*(-1-p1/4)/10!=2&(count2r1.contains(count2r.get(h)+9*(2-p1/4)+9)|count2r1.contains(count2r.get(h)+9*(-1-p1/4)-9) )|(jiqixiaziweizhi.contains(count2r.get(h)+1*(-1)&jiqixiaziweizhi.contains(count2r.get(h)+1*(1)&jiqixiaziweizhi.contains(count2r.get(h)+1*(2-p1) )&(count2r.get(h)+1*(-1-p1/4)/10=(count2r.get(h)+1*(2-p1/4)/10 &(count2r1.contains(count2r.get(h)+1*(2-p1/4)+1)|count2r1.contains(count2r.get(h)+1*(-1-p1/4)-1) c1=h; w=4; /f1块结束int v = 0;/检测是否进入下面循环for(int p=-1;p=1;p+)/e块起始/分析下一子即成五子的情形for(int h=0;hcount2r.size();h+ )if(count2r.contains(count2r.get(h)&jiqixiaziweizhi.contains(count2r.get(h)+10*p)&jiqixiaziweizhi.contains(count2r.get(h)+20*p)&jiqixiaziweizhi.contains(count2r.get(h)+30*p)&jiqixiaziweizhi.contains(count2r.get(h)+40*p)|(count2r.contains(count2r.get(h)&jiqixiaziweizhi.contains(count2r.get(h)+11*p)&jiqixiaziweizhi.contains(count2r.get(h)+22*p)&jiqixiaziweizhi.contains(count2r.get(h)+33*p)&jiqixiaziweizhi.contains(count2r.get(h)+44*p)&(count2r.get(h)+44*p)*p/10-count2r.get(h)*p/10!=5 )|(count2r.contains(count2r.get(h)&jiqixiaziweizhi.contains(count2r.get(h)+9*p)&jiqixiaziweizhi.contains(count2r.get(h)+18*p)&jiqixiaziweizhi.contains(count2r.get(h)+27*p)&jiqixiaziweizhi.contains(count2r.get(h)+36*p)&(count2r.get(h)+36*p)*p/10-count2r.get(h)*p/10!=3 )|(count2r.contains(count2r.get(h)&jiqixiaziweizhi.contains(count2r.get(h)+1*p)&jiqixiaziweizhi.contains(count2r.get(h)+2*p)&jiqixiaziweizhi.contains(count2r.get(h)+3*p)&jiqixiaziweizhi.contains(count2r.get(h)+4*p) )&count2r.get(h)/10=(count2r.get(h)+4*p)/10 ) c1=h; v=5; /e块结束for(int p1=0;p1=5;p1+=5)/e1块起始/分析下一子即成五子的情形for(int h=0;hcount2r.size();h+ )if(jiqixiaziweizhi.contains(count2r.get(h)+10*(-1)&jiqixiaziweizhi.contains(count2r.get(h)+10*(1)&jiqixiaziweizhi.contains(count2r.get(h)+10*(2)&jiqixiaziweizhi.contains(count2r.get(h)+10*(3-p1)|(jiqixiaziweizhi.contains(count2r.get(h)+11*(-1)&jiqixiaziweizhi.contains(count2r.get(h)+11*(1)&jiqixiaziweizhi.contains(count2r.get(h)+11*(2)&jiqixiaziweizhi.contains(count2r.get(h)+11*(3-p1)&(count2r.get(h)+11*(3-p1/5)/10 -(count2r.get(h)+11*(-1-p1/5)/10!=5 )|(jiqixiaziweizhi.contains(count2r.get(h)+9*(-1)&jiqixiaziweizhi.contains(count2r.get(h)+9*(1)&jiqixiaziweizhi.contains(count2r.get(h)+9*(2)&jiqixiaziweizhi.contains(count2r.get(h)+9*(3-p1)&(count2r.get(h)+9*(3-p1/5)/10 -(count2r.get(h)+9*(-1-p1/5)/10!=3 )|(jiqixiaziweizhi.contains(count2r.get(h)+1*(-1)&jiqixiaziweizhi.contains(count2r.get(h)+1*(1)&jiqixiaziweizhi.contains(count2r.get(h)+1*(2)&jiqixiaziweizhi.contains(count2r.get(h)+1*(3-p1) )&(count2r.get(h)+1*(-1-p1/5)/10=(count2r.get(h)+1*(3-p1/5)/10 ) c1=h; v=5; /e1块结束for(int h=0;hcount2r.size();h+ )/e1块起始/分析下一子即成五子的情形if(jiqixiaziweizhi.contains(count2r.get(h)+10*(-1)&jiqixiaziweizhi.contains(count2r.get(h)+10*(1)&jiqixiaziweizhi.contains(count2r.get(h)+10*(-2)&jiqixiaziweizhi.contains(count2r.get(h)+10*(-3)|(jiqixiaziweizhi.contains(count2r.get(h)+11*(-1)&jiqixiaziweizhi.contains(count2r.get(h)+11*(1)&jiqixiaziweizhi.contains(count2r.get(h)+11*(-2)&jiqixiaziweizhi.contains(count2r.get(h)+11*(-3)&(count2r.get(h)+11*(1)/10-(count2r.get(h)+11*(-3)/10!=5 )|(jiqixiaziweizhi.contains(count2r.get(h)+9*(-1)&jiqixiaziweizhi.contains(count2r.get(h)+9*(1)&jiqixiaziweizhi.contains(count2r.get(h)+9*(-2)&jiqixiaziweizhi.contains(count2r.get(h)+9*(-3)&(count2r.get(h)+9*(1)/10- (count2r.get(h)+9*(-3)/10!=3 )|(jiqixiaziweizhi.contains(count2r.get(h)+1*(-1)&jiqixiaziweizhi.contains(count2r.get(h)+1*(1)&jiqixiaziweizhi.contains(count2r.get(h)+1*(-2)&jiqixiaziweizhi.contains(count2r.get(h)+1*(-3) )&(count2r.get(h)+1*(1)/10=(count2r.get(h)+1*(-3)/10 ) c1=h; v=5;/e int jiqi5=-1 ;/机器阻止对手成五子落子位置if(w!=4&v!=5|count50&v!=5)for(int p=-1;p=1;p+)/k块起始/阻止绿方成四子的情形for(int h=0;hcount2r1.size();h+ )if(count2r1.contains(count2r1.get(h)&listred.contains(count2r1.get(h)+10*p)&listred.contains(count2r1.get(h)+20*p)&listred.contains(count2r1.get(h)+30*p)|(count2r1.contains(count2r1.get(h)&listred.contains(count2r1.get(h)+11*p)&listred.contains(count2r1.get(h)+22*p)&listred.contains(count2r1.get(h)+33*p)&(count2r1.get(h)+33*p)*p/10-count2r1.get(h)*p/10!=4 )|(count2r1.contains(count2r1.get(h)&listred.contains(count2r1.get(h)+9*p)&lis

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论