java吧 关注:1,255,328贴子:12,744,338
  • 12回复贴,共1

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

只看楼主收藏回复

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


1楼2014-07-12 15:39回复
    我是代码


    2楼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);
      }
      });


      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();
        }
        }


        4楼2014-07-12 15:43
        回复


          5楼2014-07-12 15:45
          回复


            6楼2014-07-12 15:45
            回复


              7楼2014-07-12 15:49
              回复


                8楼2014-07-12 15:49
                回复


                  9楼2014-07-12 15:54
                  回复


                    10楼2014-07-12 15:56
                    回复


                      11楼2014-07-12 16:00
                      回复


                        12楼2014-07-12 16:13
                        回复