java吧 关注:1,258,368贴子:12,751,907
  • 10回复贴,共1

新手求助,java写的连连看,有错。。。貌似数组越界了,求大神~

取消只看楼主收藏回复

点击按钮消除那两个按钮的时候,会消不去,要点很多下才会消去,为什么呀,下面显示数组越界了。。。新手求助,2楼放代码。。。


IP属地:福建1楼2014-07-12 15:39回复
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    public class MyLLK implements ActionListener{
    int flag = 1,x1=0,y1=0,x2=0,y2=0;
    Frame f,f1;
    Button []b=new Button[30];
    Button exit;
    Button out,again,change;
    Panel p1,p2,p3;
    TextField T;
    Label l;
    int d[][]={
    {0,0,0,0,0,0,0},
    {0,0,0,0,0,0,0},
    {0,0,0,0,0,0,0},
    {0,0,0,0,0,0,0},
    {0,0,0,0,0,0,0},
    {0,0,0,0,0,0,0},
    {0,0,0,0,0,0,0},
    {0,0,0,0,0,0,0}
    };
    public void start(){
    l = new Label("Scole :");
    f = new Frame("MyLLK");
    T = new TextField();
    p1=new Panel();
    p2=new Panel();
    p3=new Panel();
    b[0]=new Button(String.valueOf(d[1][1]));
    b[1]=new Button(String.valueOf(d[1][2]));
    b[2]=new Button(String.valueOf(d[1][3]));
    b[3]=new Button(String.valueOf(d[1][4]));
    b[4]=new Button(String.valueOf(d[1][5]));
    b[5]=new Button(String.valueOf(d[2][1]));
    b[6]=new Button(String.valueOf(d[2][2]));
    b[7]=new Button(String.valueOf(d[2][3]));
    b[8]=new Button(String.valueOf(d[2][4]));
    b[9]=new Button(String.valueOf(d[2][5]));
    b[10]=new Button(String.valueOf(d[3][1]));
    b[11]=new Button(String.valueOf(d[3][2]));
    b[12]=new Button(String.valueOf(d[3][3]));
    b[13]=new Button(String.valueOf(d[3][4]));
    b[14]=new Button(String.valueOf(d[3][5]));
    b[15]=new Button(String.valueOf(d[4][1]));
    b[16]=new Button(String.valueOf(d[4][2]));
    b[17]=new Button(String.valueOf(d[4][3]));
    b[18]=new Button(String.valueOf(d[4][4]));
    b[19]=new Button(String.valueOf(d[4][5]));
    b[20]=new Button(String.valueOf(d[5][1]));
    b[21]=new Button(String.valueOf(d[5][2]));
    b[22]=new Button(String.valueOf(d[5][3]));
    b[23]=new Button(String.valueOf(d[5][4]));
    b[24]=new Button(String.valueOf(d[5][5]));
    b[25]=new Button(String.valueOf(d[6][1]));
    b[26]=new Button(String.valueOf(d[6][2]));
    b[27]=new Button(String.valueOf(d[6][3]));
    b[28]=new Button(String.valueOf(d[6][4]));
    b[29]=new Button(String.valueOf(d[6][5]));
    exit= new Button("exit");
    change = new Button("双击改变排列顺序");
    p1.setLayout(new GridLayout(6,5));
    p3.setLayout(null);
    p1.setSize(250, 300);
    p2.setSize(100, 200);
    p3.setSize(200, 100);
    p1.setBackground(Color.blue);
    p2.setBackground(Color.green);
    p3.setBackground(Color.green);
    p1.setLocation(130,100);
    p2.setLocation(0,100);
    p3.setLocation(100,100);
    T.setSize(100, 50);
    l.setSize(100,50);
    T.setLocation(230,2);
    l.setLocation(180,2);
    p1.add(b[0]);
    b[0].addMouseListener(new MouseAdapter(){
    public void mouseClicked(MouseEvent e)
    {
    LLkan(1,1);
    }
    });
    p1.add(b[1]);
    b[1].addMouseListener(new MouseAdapter(){
    public void mouseClicked(MouseEvent e)
    {
    LLkan(1,2);
    }
    });
    p1.add(b[2]);
    b[2].addMouseListener(new MouseAdapter(){
    public void mouseClicked(MouseEvent e)
    {
    LLkan(1,3);
    }
    });
    p1.add(b[3]);
    b[3].addMouseListener(new MouseAdapter(){
    public void mouseClicked(MouseEvent e)
    {
    LLkan(1,4);
    }
    });
    p1.add(b[4]);
    b[4].addMouseListener(new MouseAdapter(){
    public void mouseClicked(MouseEvent e)
    {
    LLkan(1,5);
    }
    });
    p1.add(b[5]);
    b[5].addMouseListener(new MouseAdapter(){
    public void mouseClicked(MouseEvent e)
    {
    LLkan(2,1);
    }
    });
    p1.add(b[6]);
    b[6].addMouseListener(new MouseAdapter(){
    public void mouseClicked(MouseEvent e)
    {
    LLkan(2,2);
    }
    });
    p1.add(b[7]);
    b[7].addMouseListener(new MouseAdapter(){
    public void mouseClicked(MouseEvent e)
    {
    LLkan(2,3);
    }
    });
    p1.add(b[8]);
    b[8].addMouseListener(new MouseAdapter(){
    public void mouseClicked(MouseEvent e)
    {
    LLkan(2,4);
    }
    });
    p1.add(b[9]);
    b[9].addMouseListener(new MouseAdapter(){
    public void mouseClicked(MouseEvent e)
    {
    LLkan(2,5);
    }
    });
    p1.add(b[10]);
    b[10].addMouseListener(new MouseAdapter(){
    public void mouseClicked(MouseEvent e)
    {
    LLkan(3,1);
    }
    });
    p1.add(b[11]);
    b[11].addMouseListener(new MouseAdapter(){
    public void mouseClicked(MouseEvent e)
    {
    LLkan(3,2);
    }
    });
    p1.add(b[12]);
    b[12].addMouseListener(new MouseAdapter(){
    public void mouseClicked(MouseEvent e)
    {
    LLkan(3,3);
    }
    });
    p1.add(b[13]);
    b[13].addMouseListener(new MouseAdapter(){
    public void mouseClicked(MouseEvent e)
    {
    LLkan(3,4);
    }
    });
    p1.add(b[14]);
    b[14].addMouseListener(new MouseAdapter(){
    public void mouseClicked(MouseEvent e)
    {
    LLkan(3,5);
    }
    });
    p1.add(b[15]);
    b[15].addMouseListener(new MouseAdapter(){
    public void mouseClicked(MouseEvent e)
    {
    LLkan(4,1);
    }
    });
    p1.add(b[16]);
    b[16].addMouseListener(new MouseAdapter(){
    public void mouseClicked(MouseEvent e)
    {
    LLkan(4,2);
    }
    });
    p1.add(b[17]);
    b[17].addMouseListener(new MouseAdapter(){
    public void mouseClicked(MouseEvent e)
    {
    LLkan(4,3);
    }
    });
    p1.add(b[18]);
    b[18].addMouseListener(new MouseAdapter(){
    public void mouseClicked(MouseEvent e)
    {
    LLkan(4,4);
    }
    });
    p1.add(b[19]);
    b[19].addMouseListener(new MouseAdapter(){
    public void mouseClicked(MouseEvent e)
    {
    LLkan(4,5);
    }
    });
    p1.add(b[20]);
    b[20].addMouseListener(new MouseAdapter(){
    public void mouseClicked(MouseEvent e)
    {
    LLkan(5,1);
    }
    });
    p1.add(b[21]);
    b[21].addMouseListener(new MouseAdapter(){
    public void mouseClicked(MouseEvent e)
    {
    LLkan(5,2);
    }
    });
    p1.add(b[22]);
    b[22].addMouseListener(new MouseAdapter(){
    public void mouseClicked(MouseEvent e)
    {
    LLkan(5,3);
    }
    });
    p1.add(b[23]);
    b[23].addMouseListener(new MouseAdapter(){
    public void mouseClicked(MouseEvent e)
    {
    LLkan(5,4);
    }
    });
    p1.add(b[24]);
    b[24].addMouseListener(new MouseAdapter(){
    public void mouseClicked(MouseEvent e)
    {
    LLkan(5,5);
    }
    });
    p1.add(b[25]);
    b[25].addMouseListener(new MouseAdapter(){
    public void mouseClicked(MouseEvent e)
    {
    LLkan(6,1);
    }
    });
    p1.add(b[26]);
    b[26].addMouseListener(new MouseAdapter(){
    public void mouseClicked(MouseEvent e)
    {
    LLkan(6,2);
    }
    });
    p1.add(b[27]);
    b[27].addMouseListener(new MouseAdapter(){
    public void mouseClicked(MouseEvent e)
    {
    LLkan(6,3);
    }
    });
    p1.add(b[28]);
    b[28].addMouseListener(new MouseAdapter(){
    public void mouseClicked(MouseEvent e)
    {
    LLkan(6,4);
    }
    });


    IP属地:福建3楼2014-07-12 15:41
    回复
      广告
      立即查看
      p1.add(b[29]);
      b[29].addMouseListener(new MouseAdapter(){
      public void mouseClicked(MouseEvent e)
      {
      LLkan(6,5);
      }
      });
      p2.add(exit);
      p2.add(change);
      exit.addMouseListener(new MouseAdapter(){
      public void mouseClicked(MouseEvent e){
      exit();
      }
      });
      change.addMouseListener(new MouseAdapter(){
      public void mouseClicked(MouseEvent e){
      change();
      }
      });
      p3.add(T);
      p3.add(l);
      f.add(p1);
      f.add(p2);
      f.add(p3);
      f.pack();
      f.setBounds(280,100,500,450);
      f.setVisible(true);
      }
      public void actionPerformed(ActionEvent e){
      if(e.getActionCommand().equals("Again"))
      {
      int d[][]={
      {0,0,0,0,0,0,0},
      {0,0,0,0,0,0,0},
      {0,0,0,0,0,0,0},
      {0,0,0,0,0,0,0},
      {0,0,0,0,0,0,0},
      {0,0,0,0,0,0,0},
      {0,0,0,0,0,0,0},
      {0,0,0,0,0,0,0}
      };
      this.d=d;
      f.setVisible(false);
      f1.setVisible(false);
      this.init();
      this.start();
      }
      else{
      System.exit(0);
      }
      }
      public void exit(){
      f1=new Frame("exit");
      f1.setLayout(new FlowLayout());
      f1.setLocation(150, 150);
      f1.setBackground(Color.orange);
      f1.setBounds(500, 200, 150, 150);
      f1.setVisible(true);
      out = new Button("Out");
      again = new Button("Again");
      f1.add(out);
      f1.add(again);
      f1.pack();
      out.addActionListener(this);
      again.addActionListener(this);
      }
      public void init(){
      int s=0,k,k1,k2,j;
      while(s<30)
      {
      k=(int) (Math.random()*30+2);
      for(j=1;j<=2;j++)
      {
      k1=(int)(Math.random()*6+1);
      k2=(int)(Math.random()*5+1);
      while(this.d[k1][k2]!=0)
      {
      k1=(int)(Math.random()*6+1);
      k2=(int)(Math.random()*5+1);
      }
      this.d[k1][k2]=k;
      s++;
      }
      }
      }
      public void change()
      {
      int i,j,k,o,p,n=0;
      for(i=1;i<=6;i++){
      for(j=1;j<=5;j++){
      if(this.d[i][j]!=0)
      n++;
      }
      }
      int d[][]={
      {0,0,0,0,0,0,0},
      {0,0,0,0,0,0,0},
      {0,0,0,0,0,0,0},
      {0,0,0,0,0,0,0},
      {0,0,0,0,0,0,0},
      {0,0,0,0,0,0,0},
      {0,0,0,0,0,0,0},
      {0,0,0,0,0,0,0}
      };
      this.d=d;
      while(n>0)
      {
      k=(int) (Math.random()*30+1);
      for(j=1;j<=2;j++)
      {
      o=(int)(Math.random()*6+1);
      p=(int)(Math.random()*5+1);
      while(this.d[o][p]!=0)
      {
      o=(int)(Math.random()*6+1);
      p=(int)(Math.random()*5+1);
      }
      this.d[o][p]=k;
      n--;
      }
      }
      f.setVisible(false);
      this.start();
      this.killzero();
      }
      void killzero()
      {
      int i,j,n=0;
      for(i=1;i<=6;i++)
      {
      for(j=1;j<=5;j++)
      {
      if(d[i][j]==0)
      b[n].setVisible(false);
      n++;
      }
      }
      }
      void LLkan(int x,int y){
      if(flag==1)
      {
      x1=x;
      y1=y;
      flag=2;
      }
      else
      {
      int turn = 0,a,b;
      a=x1;b=y1;
      x2=x;
      y2=y;
      if(d[x1][y1]==d[x2][y2])
      {
      int x0=x1,y0=y1;
      if(x2>=x1&&y2>=y1)
      {
      while(x1!=x2||y1!=y2)
      {
      if(d[x1+1][y1]==0)
      {
      x1++;
      if((x1-x0)<2)
      {
      turn++;
      x0=x1-1;
      y0=y1;
      }
      }
      else if(d[x1][y1+1]==0)
      {
      y1++;
      if((y1-y0)<2)
      {
      turn++;
      y0=y1-1;
      x0=x1;
      }
      }
      else if((x1+1)==x2&&y1==y2||x1==x2&&(y1+1)==y2)
      {
      turn=1;break;
      }
      else
      break;
      }
      if(turn<=3&&turn>0)
      {
      System.out.println(x1+"*"+y1+"*"+x2+"*"+y2);
      System.out.println(a+"@"+b);
      this.d[a][b]=0;
      this.d[x2][y2]=0;
      this.killzero();
      }
      }
      else if(x2>=x1&&y2<=y1)
      {
      while(x1!=x2||y1!=y2)
      {
      if(d[x1+1][y1]==0)
      {
      x1++;
      if(x1-x0<2)
      {
      turn++;
      x0=x1-1;
      y0=y1;
      }
      }
      else if(d[x1][y1-1]==0)
      {
      y1--;
      if((y0-y1)<2)
      {
      turn++;
      y0=y1+1;
      x0=x1;
      }
      }
      else if((x1+1)==x2&&y1==y2||x1==x2&&(y1-1)==y2)
      {
      turn=1;
      break;
      }
      else
      break;
      if(turn<=3&&turn>0)
      {
      this.d[a][b]=0;
      this.d[x2][y2]=0;
      this.killzero();
      }
      }
      }
      else if(x2<=x1&&y2<=y1)
      {
      while(x1!=x2||y1!=y2)
      {
      if(d[x1-1][y1]==0)
      {
      x1--;
      if(x0-x1<2)
      {
      turn++;
      x0=x1+1;
      y0=y1;
      }
      }
      else if(d[x1][y1-1]==0)
      {
      y1--;
      if((y0-y1)<2)
      {
      turn++;
      y0=y1+1;
      x0=x1;
      }
      }
      else if((x1-1)==x2&&y1==y2||x1==x2&&(y1-1)==y2)
      {
      turn=1;
      break;
      }
      if(turn<=3&&turn>0)
      {
      this.d[a][b]=0;
      this.d[x2][y2]=0;
      this.killzero();
      }
      }
      }
      else if(x2<=x1&&y2>=y1)
      {
      while(x1!=x2||y1!=y2)
      {
      if(d[x1-1][y1]==0)
      {
      x1--;
      if(x0-x1<2)
      {
      turn++;
      x0=x1+1;
      y0=y1;
      }
      }
      else if(d[x1][y1+1]==0)
      {
      y1++;
      if(y1-y0<2)
      {
      turn++;
      y0=y1-1;
      x0=x1;
      }
      }
      else if((x1-1)==x2&&y1==y2||x1==x2&&(y1+1)==y2)
      {
      turn=1;
      break;
      }
      else
      break;
      if(turn<=3&&turn>0)
      {
      this.d[a][b]=0;
      this.d[x2][y2]=0;
      this.killzero();
      }
      }
      }
      }
      flag=1;
      }
      }
      public static void main(String args[]){
      MyLLK M = new MyLLK();
      M.init();
      M.start();
      }
      }


      IP属地:福建4楼2014-07-12 15:43
      回复


        IP属地:福建5楼2014-07-12 15:45
        回复


          IP属地:福建6楼2014-07-12 15:45
          回复


            IP属地:福建7楼2014-07-12 15:49
            回复


              IP属地:福建8楼2014-07-12 15:49
              回复


                IP属地:福建9楼2014-07-12 15:54
                回复
                  广告
                  立即查看


                  IP属地:福建10楼2014-07-12 15:56
                  回复


                    IP属地:福建11楼2014-07-12 16:00
                    回复


                      IP属地:福建12楼2014-07-12 16:13
                      回复