俄罗斯方块C语言程序的设计报告文档格式.docx

上传人:b****5 文档编号:8517757 上传时间:2023-05-11 格式:DOCX 页数:23 大小:64.01KB
下载 相关 举报
俄罗斯方块C语言程序的设计报告文档格式.docx_第1页
第1页 / 共23页
俄罗斯方块C语言程序的设计报告文档格式.docx_第2页
第2页 / 共23页
俄罗斯方块C语言程序的设计报告文档格式.docx_第3页
第3页 / 共23页
俄罗斯方块C语言程序的设计报告文档格式.docx_第4页
第4页 / 共23页
俄罗斯方块C语言程序的设计报告文档格式.docx_第5页
第5页 / 共23页
俄罗斯方块C语言程序的设计报告文档格式.docx_第6页
第6页 / 共23页
俄罗斯方块C语言程序的设计报告文档格式.docx_第7页
第7页 / 共23页
俄罗斯方块C语言程序的设计报告文档格式.docx_第8页
第8页 / 共23页
俄罗斯方块C语言程序的设计报告文档格式.docx_第9页
第9页 / 共23页
俄罗斯方块C语言程序的设计报告文档格式.docx_第10页
第10页 / 共23页
俄罗斯方块C语言程序的设计报告文档格式.docx_第11页
第11页 / 共23页
俄罗斯方块C语言程序的设计报告文档格式.docx_第12页
第12页 / 共23页
俄罗斯方块C语言程序的设计报告文档格式.docx_第13页
第13页 / 共23页
俄罗斯方块C语言程序的设计报告文档格式.docx_第14页
第14页 / 共23页
俄罗斯方块C语言程序的设计报告文档格式.docx_第15页
第15页 / 共23页
俄罗斯方块C语言程序的设计报告文档格式.docx_第16页
第16页 / 共23页
俄罗斯方块C语言程序的设计报告文档格式.docx_第17页
第17页 / 共23页
俄罗斯方块C语言程序的设计报告文档格式.docx_第18页
第18页 / 共23页
俄罗斯方块C语言程序的设计报告文档格式.docx_第19页
第19页 / 共23页
俄罗斯方块C语言程序的设计报告文档格式.docx_第20页
第20页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

俄罗斯方块C语言程序的设计报告文档格式.docx

《俄罗斯方块C语言程序的设计报告文档格式.docx》由会员分享,可在线阅读,更多相关《俄罗斯方块C语言程序的设计报告文档格式.docx(23页珍藏版)》请在冰点文库上搜索。

俄罗斯方块C语言程序的设计报告文档格式.docx

在游戏过程中,游戏界面右侧会有预览区。

由于在此游戏中存在多种不同的游戏方块,所以在游戏方块预览区域中显示随机生成的游戏方块有利于游戏玩家控制游戏的策略。

(2)、游戏方块控制功能。

通过各种条件的判断,实现对游戏方块的左移、右移、自由下落、旋转功能,以及行满消除行的功能。

(3)、游戏数据显示功能。

在游戏玩家进行游戏过程中,需要按照一定的游戏规则给玩家计算游戏分数。

例如,消除一行加100分,游戏分数达到一定数量之后,需要给游戏者进行等级的上升,每上升一个等级,游戏方块的下落速度将加快,游戏的难度将增加。

以上游戏数据均会在游戏界面右侧显示以提示玩家。

(4)、游戏信息提示功能。

玩家进入游戏后,将有对本游戏如何操作的友情提示。

(5)、游戏结束退出功能。

判断游戏结束条件,通过Esc键进行退出。

开始游戏

游戏方块预览功能

游戏方块控制功能

游戏数据显示功能

游戏信息提示功能

游戏结束退出功能

打开程序,运行,进入界面

游戏执行主流程图

2、界面设计

分为左右两个部分:

*左边为游戏面板

*右边有三部分:

游戏数据提示框、下一个方块提示框和功能提示框

3、重要功能函数设计

1)、声明俄罗斯方块的结构体

structTetris

{

intx;

//中心方块的x轴坐标

inty;

//中心方块的y轴坐标

intflag;

//标记方块类型的序号

intnext;

//下一个俄罗斯方块类型的序号

intspeed;

//俄罗斯方块移动的速度

intcount;

//产生俄罗斯方块的个数

intscore;

//游戏的分数

intlevel;

//游戏的等级

};

2)、函数原型声明

//光标移到指定位置

voidgotoxy(HANDLEhOut,intx,inty);

//制作游戏窗口

voidmake_frame();

//随机产生方块类型的序号

voidget_flag(structTetris*);

//制作俄罗斯方块

voidmake_tetris(structTetris*);

//打印俄罗斯方块

voidprint_tetris(HANDLEhOut,structTetris*);

//清除俄罗斯方块的痕迹

voidclear_tetris(HANDLEhOut,structTetris*);

//判断是否能移动,返回值为1,能移动,否则,不动

intif_moveable(structTetris*);

//判断是否满行,并删除满行的俄罗斯方块

voiddel_full(HANDLEhOut,structTetris*);

//开始游戏

voidstart_game();

3)、制作游戏窗口

voidmake_frame()

HANDLEhOut=GetStdHandle(STD_OUTPUT_HANDLE);

//定义显示器句柄变量

gotoxy(hOut,FrameX+Frame_width-5,FrameY-2);

//打印游戏名称

printf("

俄罗斯方块"

);

gotoxy(hOut,FrameX+2*Frame_width+3,FrameY+7);

//打印选择菜单

**********下一个方块:

"

gotoxy(hOut,FrameX+2*Frame_width+3,FrameY+13);

**********"

gotoxy(hOut,FrameX+2*Frame_width+3,FrameY+17);

↑键:

变体"

gotoxy(hOut,FrameX+2*Frame_width+3,FrameY+19);

空格:

暂停游戏"

gotoxy(hOut,FrameX+2*Frame_width+3,FrameY+15);

Esc:

退出游戏"

gotoxy(hOut,FrameX,FrameY);

//打印框角并记住该处已有图案

╔"

gotoxy(hOut,FrameX+2*Frame_width-2,FrameY);

╗"

gotoxy(hOut,FrameX,FrameY+Frame_height);

╚"

gotoxy(hOut,FrameX+2*Frame_width-2,FrameY+Frame_height);

╝"

a[FrameX][FrameY+Frame_height]=2;

a[FrameX+2*Frame_width-2][FrameY+Frame_height]=2;

for(i=2;

i<

2*Frame_width-2;

i+=2)

{

gotoxy(hOut,FrameX+i,FrameY);

═"

//打印上横框

}

gotoxy(hOut,FrameX+i,FrameY+Frame_height);

//打印下横框

a[FrameX+i][FrameY+Frame_height]=2;

//记住下横框有图案

for(i=1;

Frame_height;

i++)

gotoxy(hOut,FrameX,FrameY+i);

║"

//打印左竖框

a[FrameX][FrameY+i]=2;

//记住左竖框有图案

gotoxy(hOut,FrameX+2*Frame_width-2,FrameY+i);

//打印右竖框

a[FrameX+2*Frame_width-2][FrameY+i]=2;

//记住右竖框有图案

}

4)、制作俄罗斯方块

voidmake_tetris(structTetris*tetris)

a[tetris->

x][tetris->

y]=b[0];

//中心方块位置的图形状态:

1-有,0-无

switch(tetris->

flag)//共6大类,19种类型

case1:

//田字方块

{

y-1]=b[1];

x+2][tetris->

y-1]=b[2];

y]=b[3];

break;

case2:

//直线方块:

----

x-2][tetris->

y]=b[1];

y]=b[2];

x+4][tetris->

case3:

|

y-2]=b[2];

y+1]=b[3];

case4:

//T字方块

case5:

//T字顺时针转90度方块

y+1]=b[2];

case6:

//T字顺时针转180度方块

case7:

//T字顺时针转270度方块

case8:

//Z字方块

y+1]=b[1];

case9:

//Z字顺时针转90度方块

case10:

//Z字顺时针转180度方块

case11:

//Z字顺时针转270度方块

case12:

//7字方块

y-1]=b[3];

case13:

//7字顺时针转90度方块

case14:

//7字顺时针转180度方块

case15:

//7字顺时针转270度方块

case16:

//倒7字方块

case17:

//倒7字顺指针转90度方块

case18:

//倒7字顺时针转180度方块

case19:

//倒7字顺时针转270度方块

}

5)、判断是否可动

intif_moveable(structTetris*tetris)

if(a[tetris->

y]!

=0)//当中心方块位置上有图案时,返回值为0,即不可移动

return0;

else

if(//当为田字方块且除中心方块位置外,其他"

口"

字方块位置上无图案时,返回值为1,即可移动

(tetris->

flag==1&

&

(a[tetris->

y-1]==0&

y]==0))||

//或为直线方块且除中心方块位置外,其他"

flag==2&

y]==0&

flag==3&

y-2]==0&

y+1]==0))||

flag==4&

flag==5&

y+1]==0&

flag==6&

flag==7&

flag==8&

flag==9&

flag==10&

flag==11&

flag==12&

y-1]==0))||

flag==13&

flag==14&

flag==15&

flag==16&

flag==17&

flag==18&

flag==19&

y]==0)))

return1;

6)、随机产生俄罗斯方块类型的序号

voidget_flag(structTetris*tetris)

tetris->

count++;

//记住产生方块的个数

srand((unsigned)time(NULL));

//初始化随机数

if(tetris->

count==1)

flag=rand()%19+1;

//记住第一个方块的序号

next=rand()%19+1;

//记住下一个方块的序号

7)、打印俄罗斯方块

voidprint_tetris(HANDLEhOut,structTetris*tetris)

for(i=0;

4;

b[i]=1;

//数组b[4]的每个元素的值都为1

make_tetris(tetris);

//制作俄罗斯方块

for(i=tetris->

x-2;

i<

=tetris->

x+4;

i+=2)

for(j=tetris->

y-2;

j<

y+1;

j++)

if(a[i][j]==1&

j>

FrameY)

gotoxy(hOut,i,j);

□"

//打印边框内的方块

//打印菜单信息

gotoxy(hOut,FrameX+2*Frame_width+3,FrameY+1);

level:

%d"

tetris->

level);

gotoxy(hOut,FrameX+2*Frame_width+3,FrameY+3);

score:

score);

gotoxy(hOut,FrameX+2*Frame_width+3,FrameY+5);

speed:

%dms"

speed);

8)、清除俄罗斯方块的痕迹

voidclear_tetris(HANDLEhOut,structTetris*tetris)

b[i]=0;

//数组b[4]的每个元素的值都为0

=tetris-

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

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2