| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
d4nd
9年前发布

java编写五子棋

MyJFrame.java  package 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 block  e.printStackTrace();  }            this.setVisible(true);                     };       //  boolean rekai = true ;        int select = 0 ;       boolean bool2=true ;  @Override  public void mouseClicked(MouseEvent e) {  // TODO Auto-generated method stub          // System.out.println(e.getX());          //  System.out.println(e.getY());  }    @Override    public 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&&x<=418&&y>=70&&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&&e.getX()<=495&&e.getY()>193&&e.getY()<228){   // 关于设计  JOptionPane.showMessageDialog(this, "本程序用JAVA设计") ;          }  if(e.getX()>=301&&e.getX()<=407&&e.getY()>466&&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&&e.getX()<=491&&e.getY()>101&&e.getY()<140){   //  设置设计   for(int x = 0 ; x<15 ; x++){  for(int y = 0 ; y < 15 ; y++){   if(allChess[x][y]==0&&select!=0){     bool2 = false ;               }        }    }   if(bool2==true){        String input = JOptionPane.showInputDialog( "选择谁先下棋:白方输入“1” ; 黑方输入  “2” ") ;           try{          select = Integer.parseInt(input);            if(select!=1&&select!=2){              JOptionPane.showMessageDialog(this, "您输入的不是1或2,请重新设置!");                select = 0;            }             }catch(Exception e1){                   JOptionPane.showMessageDialog(this, "输入有误,请重新输入!");             }          }else{          JOptionPane.showMessageDialog(this, "游戏比赛中,不能设置此项目!!!");          }   }      if(e.getX()>=426&&e.getX()<=495&&e.getY()>382&&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&&e.getX()<=495&&e.getY()>289&&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&&color == allChess[x+i][y]){  i++ ;  count++ ;  // System.out.println(count);  //System.out.println(i);  }  i = 1 ;  while(x-i>=0&&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&&color == allChess[x][y+i]){  i++ ;  count++ ;    }  i = 1 ;  while((y-i)>=0&&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&&(y-i)>=0&&color == allChess[x+i][y-i]){  i++ ;  count++ ;    }  i = 1 ;  while((x-i)>=0&&(y+i)<=14&&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&&(y-i)>=0&&color == allChess[x-i][y-i]){  i++ ;  count++ ;    }  i = 1 ;  while((x+i)<=14&&(y+i)<=14&&color == allChess[x+i][y+i]){  i++;  count++ ;  }  if(count>=5){  zhong = true ;  }          return zhong ;  }  @Override  public void mouseReleased(MouseEvent e) {  // TODO Auto-generated method stub  }  @Override  public void mouseEntered(MouseEvent e) {  // TODO Auto-generated method stub  }  @Override  public void mouseExited(MouseEvent e) {  // TODO Auto-generated method stub  }  }    Text01.java    package 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);  }       }