欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

java编写五子棋,java五子棋,MyJFrame.jav

来源: javaer 分享于  点击 14595 次 点评:132

java编写五子棋,java五子棋,MyJFrame.jav


MyJFrame.javapackage chi1.JFrame;import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.Toolkit;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;import javax.imageio.ImageIO;import javax.swing.JFrame;import javax.swing.JOptionPane;public class MyJFrame extends JFrame implements MouseListener {private static final long serialVersionUID = -46847020668994298L;BufferedImage buff = null;   // 声明对象,为获取图片     int x , y ;     // 保存所有的点多的坐标     int[][] allChess = new int[15][15] ;  // 用一个二维数组保存黑白子信息。     String show1 = "" ;   // 默认黑方下棋     //默认下黑子 , 判断下什么棋子。bool=true 下黑子    ; bool=false 下白子    // boolean bool = true ;      // 判断是否赢了比赛, 如果赢了比赛, 就不能再继续下棋了,     boolean win =true ;       public MyJFrame(){     int width = Toolkit.getDefaultToolkit().getScreenSize().width ;               int height = Toolkit.getDefaultToolkit().getScreenSize().height ;             this.setTitle("五子棋");                this.setResizable(false);              this.setSize(500,550 );              this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);              this.setLocation((width-500)/2 , (height-550)/2);                  this.repaint();          this.addMouseListener(this);               try {buff = ImageIO.read(new File("e:/wzq.jpg" ));  } catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}          this.setVisible(true);                };     //  boolean rekai = true ;      int select = 0 ;     boolean bool2=true ;@Overridepublic void mouseClicked(MouseEvent e) {// TODO Auto-generated method stub        // System.out.println(e.getX());        //  System.out.println(e.getY());}@Overridepublic void mousePressed(MouseEvent e) {boolean bool = true ;for(int x = 0 ; x<15 ; x++){for(int y = 0 ; y < 15 ; y++){ if(allChess[x][y]==0){       if(select==2){      bool = true ;     }else if(select==1){      bool = false;     }      }}}if(win==true){     // TODO Auto-generated method stub              x = e.getX();                   y = e.getY();                if(x>=65&amp;&amp;x<=418&amp;&amp;y>=70&amp;&amp;y<=430){          x =  (x-60)/25;     //得到距离附近的交叉点X轴坐标          y =  (y-70)/25;              if(allChess[x][y]==0){             if(bool==true){       //默认下黑棋子先          allChess[x][y] =1;                show1 = "白方下棋";   // 提示下步棋下白色             bool = false ;    // 修改标记, 下步棋应该由白方下             select = 1 ;          }else{           allChess[x][y]= 2 ;              show1 = "黑方下棋";           bool = true;           select = 2 ;          }          this.repaint();              int zong = 0  ;          for(int i = 0 ; i < 15 ; i++ ){      for(int k = 0 ; k < 15 ; k++){      if(allChess[i][k]!=0){          zong++ ;        }      }      }           if(zong==225){          JOptionPane.showMessageDialog(this, "游戏平局,请点击“重新开始”重新比过!");             }          boolean heng1 = this.myCheck1() ;  //横  false          boolean heng2 = this.myCheck2() ;           boolean heng3 = this.myCheck3() ;            boolean heng4 = this.myCheck4() ;          if(heng1==true||heng2==true||heng3==true||heng4==true){            JOptionPane.showMessageDialog(this,"游戏结束:" +                    (allChess[x][y]==1?"黑方":"白方")+"胜利");            win = false ;            }                   }           }} if(e.getX()>=427&amp;&amp;e.getX()<=495&amp;&amp;e.getY()>193&amp;&amp;e.getY()<228){   // 关于设计JOptionPane.showMessageDialog(this, "本程序用JAVA设计") ;        }if(e.getX()>=301&amp;&amp;e.getX()<=407&amp;&amp;e.getY()>466&amp;&amp;e.getY()<532){    // 重新开始JOptionPane.showMessageDialog(this, "重新游戏") ;for(int i = 0 ; i < 15 ; i++ ){for(int k = 0 ; k < 15 ; k++){       allChess[i][k] = 0 ; }}   show1 = "" ;bool = true ;win =true ;select = 0 ;bool2 = true ;this.repaint() ;     }if(e.getX()>=425&amp;&amp;e.getX()<=491&amp;&amp;e.getY()>101&amp;&amp;e.getY()<140){   //  设置设计 for(int x = 0 ; x<15 ; x++){for(int y = 0 ; y < 15 ; y++){ if(allChess[x][y]==0&amp;&amp;select!=0){   bool2 = false ;             }      }  } if(bool2==true){      String input = JOptionPane.showInputDialog( "选择谁先下棋:白方输入“1” ; 黑方输入“2” ") ;         try{        select = Integer.parseInt(input);          if(select!=1&amp;&amp;select!=2){            JOptionPane.showMessageDialog(this, "您输入的不是1或2,请重新设置!");              select = 0;          }           }catch(Exception e1){                 JOptionPane.showMessageDialog(this, "输入有误,请重新输入!");           }        }else{        JOptionPane.showMessageDialog(this, "游戏比赛中,不能设置此项目!!!");        } }    if(e.getX()>=426&amp;&amp;e.getX()<=495&amp;&amp;e.getY()>382&amp;&amp;e.getY()<425){   // 结束设计int a = JOptionPane.showConfirmDialog(this, "游戏是否结束?") ;    if(a==0){System.exit(0);   } if(a==1){ JOptionPane.showMessageDialog(this, "欢迎您回到游戏来!");  } if(a==2){ JOptionPane.showMessageDialog(this, "小样, 请别再耍我!");    } }if(e.getX()>=433&amp;&amp;e.getX()<=495&amp;&amp;e.getY()>289&amp;&amp;e.getY()<334){    //游戏说明JOptionPane.showMessageDialog(this, "五子棋游戏规则: 谁先把5颗棋子相连,谁就是赢家") ;    }} public void paint(Graphics g){          BufferedImage B1 = new BufferedImage(500 , 550 ,BufferedImage.TYPE_INT_ARGB);        // 定义一个新的缓冲图片       Graphics g2 = B1.createGraphics();      g2.drawImage(buff, 0, 20, this);     // 将图片显示在窗体上      g2.setColor(Color.BLACK);           // 设置画笔颜色为黑色      g2.fillOval(135, 144, 6, 6);      g2.fillOval(334, 144, 6, 6);      //  画几个定点      g2.fillOval(138, 342, 6, 6);      g2.fillOval(334, 342, 6, 6);      g2.fillOval(236, 242, 6, 6);       g2.setFont(new Font("黑体" , Font.BOLD , 20));         g2.drawString("游戏信息:"+show1, 83, 49);   //显示当前由哪一方下棋      g2.drawString("黑方:", 65, 473);      g2.drawString("白方:", 62, 518);      for(int i = 0 ; i < 15 ; i++ ){    // 循环判断      for(int j = 0 ; j < 15 ; j++){      if(allChess[i][j]==1){          //黑子      int tempX = i*25 + 63 ;         int tempY = j*25 + 70 ;        g2.fillOval(tempX-8, tempY-8, 16,16);         }      if(allChess[i][j]==2){           //白子      int tempX = i*25 + 63 ;        int tempY = j*25 + 70 ;        g2.setColor(Color.WHITE);          g2.fillOval(tempX-8, tempY-8, 16,16);              g2.setColor(Color.BLACK);          g2.drawOval(tempX-8, tempY-8, 16, 16);       }      }      }       g.drawImage(B1, 0, 5, this);   // 把B1这张图片在窗体显示出来      } public boolean myCheck1() {                // 判断横向是否有五子相连int count = 1;   boolean heng = false ;  // int color = allChess[x][y] ;  // 判断颜色 // TODO Auto-generated method stub      int i = 1 ;while(x+i<=14&amp;&amp;color == allChess[x+i][y]){i++ ;count++ ;// System.out.println(count);//System.out.println(i);}i = 1 ;while(x-i>=0&amp;&amp;color == allChess[x-i][y]){i++;count++ ;}if(count>=5){heng = true ;}        return heng ;}public boolean myCheck2() {             // 判断纵向是否有五子相连int count = 1; boolean zhong = false ;  int color = allChess[x][y] ;// TODO Auto-generated method stub      int i = 1 ;while((y+i)<=14&amp;&amp;color == allChess[x][y+i]){i++ ;count++ ;  }i = 1 ;while((y-i)>=0&amp;&amp;color == allChess[x][y-i]){i++;count++ ;}if(count>=5){zhong = true ;  }         return zhong ;}public boolean myCheck3() {            // 判断右斜向是否有五子相连int count = 1; boolean zhong = false ;  int color = allChess[x][y] ;// TODO Auto-generated method stub      int i = 1 ;while((x+i)<=14&amp;&amp;(y-i)>=0&amp;&amp;color == allChess[x+i][y-i]){i++ ;count++ ;  }i = 1 ;while((x-i)>=0&amp;&amp;(y+i)<=14&amp;&amp;color == allChess[x-i][y+i]){i++;count++ ;}if(count>=5){zhong = true ;}        return zhong ;}public boolean myCheck4() {              // 判左斜向是否有五子相连int count = 1; boolean zhong = false ;  int color = allChess[x][y] ;// TODO Auto-generated method stub      int i = 1 ;while((x-i)>=0&amp;&amp;(y-i)>=0&amp;&amp;color == allChess[x-i][y-i]){i++ ;count++ ;  }i = 1 ;while((x+i)<=14&amp;&amp;(y+i)<=14&amp;&amp;color == allChess[x+i][y+i]){i++;count++ ;}if(count>=5){zhong = true ;}        return zhong ;}@Overridepublic void mouseReleased(MouseEvent e) {// TODO Auto-generated method stub}@Overridepublic void mouseEntered(MouseEvent e) {// TODO Auto-generated method stub}@Overridepublic void mouseExited(MouseEvent e) {// TODO Auto-generated method stub}}Text01.javapackage chi1.Text;import chi1.JFrame.MyJFrame;public class Text01 {/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stub         MyJFrame jf =  new MyJFrame() ;       // String b1 = JOptionPane.showInputDialog("请输入你的名字:") ;        //int b =   JOptionPane.showConfirmDialog(jf, "我的信息:" + b1);} }
相关栏目:

用户点评