C语言课程设计俄罗斯方块_第1页
C语言课程设计俄罗斯方块_第2页
C语言课程设计俄罗斯方块_第3页
C语言课程设计俄罗斯方块_第4页
C语言课程设计俄罗斯方块_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实训报告实训报告实训名称: c语言课程设计(俄罗斯方块) 院 系: 计算机科学与工程学院 专 业: 物联网工程 班级: 152 学 号: 092615219 姓 名: 姚锋 指导教师: 靳颜清 开课时间: 2015 至 2016 学年短学期一、需求分析1.1 需求概述1.11市场需求:俄罗斯方块游戏是一个经典的小游戏,由于它操作简单,上到老人、下到小孩都可以玩,曾广受人们欢迎。现在游戏之风盛行,一款款画面精美、音乐动听的大型游戏就在我们身边,但需要投入大量的人力、物力去开发,还需要发大量的精力去玩,而且特别容易上瘾。现在的人,也许大都不屑于玩俄罗斯方块这种“弱智”的游戏,但仔细观察,我们身边还

2、是有人玩这个的。俄罗斯方块也确实是一个很不错的休闲游戏。1.12 对功能需求: 功能界面:游戏开始,音乐响起,让人感觉到是一种享受,这时,由计算机随机产生所定义的图形,记录所产生的图形的形状的数目,无操作时,方块竖直缓慢下落,图形在接触障碍物之前,可以由键盘控制向左右下移动,向下加速或翻转,可以进行暂停,当某一行被下落的方块填满后消除并计分。 1.2 功能简介 1.21.随机产生俄罗斯方块图形 1.22.方向键和wasdrz实现下落方块的左移、右移、加速下落、变形、交换等基本操作 1.23.正确判断游戏结束 1.24.对游戏成绩进行记分 注:运行环境 windows 7 控制台(80 * 43

3、);二、总体设计2.1 开发环境与工具 开发环境:codeblocks 工具:prosesson2.2 游戏总模块流程图(见图2.2) 图2.2 游戏总模块流程图三、详细设计 3.1 模块介绍(创建,预览下一个方块和删除方块模块) 3.11 开始动画和文字显示(见图3.11) 图 3.11 开始动画在本模板下,首先在界面底部会同时出现两个简单的小人迎面相遇,接着,过程中会等待按键触发,等待过程中tetris字样会进行颜色变化,实现闪动效果,按任意键即可开始游戏。 3.12 随机创建方块的代码 函 数 名: int creat_block() 函数描述: 制作方块函数 函数功能: 实现俄罗斯方块

4、制作方块的功能 输 入: null 输 出: null 备 注: 实现方块的制作 在本模块下,我们要完成当前方块的创建和下一个方块的提前创建与预览。 图3.12 随机创建方块 3.13 删除方块 函 数 名: int delete_block(int x,int y,int shape ,int status ) 函数描述: 在指定位置消除指定方块函数 函数功能: 实现俄罗斯方块消除方块的功能 输 入: x,y,shape,status 输 出: null 备 注: 实现消除方块 ,为下面的消行做铺垫 在本模块下,我们要根据操作者对方块发出的移动指令,对之前位置的方块做正确的删除。 图3.13

5、 删除方块流程图 3.14 结束界面 当操作者在按下n(n)键之后,屏幕上会出现lose字幕和一堆由1与0两个数字组成的乱码,表明游戏已经结束,最后按任意键退出整个游戏界面。 3.2 核心代码 3.21 随机创建方块的代码int creat_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); int next_block() delete_block(next_

6、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 删除方块

7、的代码int delete_block(int x,int y,int shape ,int status ) int i,j; for(i=0;i<4;i+) for(j=0;j<4;j+) cursor(j+x,i+y); if(blocksshapestatusij=1) setconsoletextattribute(handle ,0x00); printf(""); 3.23 开始动画以及开始文字int dh() int k1=0,k2=0,k3=0,k4=0;clock_t now3;clock_t last3;last3 =clock(); in

8、t k5=0,k6=0,k7=0,k8=0;clock_t now4;clock_t last4;last4 =clock(); int i=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("

9、; ");k1+; cursor(7+1+k2,17-k2);setconsoletextattribute(handle ,0x00);printf(" ");k2+; cursor(6+1+k3,18-k3);setconsoletextattribute(handle ,0x00);printf(" ");k3+; cursor(6+1+k4,19-k4);setconsoletextattribute(handle ,0x00);printf(" ");k4+; cursor(7+1+k1,16-k1);setcon

10、soletextattribute(handle ,0x0a);printf("-"); cursor(7+1+k2,17-k2);setconsoletextattribute(handle ,0x0a);printf("0"); cursor(6+1+k3,18-k3);setconsoletextattribute(handle ,0x0a);printf("< y >"); cursor(6+1+k4,19-k4);setconsoletextattribute(handle ,0x0a);printf("

11、;/ "); cursor(7+2+18-k5,16-k5);setconsoletextattribute(handle ,0x00);printf(" ");k5+; cursor(7+2+18-k6,17-k6);setconsoletextattribute(handle ,0x00);printf(" ");k6+; cursor(6+2+18-k7,18-k7);setconsoletextattribute(handle,0x00);printf(" ");k7+; cursor(6+2+18-k8,19-k8

12、);setconsoletextattribute(handle,0x00);printf(" ");k8+; cursor(7+2+18-k5,16-k5);setconsoletextattribute(handle ,0x0b);printf("-"); cursor(7+2+18-k6,17-k6);setconsoletextattribute(handle ,0x0b);printf("0"); cursor(6+2+18-k7,18-k7);setconsoletextattribute(handle ,0x0b);pr

13、intf("< f >"); cursor(6+2+18-k8,19-k8);setconsoletextattribute(handle ,0x0b);printf(" "); i+; if(i=7) break; int game_star() dh(); clock_t clock_now,clock_last; clock_last=clock(); while(1) clock_now=clock(); if(clock_now-clock_last < 0.33f * clocks_per_sec) setconsolete

14、xtattribute(handle ,(rand()%(0x10); cursor(3,3); printf(" "); cursor(3,5); printf(" "); cursor(3,7); printf(" "); cursor(5,4);printf(""); cursor(5,6);printf(""); cursor(9,4);printf(""); cursor(9,6);printf(""); cursor(17,4);printf(

15、""); cursor(17,6);printf(""); cursor(21,4);printf(""); cursor(25,4);printf(""); cursor(21,6);printf(""); cursor(24,6);printf(""); cursor(29,4);printf(""); cursor(29,6);printf(""); cursor(33,4);printf(""); curso

16、r(37,6);printf(""); setconsoletextattribute(handle ,0x0e); clock_last=clock_now; setconsoletextattribute(handle ,(rand()%(0x10); cursor(15,17); printf("按任意键开始"); if(_kbhit() getch(); clear_p(); return 0; 3.24 游戏结束int gameover() int i; handle = getstdhandle(std_output_handle); clo

17、ck_t time_now,time_last; time_last=clock(); for(i=700;i>=0;i-) while(i) time_now=clock(); if(time_now-time_last>0.45f * clocks_per_sec) setconsoletextattribute(handle ,0x0a); cursor(rand()%84,rand()%25); printf("0"); setconsoletextattribute(handle ,0x0a); cursor(rand()%84,rand()%25);

18、 printf("1"); setconsoletextattribute(handle ,0x0a); cursor(rand()%84,rand()%25); printf("0"); setconsoletextattribute(handle ,0x0a); cursor(rand()%84,rand()%25); printf("1"); setconsoletextattribute(handle ,(rand()%(0x10); cursor(4,4);printf("");cursor(4,5);p

19、rintf(""); cursor(4,6);printf("");cursor(4,7);printf(""); cursor(4,8);printf("");cursor(4,9);printf(""); cursor(5,9);printf("");cursor(10,4);printf(""); cursor(10,5);printf(""); cursor(10,6);printf("");cursor(1

20、0,7);printf(""); cursor(10,8);printf("");cursor(10,9);printf(""); cursor(11,4);printf("");cursor(13,4);printf(""); cursor(13,5);printf("");cursor(13,6);printf(""); cursor(13,7);printf("");cursor(13,8);printf(""

21、); cursor(13,9);printf("");cursor(11,9);printf(""); cursor(17,4);printf("");cursor(17,5);printf(""); cursor(17,6);printf("");cursor(20,7);printf(""); cursor(20,8);printf("");cursor(20,9);printf(""); cursor(18,4);printf("");cursor(17,7);printf(&qu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论