⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ctetrics.java~50~

📁 JBuilder实现的具有单机
💻 JAVA~50~
📖 第 1 页 / 共 2 页
字号:
            m_prePiece[1]=new Square(middle+1,top-1,7);
            m_prePiece[2]=new Square(middle,top-1,7);
            m_prePiece[3]=new Square(middle-1,top-2,7);
            break;

            case 4:
                //XX  light blue;
            m_nPieceValue=100;
            m_prePiece[0]=new Square(middle-1,top-1,3);
            m_prePiece[1]=new Square(middle,top-1,3);
            m_prePiece[2]=new Square(middle-1,top-2,3);
            m_prePiece[3]=new Square(middle,top-2,3);
            break;

            case 5:
                //XXX  purle;
            m_nPieceValue=120;
            m_prePiece[0]=new Square(middle,top-1,6);
            m_prePiece[1]=new Square(middle-1,top-1,6);
            m_prePiece[2]=new Square(middle+1,top-1,6);
            m_prePiece[3]=new Square(middle+1,top-2,6);
            break;

            case 6:
                //XXX  yellow;
            m_nPieceValue=120;
            m_prePiece[0]=new Square(middle,top-1,4);
            m_prePiece[1]=new Square(middle+1,top-1,4);
            m_prePiece[2]=new Square(middle-1,top-1,4);
            m_prePiece[3]=new Square(middle-1,top-2,4);
            break;
        }

   }

   private void cnewPrePiece()
 {
      int middle=m_nCols/2;
      int top=m_nRows;

      switch((int)(Math.random()*7))
      {
          case 0:
              //XXXX  red;
          c_nPieceValue=100;
          c_prePiece[0]=new Square(middle-1,top-1,1);
          c_prePiece[1]=new Square(middle-2,top-1,1);
          c_prePiece[2]=new Square(middle,top-1,1);
          c_prePiece[3]=new Square(middle+1,top-1,1);
          break;

          case 1:
          //  X orange;
              //XXX
          c_nPieceValue=200;
          c_prePiece[0]=new Square(middle,top-2,5);
          c_prePiece[1]=new Square(middle,top-1,5);
          c_prePiece[2]=new Square(middle-1,top-2,5);
          c_prePiece[3]=new Square(middle+1,top-2,5);
          break;

          case 2:
              //XX  green;
          c_nPieceValue=180;
          c_prePiece[0]=new Square(middle,top-2,2);
          c_prePiece[1]=new Square(middle-1,top-1,2);
          c_prePiece[2]=new Square(middle,top-1,2);
          c_prePiece[3]=new Square(middle+1,top-2,2);
          break;

          case 3:
              //XX  blue;
          c_nPieceValue=180;
          c_prePiece[0]=new Square(middle,top-2,7);
          c_prePiece[1]=new Square(middle+1,top-1,7);
          c_prePiece[2]=new Square(middle,top-1,7);
          c_prePiece[3]=new Square(middle-1,top-2,7);
          break;

          case 4:
              //XX  light blue;
          c_nPieceValue=100;
          c_prePiece[0]=new Square(middle-1,top-1,3);
          c_prePiece[1]=new Square(middle,top-1,3);
          c_prePiece[2]=new Square(middle-1,top-2,3);
          c_prePiece[3]=new Square(middle,top-2,3);
          break;

          case 5:
              //XXX  purle;
          c_nPieceValue=120;
          c_prePiece[0]=new Square(middle,top-1,6);
          c_prePiece[1]=new Square(middle-1,top-1,6);
          c_prePiece[2]=new Square(middle+1,top-1,6);
          c_prePiece[3]=new Square(middle+1,top-2,6);
          break;

          case 6:
              //XXX  yellow;
          c_nPieceValue=120;
          c_prePiece[0]=new Square(middle,top-1,4);
          c_prePiece[1]=new Square(middle+1,top-1,4);
          c_prePiece[2]=new Square(middle-1,top-1,4);
          c_prePiece[3]=new Square(middle-1,top-2,4);
          break;
      }

 }


   private void transferPreToCur()
   {
        Square old[]=new Square[4];
        old[0]=old[1]=old[2]=old[3]=new Square(-1,-1,0);

        for(int i=0;i<4;i++)
        {
            m_curPiece[i]=m_prePiece[i];

        }

        m_bGameInPlay=moveSquares(old,m_curPiece);


   }

   private void ctransferPreToCur()
   {
        Square old[]=new Square[4];
        old[0]=old[1]=old[2]=old[3]=new Square(-1,-1,0);

        for(int i=0;i<4;i++)
        {

            c_curPiece[i]=c_prePiece[i];
        }

        c_bGameInPlay=cmoveSquares(old,c_curPiece);


   }

   //去掉可以消去的行
   private void removelines()
   {

    int count_move=0;
     outerlabel:
     for (int j = 0; j < m_nRows; j++) {
      for (int i = 0; i < m_nCols; i++) {
        if (m_nField[i][j] == 0) {
          continue outerlabel;
        }
      }
      for (int k = j; k < m_nRows - 1; k++) {
        for (int i = 0; i < m_nCols; i++) {
          m_nField[i][k] = m_nField[i][k + 1];
        }
      }
      j -= 1;

      if(count_move==0)
      new Sound("moveline.wav");

      count_move++;
      if(count_move>4) break;



    }
    if(count_move>0){
       caddRandomLine(count_move);
    }


   }

   private void cremovelines()
   {

    int count_move=0;
     outerlabel:
     for (int j = 0; j < m_nRows; j++) {
      for (int i = 0; i < m_nCols; i++) {
        if (m_nRivalField[i][j] == 0) {
          continue outerlabel;
        }
      }
      for (int k = j; k < m_nRows - 1; k++) {
        for (int i = 0; i < m_nCols; i++) {
          m_nRivalField[i][k] = m_nRivalField[i][k + 1];
        }
      }
      j -= 1;

      if(count_move==0)
      new Sound("moveline.wav");

      count_move++;
      if(count_move>4) break;

    }
    if(count_move>0){
      addRandomLine(count_move);
    }
  }



   public void setKey(char s[]){
     for(int i=0;i<s.length;i++)
       key[i]=s[i];
   }




   public boolean keyDown(Event evt,int nKey)
   {
   if(!m_bGameInPlay&&!c_bGameInPlay) return true;
   if(m_bPaused) return true;

        if (nKey==key[0]){
        moveCurPiece(-1,0,false);
        m_bNeedNewPiece=false;
        repaint();
        }
        else if(nKey==key[1]){
          moveCurPiece(1, 0, false);
          m_bNeedNewPiece = false;
          repaint();
        }
        else if(nKey==key[2]){
          moveCurPiece(0, 0, true);
          repaint();
        }

       else if(nKey==key[3]){
         if(this.m_bGameInPlay&&this.c_bGameInPlay)
         new Sound("down.WAV");    //when press the key of down
         while (moveCurPiece(0, -1, false));
         repaint();
       }

       switch(nKey){
        //case 'A':
        case Event.LEFT:
            cmoveCurPiece(-1,0,false);
            c_bNeedNewPiece=false;
            repaint();
            break;
        //case 'D':
        case Event.RIGHT:
            cmoveCurPiece(1,0,false);
            c_bNeedNewPiece=false;
            repaint();
            break;

        //case 'W':
        case Event.UP:
            cmoveCurPiece(0,0,true);
            repaint();
            break;

        //case 'S':
        case Event.DOWN:
            if(this.m_bGameInPlay&&this.c_bGameInPlay)
            new Sound("down.WAV");
            while(cmoveCurPiece(0,-1,false));
            repaint();
            break;
       }
       return true;
   }


   public synchronized void stop()
   {
        if(m_theThread!=null)
                m_theThread.stop();
        m_theThread=null;
   }

   public synchronized void pause()
   {
        if(m_theThread!=null)
        {
            try
            {
                m_theThread.suspend();
                m_bPaused=true;
            }
            catch(Exception e){e.printStackTrace();}
        }

   }

   public void setPlayLevel(int nLevel)
   {
        m_nPlayLevel=nLevel;


 /*       Graphics g=getGraphics();
        g.setFont(new Font("宋体",0,18));
        int gx=m_nSqLength;
        int gy=m_nSqLength*m_nRows/4+30;
        g.clearRect(gx,gy-25,XOFFSET-gx,25);
        g.drawString("Level:"+m_nPlayLevel,gx,gy);*/
   }

   public int getPlayLevel()
   {
        return m_nPlayLevel;
   }
   public synchronized void addRandomLine(int n)
   {
     // Sound s=new Sound("add.WAV");
     // s.start();

       if (n < 2)return;
       int add=n-1;

        int i;
        for(int nCol=0;nCol<m_nCols;nCol++)
            for(int nRow=m_nRows+3;nRow>add-1;nRow--)
            {
                m_nField[nCol][nRow]=m_nField[nCol][nRow-add];
            }

          for(i=0;i<4;i++)
          {
              m_curPiece[i].m_nRow+=add;
          }


        for(int k=0;k<add;k++){
        //pruduce random line
        int nRandom[] = new int[m_nCols];
        boolean bAllZero=true;
        boolean bNoZero=true;
        for(i=0;i<m_nCols;i++)
        {
            nRandom[i]=(int)(7*Math.random());
            if(nRandom[i]!=0) bAllZero=false;
            else bNoZero=false;
        }
        if(bAllZero)
        {
            nRandom[(int)(m_nCols*Math.random())]=(int)(Math.random()*6+1);
        }
        else if(bNoZero)
        {
            nRandom[(int)(m_nCols*Math.random())]=0;
        }

        //add random line
        for (int nCol = 0; nCol < m_nCols; nCol++)
            m_nField[nCol][k] = nRandom[nCol];
        }



   }

   public synchronized void caddRandomLine(int n)
  {
    // Sound s=new Sound("add.WAV");
    // s.start();

      if (n < 2)return;
      int add=n-1;

       int i;
       for(int nCol=0;nCol<m_nCols;nCol++)
           for(int nRow=m_nRows+3;nRow>add-1;nRow--)
           {
               m_nRivalField[nCol][nRow]=m_nRivalField[nCol][nRow-add];
           }
         for(i=0;i<4;i++)
         {
             c_curPiece[i].m_nRow+=add;
         }



       for(int k=0;k<add;k++){
       //pruduce random line
       int nRandom[] = new int[m_nCols];
       boolean bAllZero=true;
       boolean bNoZero=true;
       for(i=0;i<m_nCols;i++)
       {
           nRandom[i]=(int)(7*Math.random());
           if(nRandom[i]!=0) bAllZero=false;
           else bNoZero=false;
       }
       if(bAllZero)
       {
           nRandom[(int)(m_nCols*Math.random())]=(int)(Math.random()*6+1);
       }
       else if(bNoZero)
       {
           nRandom[(int)(m_nCols*Math.random())]=0;
       }

       //add random line
       for (int nCol = 0; nCol < m_nCols; nCol++)
           m_nRivalField[nCol][k] = nRandom[nCol];
       }



  }


}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -