我罗斯方块最终篇
作业描述 | 详情 |
---|---|
这个作业属于哪个课程 | 2020年面向对象程序设计 |
这个作业的要求在哪里 | 我罗斯方块最终篇 |
这个作业的目标 | 代码的 git 仓库链接,运行截图/运行视频,代码要点收获与心得,依然存在的问题。 |
作业正文 | 如下 |
参考资料 | 基于C实现双人俄罗斯方块 如何做一个超低配俄罗斯方块 |
项目地址 | Github |
小组成员 | 学号 |
卢浩玮 | 031902511 |
侯钦凯 | 031902505 |
运行截图
欢迎界面
暂停界面
胜负界面
代码要点
首先是方块的初始化吧,这点挺重要的,当时也难了我们小组很久,如何保持旋转后的方块的中心不变。
int Block_1form_1[8]={1,0,1,1,2,0,2,1};//分为4行4列,左行右列;
int Block_2form_1[8]={1,1,2,1,2,2,2,3};//11 21 22 23
int Block_2form_2[8]={1,1,1,2,2,1,3,1};//
int Block_2form_3[8]={1,2,2,0,2,1,2,2};//
int Block_2form_4[8]={3,1,3,2,2,2,1,2};//
int Block_3form_1[8]={0,2,1,0,1,1,1,2};//02 10 11 12
int Block_3form_2[8]={0,1,1,1,2,1,2,2};//
int Block_3form_3[8]={1,1,2,1,2,2,2,3};//
int Block_3form_4[8]={1,1,1,2,2,2,3,2};//
int Block_4form_1[8]={1,1,2,0,2,1,2,2};//11 20 21 22
int Block_4form_2[8]={1,1,2,1,3,1,2,2};//
int Block_4form_3[8]={2,0,2,1,2,2,3,1};//
int Block_4form_4[8]={1,1,2,1,3,1,2,0};//11 21 31 20
int Block_5form_1[8]={2,0,2,1,1,1,1,2};//20 21 11 12
int Block_5form_2[8]={0,0,1,0,1,1,2,1};//
int Block_6form_1[8]={0,1,0,2,1,0,1,1};//01 02 10 11
int Block_6form_2[8]={0,1,1,1,2,0,1,0};//01 11 20 10
int Block_7form_1[8]={1,0,1,1,1,2,1,3};//10 11 12 13
int Block_7form_2[8]={0,1,1,1,2,1,3,1};//
这是下落碰撞的判定部分:
void game::try_movedown()//下落碰撞判定
{
int f1=0,f2=0;
for(int i=21;i<51&&f1!=1;i++)
for(int j=6;j<30&&f1!=1;j++)
{
if(map[i][j]==1&&(map[i][j+1]==2||map[i][j+1]==3))
{
for(int k=21;k<51;k++)
for(int t=6;t<30;t++)
{
if(map[k][t]==1)
{
map[k][t]=2;
}
}
Block1.InitateBlock();
Block1.BuildBlock();
Block1.b_start();
f1=1;
}
}
for(int i=81;i<111&&f2!=1;i++)
for(int j=6;j<30&&f2!=1;j++)
{
if(map[i][j]==1&&(map[i][j+1]==2||map[i][j+1]==3))
{
for(int k=81;k<111;k++)
for(int t=6;t<30;t++)
{
if(map[k][t]==1)
{
map[k][t]=2;
}
}
Block2.InitateBlock();
Block2.BuildBlock();
Block2.b_start();
f2=1;
}
}
}
这是玩家一的消行判定:
int flag;
for (int j = 29;j>5;j--)
{
flag = 1;
for(int i=21;i<51;i+=2)
{
if(map[i][j]==0)
flag=0;
}
if(flag!=0)
{
for(int i=11;i<51;i+=2)
{
map[i][j]=0;
}
for(int k=j;k>6;k--)
{
for(int t=21;t<51;t++)
{
map[t][k]=map[t][k-1];
}
}
j++;
}
}
收获心得
依然存在的问题
不够美观,很多预想的功能都缺失了,像分数,下一个方块这样的,是比较简单,所以打算过两天更新一下,把这些补齐。
闪屏情况严重呀,我们小组这些作者都玩不太下去。。。回来看看同学们的,减缓一下这种闪屏情况。
后续更新中再添加一些对文件的操作,像背景,音乐什么的,给玩家一点更好的体验。