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

📄 tetrics.java~1~

📁 俄罗斯方块游戏,大学时写的,支持单机及点对点网络对战!同时我还在里面加入了使用技能的功能!不过有一个缺点,呵呵好象代码写的不够严谨,所以现在性能很低,我一直也没有优化它!
💻 JAVA~1~
📖 第 1 页 / 共 2 页
字号:
            case 1:            //  [][][]    形            //    []            m_nPieceValue=120;//方块价值            //方块位置形状            m_prePiece[0]=new Square(middle,top-2,5);            m_prePiece[1]=new Square(middle,top-1,5);            m_prePiece[2]=new Square(middle-1,top-2,5);            m_prePiece[3]=new Square(middle+1,top-2,5);            break;            case 2:                //[][]        //          [][]     形            m_nPieceValue=200;//方块价值            //方块位置形状            m_prePiece[0]=new Square(middle,top-2,2);            m_prePiece[1]=new Square(middle-1,top-1,2);            m_prePiece[2]=new Square(middle,top-1,2);            m_prePiece[3]=new Square(middle+1,top-2,2);            break;            case 3:                //[][]  形        //      [][]            m_nPieceValue=200;//方块价值            //方块位置形状            m_prePiece[0]=new Square(middle,top-2,7);            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:                //[][]        //        [][]    形            m_nPieceValue=150;//方块价值            //方块位置形状            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:                //[][][]        //            [] 形            m_nPieceValue=180;//方块价值            //方块位置形状            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:                //[][][]        //        []      形            m_nPieceValue=180;//方块价值            //方块位置形状            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 transferPreToCur()   {        Square old[]=new Square[4];//声名新方块实例        for(int i=0;i<4;i++)        old[i]=new Square(-1,-1,0);//定位新生成的方块        for(int i=0;i<4;i++)        {            m_curPiece[i]=m_prePiece[i];//将预览区方块移到游戏区            m_nTotalPieces++;//下落的方块+1        }        m_bGameInPlay=moveSquares(old,m_curPiece);//若方块可移动则游戏可进行        //if(!m_bGameInPlay && m_tFrame.m_nNetStatus!=TFrame.NOCONNECT)m_tFrame.sendStr("GameOver:"+m_nTheScore);        //else if(!m_bGameInPlay && m_tFrame!=null)m_tFrame.insertScoreReport(m_nTheScore);   }   //去掉可以消去的行   private void removelines()   {        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]; //将游戏第k+1行状态赋给第k行                  m_nTheScore += m_nPieceValue; //分数增加                  m_nOldScore += m_nPieceValue; //累加分数增加            j-=1;//下移一行      }   }   //键盘响应   public boolean keyDown(Event evt,int nKey)   {//判断游戏是否在游戏区及游戏是否暂停   if(!m_bGameInPlay)return true;   if(m_bPaused)return true;   //按键响应   switch(nKey){        case 'a':        case Event.LEFT	://‘a ’键或左键            moveCurPiece(-1,0,false);//方块左移1单位            m_bNeedNewPiece=false;//不需生成新方块            repaint();//更新游戏画面            break;//跳出本次操作        case 'd':        case Event.RIGHT://‘d’键或右键            moveCurPiece(1,0,false);//方块右移1单位            m_bNeedNewPiece=false;            repaint();//更新游戏画面            break;//跳出本次操作        case 'w':        case Event.UP://‘w’键或上键            moveCurPiece(0,0,true);//方块不动            repaint();//更新游戏画面            break;//跳出本次操作        case 's':        case Event.DOWN://‘s’键或下键            while(moveCurPiece(0,-1,false));//方块持续下移            repaint();//更新游戏画面            break;//跳出本次操作       }       return true;   }  //结束游戏   public synchronized void stop()   {  b=-1;//游戏结束状态        if(m_theThread!=null)                m_theThread.stop();//线程停止           try{              for(int i=0;i<m_nCols;i++){//绘制游戏结实画面                for (int j = 0; j < m_nRows; j++) {                  if (i == 1) {                    if (j >= 2 && j <= 4) {                      m_nField[i][j] = 2; //当前游戏区全部为方块                      m_nOldField[i][j] = 0; //当前游戏区无方块                    }                    else {                      m_nField[i][j] = 0; //当前游戏区无方块                      m_nOldField[i][j] = -1; //当前游戏区全部为方块                    }                  }                  else if (i == 2) {                    if (j == 3) {                      m_nField[i][j] = 2; //当前游戏区有方块                      m_nOldField[i][j] = 0; //当前游戏区无方块                    }                    else {                      m_nField[i][j] = 0; //当前游戏区无方块                      m_nOldField[i][j] = -1; //上一页游戏区全部为方块                    }                  }                  else if (i == 3) {                    if ( (j >= 2 && j <= 4) || j == 8 || j == 11 || j == 14 || j == 17) {                      m_nField[i][j] = 2; //当前游戏区全部为方块                      m_nOldField[i][j] = 0; //当前游戏区无方块                    }                    else {                      m_nField[i][j] = 0; //当前游戏区无方块                      m_nOldField[i][j] = -1; //上一页游戏区全部为方块                    }                  }                  else if (i == 4) {                    if (j == 9 || j == 10 || j == 15 || j == 16) {                      m_nField[i][j] = 2; //当前游戏区全部为方块                      m_nOldField[i][j] = 0; //当前游戏区无方块                    }                    else {                      m_nField[i][j] = 0; //当前游戏区无方块                      m_nOldField[i][j] = -1; //上一页游戏区全部为方块                    }                  }                  else if (i == 5) {                    if (j == 9 || j == 10 || j == 15 || j == 16) {                      m_nField[i][j] = 2; //当前游戏区全部为方块                      m_nOldField[i][j] = 0; //上一页游戏区无方块                    }                    else {                      m_nField[i][j] = 0; //当前游戏区无方块                      m_nOldField[i][j] = -1; //上一页游戏区全部为方块                    }                  }                  else if (i == 6) {                    if ( (j == 2 || j == 4) || j == 8 || j == 11 || j == 14 || j == 17) {                      m_nField[i][j] = 2; //当前游戏区全部为方块                      m_nOldField[i][j] = 0; //上一页游戏区无方块                    }                    else {                      m_nField[i][j] = 0; //当前游戏区无方块                      m_nOldField[i][j] = -1; //上一页游戏区全部为方块                    }                  }                  else if (i == 7) {                    if (j >= 2 && j <= 4) {                      m_nField[i][j] = 2; //当前游戏区全部为方块                      m_nOldField[i][j] = 0; //上一页游戏区无方块                    }                    else {                      m_nField[i][j] = 0; //当前游戏区无方块                      m_nOldField[i][j] = -1; //上一页游戏区全部为方块                    }                  }                  else if (i == 8) {                    if (j == 4) {                      m_nField[i][j] = 2; //当前游戏区全部为方块                      m_nOldField[i][j] = 0; //上一页游戏区无方块                    }                    else {                      m_nField[i][j] = 0; //当前游戏区无方块                      m_nOldField[i][j] = -1; //上一页游戏区全部为方块                    }                  }                  else {                    m_nField[i][j] = 0; //当前游戏区无方块                    m_nOldField[i][j] = -1; //上一页游戏区全部为方块                  }                  repaint();//画结束画面                }              }              }                catch(ArrayIndexOutOfBoundsException a){}             m_theThread=null;//清空线程   }//暂停游戏   public synchronized void pause()   { b=1;//游戏暂停状态        if(m_theThread!=null)        {            try            {                m_theThread.suspend();//暂停线程                m_bPaused=true;//m_bPaused赋真值            }            catch(Exception e){e.printStackTrace();}        }   }//设置游戏难度   public void setPlayLevel(int nLevel)   {        m_nPlayLevel=nLevel;//将传来的参数设为难度        System.out.println("m_nPlayLevel="+m_nPlayLevel);//在cmd窗口中输出"m_nPlayLevel=难度"        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("等级:"+m_nPlayLevel,gx,gy);   }//得到游戏难度   public int getPlayLevel()   {        return m_nPlayLevel;//返回游戏难度值   }//添加随机行  public synchronized void addRandomLine()   {        int nRandom[]=new int[m_nCols];//定义整形数组,存放随机生成的方块        //布尔变量表示是否有方块        boolean bAllZero=true;        boolean bNoZero=true;        //循环判断本行方块状态        for(int i=0;i<m_nCols;i++)        {            nRandom[i]=(int)(7*Math.random());//随机生成一个数组存放新生成方块            if(nRandom[i]!=0)bAllZero=false;//若本行内有无快则bAllZero为假            else bNoZero=false;//若本行内都为方块则bNoZero为假        }        if(bAllZero)        {//如无方块            nRandom[(int)(m_nCols*Math.random())]=(int)(Math.random()*6+1);//在此行内随机选择一列,将其变为方块        }        else if(bNoZero)        {//如都为方块            nRandom[(int)(m_nCols*Math.random())]=0;//在此行内随机选择一列,将其变为无方块        }        //绘制随机产生的方块        for(int nCol=0;nCol<m_nCols;nCol++)            for(int nRow=m_nRows+3;nRow>0;nRow--)//            {                m_nField[nCol][nRow]=m_nField[nCol][nRow-1];//将原游戏区底0-22行游戏画面赋给新游戏画面的第1-23行            }        for(int nCol=0;nCol<m_nCols;nCol++)m_nField[nCol][0]=nRandom[nCol];//将随机产生的方块加入游戏区第0行        for(int i=0;i<4;i++)        {            m_curPiece[i].m_nRow++;//游戏区内正在下落方块上移1行        }   }}

⌨️ 快捷键说明

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