我罗斯方块汇报(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;
}
}