C大作业任务俄罗斯方块Word文档下载推荐.docx
- 文档编号:16027614
- 上传时间:2022-11-17
- 格式:DOCX
- 页数:13
- 大小:17.32KB
C大作业任务俄罗斯方块Word文档下载推荐.docx
《C大作业任务俄罗斯方块Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C大作业任务俄罗斯方块Word文档下载推荐.docx(13页珍藏版)》请在冰豆网上搜索。
HANDLEOut=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(Out,pos);
}
intsharp[15][8]=
{0,0,1,0,2,0,3,0},{0,0,0,1,0,2,0,3},
{0,0,1,0,0,1,1,1},
{0,0,1,0,1,1,1,2},{0,1,1,1,2,0,2,1},{0,0,0,1,0,2,1,2},{0,0,0,1,1,0,2,0},
{1,0,1,1,1,2,0,2},{0,0,0,1,1,1,2,1},{0,0,0,1,0,2,1,0},{0,0,1,0,2,0,2,1},
{0,0,0,1,1,1,1,2},{0,1,1,0,1,1,2,0},
{0,1,0,2,1,0,1,1},{0,0,1,0,1,1,2,1}
};
//这个2维数组是用来保存各个形状位置的
inthigh[15]={4,1,2,2,3,2,3,2,3,2,3,2,3,2,3};
//这个数组是用来保存各个形状高度的
classBox//俄罗斯方块类
private:
intmap[23][12];
//画面坐标
inthotpoint[2];
//热点(即当前活动的点,所有图形都是相当此点绘制的)
inttop;
//当前最高位置
intpoint;
//分数
intlevel;
//等级
intID;
//当前活动图形的ID号
public:
Box()//初始化
{
inti,j;
for(i=0;
i<
23;
i++)
for(j=0;
j<
12;
j++)
map[i][j]=0;
hotpoint[0]=0;
hotpoint[1]=5;
point=0;
level=1;
top=99;
ID=0;
}
voidDrawMap();
//画界面
intJudge(intx,inty);
//判断当前位置能否绘制图形
voidWelcome();
//欢迎界面
voidDrawBox(intx,inty,intnum);
//绘制图形
voidRedraw(intx,inty,intnum);
//擦除图形
voidRun();
//运行
voidTurn();
//转动方块
voidUpdataMap();
//更新画面
voidBox:
:
DrawMap()
inti;
for(i=0;
14;
SetPos(i*2,0);
cout<
<
"
■"
;
for(i=1;
=24;
SetPos(0,i);
SetPos(13*2,i);
SetPos(i*2,24);
cout<
i=15;
for(i=15;
=25;
=8;
SetPos(15*2,i);
SetPos(25*2,i);
SetPos(i*2,9);
SetPos(16*2,16);
cout<
俄罗斯方块"
SetPos(16*2,17);
分数:
point;
SetPos(16*2,18);
等级:
level;
DrawBox(intx,inty,intnum)
intnx,ny;
4;
{
nx=x+sharp[num][i*2];
ny=y+sharp[num][i*2+1];
SetPos((ny+1)*2,nx+1);
//利用sharp数组相对于点x,y绘制形状
Redraw(intx,inty,intnum)//擦除图形,原理同上
"
Turn()//转动图形,单纯的该ID而已
switch(ID)
caseA1:
ID=A2;
break;
caseA2:
ID=A1;
caseB:
ID=B;
caseC11:
ID=C12;
caseC12:
ID=C13;
caseC13:
ID=C14;
caseC14:
ID=C11;
caseC21:
ID=C22;
caseC22:
ID=C23;
caseC23:
ID=C24;
caseC24:
ID=C21;
caseD11:
ID=D12;
caseD12:
ID=D11;
caseD21:
ID=D22;
caseD22:
ID=D21;
Welcome()//欢迎界面
charx;
while
(1)
system("
cls"
);
■■■■■■■■■■■■■■■■■■■"
endl;
■俄罗斯方块控制台版(不闪屏)■"
■A,D左右移动S向下加速■"
■空格键转动方块■"
■何某制作■"
■XXID:
HapHapYear■"
■■"
■按1-9选择等级!
!
■"
■■"
SetPos(8,10);
x=getch();
if(x<
='
9'
&
x>
1'
)//设置等级
level=x-'
0'
break;
UpdataMap()//更新画面(关键)
intclear;
inti,j,k;
intflag;
i++)//更新map数组的信息
nx=hotpoint[0]+sharp[ID][i*2];
ny=hotpoint[1]+sharp[ID][i*2+1];
map[nx][ny]=1;
if(hotpoint[0]<
top)//如果热点高于顶点则更新顶点
top=hotpoint[0];
clear=0;
//消除的格数
for(i=hotpoint[0];
hotpoint[0]+high[ID];
flag=0;
for(j=0;
j++)//检测是否可以消除此行
{
if(map[i][j]==0)
{
flag=1;
break;
}
}
if(flag==0)//可以消除
for(k=i;
k>
=top;
k--)//从当前位置向上所有的点下移一行
if(k==0)//最高点特殊处理
for(j=0;
{
map[k][j]=0;
SetPos((j+1)*2,k+1);
cout<
}
else
{
map[k][j]=map[k-1][j];
if(map[k][j]==0)
cout<
else
}
top++;
//消除成功,最高点下移
clear++;
point+=clear*100;
Run()//运行游戏
inti=0;
intCount;
//计数器
inttempID;
inttemp;
srand((int)time(0));
ID=rand()%15;
//随机生成ID和下一个ID
tempID=rand()%15;
DrawBox(hotpoint[0],hotpoint[1],ID);
DrawBox(3,17,tempID);
Count=1000-level*100;
//等级决定计数
if(i>
=Count)//时间到
i=0;
//计数器清零
if(Judge(hotpoint[0]+1,hotpoint[1]))//如果下个位置无效(即到底)
UpdataMap();
ID=tempI
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 作业 任务 俄罗斯方块