nobody?????????????????????????????????????????

解决方案 »

  1.   

    只能给一部分大家看看:
    //方块的设计与方法
    package jbterris;//创建包//?import java.awt.*;class Block//方块类
    {
      static int[][] pattern={
                       {0x0f00,0x4444,0x0f00,0x4444},
                       {0x04e0,0x0464,0x00e4,0x04c4},
                       {0x4620,0x6c00,0x4620,0x6c00},
                       {0x2640,0xc600,0x2640,0xc600},
                       {0x6220,0x1700,0x2230,0x0740},
                       {0x6440,0x0e20,0x44c0,0x8e00},
                       {0x0660,0x0660,0x0660,0x0660}
                         };//?  int blockType;//方块类型
      int turnState;//方块旋转状态
      int blockState;//方块的状态:1-falling |2-land
      int row,col;
      GameCanvas scr;  Block(GameCanvas scr)//构造函数
      {
        this.scr=scr;
        blockType=(int)(Math.random()*1000)%7;//随机确定方块类型//?
        turnState=(int)(Math.random()*1000)%4;//随机确定方块旋转状态
        blockState=1;//方块的初始状态为1
        row=scr.getInitRow();//行数为scr的初始行数
        col=scr.getInitCol();//列数为scr的初始列数
      }  public void reset()//产生新的方块
      {
        blockType=(int)(Math.random()*1000)%7;//随机确定方块类型
        turnState=(int)(Math.random()*1000)%4;//随机确定方块旋转状态
        blockState=1;//方块的初始状态为1
        row=scr.getInitRow();//返回初始行数
        col=scr.getInitCol();//返回初始列数
        dispBlock(1);
      }  public void leftTurn()//逆时针旋转
      {
        if(assertValid(blockType,(turnState+1)%4,row,col))
        {
          dispBlock(0);
          turnState=(turnState+1)%4;
          dispBlock(1);
        }
      }  public void leftMove()
      {
        if(assertValid(blockType,turnState,row,col-1))
        {
          dispBlock(0);
          col--;
          dispBlock(1);
        }
      }  public void rightMove()
      {
      if(assertValid(blockType,turnState,row,col+1))
      {
        dispBlock(0);
        col++;
        dispBlock(1);
      }
    }  public boolean fallDown()
      {
        if(blockState==2)return (false);
        if(assertValid(blockType,turnState,row-1,col))
        {
          dispBlock(0);
          row--;
          dispBlock(1);
          return(true);
        }
        else
    {
          blockState=2;
          dispBlock(2);
          return false;
        }
      }  boolean assertValid(int t,int s,int row,int col)
      {
        int k=0x8000;
        for(int i=0;i<4;i++)
    {
          for(int j=0;j<4;j++)
      {
            if((int)(pattern[t][s]&k)!=0)
    {
              int temp=scr.getScrArrXY(row-i,col+j);
              if(temp<0||temp==2)
                return false;
            }
            k=k>>1;
          }
        }
        return true;
      }  public synchronized void dispBlock(int s)//synchronized修饰一个非静态方法,则这个方法在被调用执行前,将把当前对象加锁
      //画出方块
      {
        int k=0x8000;//?
        for(int i=0;i<4;i++)
    {
          for(int j=0;j<4;j++)
      {
            if(((int)pattern[blockType][turnState]&k)!=0)
    {
              scr.drawUnit(row-i,col+j,s);
            }
            k=k>>1;
      }
        }
      }
    }