C大作业任务俄罗斯方块Word文档下载推荐.docx

上传人:b****5 文档编号:16027614 上传时间:2022-11-17 格式:DOCX 页数:13 大小:17.32KB
下载 相关 举报
C大作业任务俄罗斯方块Word文档下载推荐.docx_第1页
第1页 / 共13页
C大作业任务俄罗斯方块Word文档下载推荐.docx_第2页
第2页 / 共13页
C大作业任务俄罗斯方块Word文档下载推荐.docx_第3页
第3页 / 共13页
C大作业任务俄罗斯方块Word文档下载推荐.docx_第4页
第4页 / 共13页
C大作业任务俄罗斯方块Word文档下载推荐.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

C大作业任务俄罗斯方块Word文档下载推荐.docx

《C大作业任务俄罗斯方块Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C大作业任务俄罗斯方块Word文档下载推荐.docx(13页珍藏版)》请在冰豆网上搜索。

C大作业任务俄罗斯方块Word文档下载推荐.docx

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 金融投资

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1