C语言课程设计(俄罗斯方块)

实训报告实训名称:C语言课程设计(俄罗斯方块)院系:计算机科学与工程学院专业:物联网工程班级:152学号:092615219姓名:姚锋指导教师:靳颜清开课时间:2015至2016学年短学期一、需求分析1.1需求概述1.11市场需求:俄罗斯方块游戏是一个经典的小游戏,由于它操作简单,上到老人、下到小孩都可以玩,曾广受人们欢迎。现在游戏之风盛行,一款款画面精美、音乐动听的大型游戏就在我们身边,但需要投入大量的人力、物力去开发,还需要发大量的精力去玩,而且特别容易上瘾。现在的人,也许大都不屑于玩俄罗斯方块这种“弱智”的游戏,但仔细观察,我们身边还是有人玩这个的。俄罗斯方块也确实是一个很不错的休闲游戏。1.12对功能需求:功能界面:游戏开始,音乐响起,让人感觉到是一种享受,这时,由计算机随机产生所定义的图形,记录所产生的图形的形状的数目,无操作时,方块竖直缓慢下落,图形在接触障碍物之前,可以由键盘控制向左右下移动,向下加速或翻转,可以进行暂停,当某一行被下落的方块填满后消除并计分。1.2功能简介1.21.随机产生俄罗斯方块图形1.22.方向键和wasdrz实现下落方块的左移、右移、加速下落、变形、交换等基本操作1.23.正确判断游戏结束1.24.对游戏成绩进行记分注:运行环境windows7控制台(80*43);二、总体设计2.1开发环境与工具开发环境:CodeBlocks工具:prosesson2.2游戏总模块流程图(见图2.2)图2.2游戏总模块流程图三、详细设计3.1模块介绍(创建,预览下一个方块和删除方块模块)3.11开始动画和文字显示(见图3.11)图3.11开始动画在本模板下,首先在界面底部会同时出现两个简单的小人迎面相遇,接着,过程中会等待按键触发,等待过程中Tetris字样会进行颜色变化,实现闪动效果,按任意键即可开始游戏。3.12随机创建方块的代码函数名:intcreat_block()函数描述:制作方块函数函数功能:实现俄罗斯方块制作方块的功能输入:NULL输出:NULL备注:实现方块的制作在本模块下,我们要完成当前方块的创建和下一个方块的提前创建与预览。图3.12随机创建方块3.13删除方块函数名:intdelete_block(intx,inty,intshape,intstatus)函数描述:在指定位置消除指定方块函数函数功能:实现俄罗斯方块消除方块的功能输入:x,y,shape,status输出:NULL备注:实现消除方块,为下面的消行做铺垫在本模块下,我们要根据操作者对方块发出的移动指令,对之前位置的方块做正确的删除。图3.13删除方块流程图3.14结束界面当操作者在按下N(n)键之后,屏幕上会出现lose字幕和一堆由1与0两个数字组成的乱码,表明游戏已经结束,最后按任意键退出整个游戏界面。3.2核心代码3.21随机创建方块的代码intcreat_block(){shape=block_next_shape;status=block_next_status;block_colour=block_next_colour;block_x=17;block_y=1;next_block();block_xj(shape);}intnext_block(){delete_block(NEXT_BLOCK_X,NEXT_BLOCK_Y,block_next_shape,block_next_status);block_next_colour=rand()%(0x10);block_next_shape=rand()%7;block_next_status=rand()%4;if(block_next_colour==0x00){block_next_colour=0x0f;}printf_block(NEXT_BLOCK_X,NEXT_BLOCK_Y,block_next_shape,block_next_status,block_next_colour);}3.22删除方块的代码intdelete_block(intx,inty,intshape,intstatus){inti,j;for(i=0;i<4;i++){for(j=0;j<4;j++){cursor(j+x,i+y);if(blocks[shape][status][i][j]==1){SetConsoleTextAttribute(handle,0x00);printf("■");}}}}3.23开始动画以及开始文字intdh(){intk1=0,k2=0,k3=0,k4=0;clock_tnow3;clock_tlast3;last3=clock();intk5=0,k6=0,k7=0,k8=0;clock_tnow4;clock_tlast4;last4=clock();inti=0;while(i<7){now3=clock();while(now3-last3>0.35f*CLOCKS_PER_SEC){now3=clock();while(now3-last3<0.01f*CLOCKS_PER_SEC){now3=clock();}last3=clock();cursor(7+1+k1,16-k1);SetConsoleTextAttribute(handle,0x00);printf("");k1++;cursor(7+1+k2,17-k2);SetConsoleTextAttribute(handle,0x00);printf("");k2++;cursor(6+1+k3,18-k3);SetConsoleTextAttribute(handle,0...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供参考,付费前请自行鉴别。
3、如文档内容存在侵犯商业秘密、侵犯著作权等,请点击“举报”。

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

客服邮箱:

biganzikefu@outlook.com

所有的文档都被视为“模板”,用于写作参考,下载前须认真查看,确认无误后再购买;

文档大部份都是可以预览的,笔杆子文库无法对文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;

文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为依据;

如果您还有什么不清楚的或需要我们协助,可以联系客服邮箱:

biganzikefu@outlook.com

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

确认删除?