我罗斯方块汇报(1)

这个作业属于哪个课程 2020面向对象程序设计
这个作业要求在哪里 面向对象程序设计我罗斯方块汇报(1)
这个作业的目标 汇报自己这个阶段的开发进度。
作业正文 作业链接
项目地址 Tetris2020
小组成员 031902407林建斌
031902408林蒋辉

开发进程:

  初步设计了方块类,首先解决了方块种类的实现,通过暴力枚举将五种方块经过旋转后得到的15种方块类型列举出来,用id序号来它们,将游戏界面用二维数组表示a[][],赋值为0表示为空,赋值为1表示有方块,出现方块时将数组组b[4]分别赋值给a[][],通过改变b[]值可以实现方块的出现和消除。方块类型可以通过随机数取余得到。

class Square//声明俄罗斯方块的类
{
private:
 	int x,y;     //中心方块的x,y轴坐标    
 	int id;    //标记方块类型
 	int speed;    //俄罗斯方块移动的速度
 	int count;    //产生俄罗斯方块的总个数
public:
	Square(int xx=0,int yy=0,int iid=0){x=xx;y=yy;id=iid;} 
	void Square::make_square();
	void set_speed(); 
	void clear_square();
};
void Square::make_square()
{
 a[x][y]=b[0];    //中心方块位置的图形状态:1-有,0-无
 switch(id)      //共6大类,19种类型
 {
  case 0:         //田字方块
   {  
    a[x][y-1]=b[1];
    a[x+2][y-1]=b[2];
    a[x+2][y]=b[3];
    break;
   }
  case 1:         //横直线方块
   {  
    a[x-2][y]=b[1];
    a[x+2][y]=b[2];
    a[x+4][y]=b[3];
    break;
   }
  case 2:         //竖直线方块
   {  
    a[x][y-1]=b[1];
    a[x][y-2]=b[2];
    a[x][y+1]=b[3];
    break;
   }
  case 3:         //T字方块
   {  
    a[x-2][y]=b[1];
    a[x+2][y]=b[2];
    a[x][y+1]=b[3];
    break;
   }
  case 4:         //T字顺时针转90度方块
   {  
    a[x][y-1]=b[1];
    a[x][y+1]=b[2];
    a[x-2][y]=b[3];
    break;
   }
  case 5:         //T字顺时针转180度方块
   {  
    a[x][y-1]=b[1];
    a[x-2][y]=b[2];
    a[x+2][y]=b[3];
    break;
   }
  case 6:         //T字顺时针转270度方块
   {  
    a[x][y-1]=b[1];
    a[x][y+1]=b[2];
    a[x+2][y]=b[3];
    break;
   }
  case 7:         //Z字方块
   {  
    a[x][y+1]=b[1];
    a[x-2][y]=b[2];
    a[x+2][y+1]=b[3];
    break;
   }
  case 8:         //Z字顺时针转90度方块
   {  
    a[x][y-1]=b[1];
    a[x-2][y]=b[2];
    a[x-2][y+1]=b[3];
    break;
   }
  case 9:        //Z字顺时针转180度方块
   {  
    a[x][y-1]=b[1];
    a[x-2][y-1]=b[2];
    a[x+2][y]=b[3];
    break;
   }
  case 10:        //Z字顺时针转270度方块
   {  
    a[x][y+1]=b[1];
    a[x+2][y-1]=b[2];
    a[x+2][y]=b[3];
    break;
   }
  case 11:        //7字方块
   {  
    a[x][y-1]=b[1];
    a[x][y+1]=b[2];
    a[x-2][y-1]=b[3];
    break;
   }
  case 12:        //7字顺时针转90度方块
   {  
    a[x-2][y]=b[1];
    a[x-2][y+1]=b[2];
    a[x+2][y]=b[3];
    break;
   }
  case 13:        //7字顺时针转180度方块
   {  
    a[x][y-1]=b[1];
    a[x][y+1]=b[2];
    a[x+2][y+1]=b[3];
    break;
   }
  case 14:        //7字顺时针转270度方块
   {
    a[x-2][y]=b[1];
    a[x+2][y-1]=b[2];
    a[x+2][y]=b[3];
    break;
   }
}

由于开始比较仓促,时间准备不足,对于控制台的操作还不够了解,其他类的开发还没完全开始,下阶段将完善方块类,并开始其他类的进程。

对于如何双人游戏还不清楚逻辑,考虑先从单人游戏方向考虑。

posted @ 2020-05-22 19:51  Linyib  阅读(198)  评论(0编辑  收藏  举报