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

上传人:scccc 文档编号:12544526 上传时间:2021-12-04 格式:DOCX 页数:21 大小:339.81KB
返回 下载 相关 举报
C语言课程设计(俄罗斯方块).docx_第1页
第1页 / 共21页
C语言课程设计(俄罗斯方块).docx_第2页
第2页 / 共21页
C语言课程设计(俄罗斯方块).docx_第3页
第3页 / 共21页
C语言课程设计(俄罗斯方块).docx_第4页
第4页 / 共21页
C语言课程设计(俄罗斯方块).docx_第5页
第5页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《C语言课程设计(俄罗斯方块).docx》由会员分享,可在线阅读,更多相关《C语言课程设计(俄罗斯方块).docx(21页珍藏版)》请在三一文库上搜索。

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

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

3、境windows 7控制台(80 * 43 );二、总体设计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删除方块流程图3.14结束界面当操作者在按下N (

5、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;n ext_block();block_xj(shape);int n ext_block()delete_block(NEXT_BLOCK_X,NEXT_BLOCK_Y,block_ next_sha

6、pe,block_ next_status);block_ next_colour=ra nd()%(0x10);block_ next_shape=ra nd()%7;block next status=ra nd()%4;if(block_ next_colour=OxOO)block next colour=OxOf;prin tf_block(NEXT_BLOCK_X5NEXT_BLOCK_Y,block_ next_shape,block_ next_status,block_ next_colour);3.22 删除方块的代码int delete_block(i nt xj nt

7、y,i nt shape ,int status )int i,j;for(i=0;iv4;i+) for(j=0;jv4;j+)|cursor(j+x,i+y);if(blocksshapestatusij=1)RSetCo nsoleTextAttribute(ha ndle ,0x00); printf(" ”);3.23 开始动画以及开始文字intdh()int k1 =0,k2=0,k3=0,k4=0;clock_t now3;clock_t Iast3;last3 =clock();int k5=0,k6=0,k7=0,k8=0;clock_t now4;clock_t

8、Iast4;last4 =clock();int i=0;while(i<7)no w3=clock();while( no w3-last3>0.35f*CLOCKS_PER_SEC)no w3=clock();while( no w3-last3<0.01 f*CLOCKS_PER_SEC)no w3=clock();Iast3=clock();cursor(7+1 +k1,16-k1 );SetConsoleTextAttribute(handle ,OxOO);printf(" ");k1 +; cursor(7+1 +k2,17-k2);SetC

9、onsoleTextAttribute(handle ,OxOO);printf(" ");k2+;cursor(6+1 +k3,18-k3);SetCo nsoleTextAttribute(ha ndle,OxOO);pri ntf("”);k3+;cursor(6+1 +k4,19-k4);SetCo nsoleTextAttribute(ha ndle,OxOO);pri ntf("”);k4+;cursor(7+1 +k1,16-k1 );SetConsoleTextAttribute(handle ,OxOa);printf("-&

10、quot;); cursor(7+1 +k2,17-k2);SetConsoleTextAttribute(handle ,OxOa);printf("OH); cursor(6+1 +k3,18-k3);SetConsoleTextAttribute(handle ,OxOa);printf("< Y >");cursor(6+1 +k4,19-k4);SetConsoleTextAttribute(handle ,OxOa);printf('7/ ”); cursor(7+2+18-k5,16-k5);SetConsoleTextAttri

11、bute(handle ,OxOO);printf(" ”);k5+; cursor(7+2+18-k6,17-k6);SetConsoleTextAttribute(handle ,OxOO);printf(M ”);k6+; cursor(6+2+18-k7,18-k7);SetCo nsoleTextAttribute(ha ndle,0x00);pri ntf("”);k7+;cursor(6+2+18-k8,19-k8);SetCo nsoleTextAttribute(ha ndle,0x00);pri ntf("”);k8+;cursor(7+2+1

12、8-k5,16-k5);SetConsoleTextAttribute(handle 5OxOb);printf("J,);cursor(7+2+18-k6,17-k6);SetConsoleTextAttribute(handle ,OxOb);printf("O"); cursor(6+2+18-k7,18-k7);SetConsoleTextAttribute(handle ,OxOb);printf("< F >");cursor(6+2+18-k8,19-k8);SetConsoleTextAttribute(handle

13、 ,OxOb);printf(H");i+;if(i=7) UrCarx,int game_star()dh();clock_t clock_ no w,clock_last; clock_last=clock();while(1)clock_ no w=clock();if(clock_ now-clockjast < 0.33f * CLOCKS_PER_SEC)SetCo nsoleTextAttribute(ha ndle ,(ra nd()%(0x10);cursor(3,3);printf(” ");cursor(3,5); prin tf(”')

14、;cursor(3,7); prin tf("”);cursor(5,4);printf(H;cursor(5,6);printf(H ”);cursor(9J4);printf(n;cursor(9,6);printf(n ”);cursor(17,4);printf(” ”);cursor(17,6);printf(u ”);cursor(21,4);printff' ”);cursor(25,4);printf(H ”);cursor(21,6);printf(” ”);cursor(24,6);printfC' ”);cursor(29,4);printfC&

15、#39; ");cursor(29,6);printf(” ”);cursor(33,4);printf(” ”);cursor(37,6);printf(” ”);SetCo nsoleTextAttribute(ha ndle ,0x0e); clock_last=clock_ now;SetCo nsoleTextAttribute(ha ndle ,(ra nd()%(0x10); cursor(15,17);printff按任意键开始”);if(kbhit() getch(); clear_p(); return 0;3.24 游戏结束int gameover()inti;

16、han die = GetStdHa ndle(STD_OUTPUT_HANDLE); clock_t time_ no w,time_last;timeast=clock();for(i=700;i>=0;i-)while(i)time_no w=clock();if(time_now-time_last>0.45F * CLOCKS_PER_SEC)SetConsoleTextAttribute(handle ,0x0a); cursor(ra nd()%84,ra nd()%25);prin tf 0”);SetConsoleTextAttribute(handle ,0x0

17、a); cursor(ra nd()%84,ra nd()%25);prin tfCM");SetConsoleTextAttribute(handle ,0x0a); cursor(ra nd()%84,ra nd()%25);prin tf 0”);SetConsoleTextAttribute(handle ,0x0a); cursor(ra nd()%84,ra nd()%25);prin tf(u1M);SetCo nsoleTextAttribute(ha ndle ,(ra nd()%(0x10);cursor(4,4);printf(M H);cursor(4,5);

18、printf(M ”);cursor(4,6);printf(H ,);cursor(4,7);printf(H ”); cursor(4,8);printf(" H);cursor(4,9);printf(H ”); cursor(5,9);printf(K ”);cursor(10,4);printf(”;cursor(10,5);pri ntf(” cursor(10,6);pri ntf(” cursor(10,8);pri ntf(”cursor(11,4);pri ntf(” cursor(1335);pri ntf(" cursor(13,7);pri ntf

19、(K cursor(13,9);pri ntf(” cursor(17,4);pn ntf(”); ”);cursor(10,7);printf(” ”); H);cursor(10,9);printf(" ”); n);cursor(13,4);printf(H "); ”);cursor(13,6);printf(” ”); ”);cursor。3,8);pri ntf(” ”); ”);cursor(11,9);pri ntf(” . ”);cursor(17,5);pri ntf(” .”); ”);cursor(20,7);pri ntf(” .“); n);cu

20、rsor(20,9);pri ntf(” .“); ”);cursor(17,7);printf(“ ”); ,);cursor(26,4);printf(u ”); ”);cursor(26,9);printf(“ ”); n);cursor(25,5);pri ntf(” .“); H);cursor(25,7);pri ntf(" .“); ”);cursor(25,9);pri ntf(” .“);cursor(佃,6加0rintfC'按任意键矢闭屏幕”);cursor(20,8);printf(”cursor(18,4);printf(”cursor(17,9);p

21、rintf(”cursor(26,7);printf(Hcursor(25,4);printf(”cursor(25,6);printf(”cursor(25,8);printf(”回二三方制 控向O笔 ¥ kufiJf /、* 11ftB 暮警觀UAIXXXXXXXXXXXX XXX xxxxxxMr十 OOOOOOD1OOO)z二数数00002222121叢疹命方拱墨诉,1003010011!询o&i 1IS| 1111B18 111 11B1I 1B10等级卑作说明Author:姚锋控制方向运行结果(二)X0 11010(1 10 1I0 11101111110tll3

22、1 R1R03010 01 Bl 811831113103111 1B1011BQLOC0 0 10101011101aiai 3 11C1011 181 QI 3 911131 1100H0 10L1 01311 3 OIL 1F»1 Oel 10110001 ;0 fill Bit aiei 01 mil I 010 1Bl IS "11 1018311011101 1 1001010 01 1110 0Oil Bl 11BB110 MB10111111101011101110 0110 0101010 ill DID _L_L0101U1L1LQ0113110 01J

23、1U1 ill 00J11U0 1ti_L:ioiL10113011 110101BIS1 10110 如 HOI10111110 H31108anmiQi 1 01B11031B13BIB B1S119L0B611011 1QIQIL101LQ101OLQ110(dlQ010101101JL ujljlujLOI)1010 1 010 il0 0 11013 01010101Q101001» 1 101091010101 IL1 111011111 |0991090 010101001 | 1QUO0911110 0 1011 11 1109111103 01Q191 JLJL01

24、110110m1LULUi ltiiiii luiiaiy t) 1.1 unyiu yin I. L103010109111010011013110rocessress an v1內01Qi si 01131tIfl31BllHl01B11 Pl 011 1 1011 13310131111 1 110 13110101300101310010 01311911 10103011013101 00 0 0101101 10 1 1010010 0110 011 o 01011 oil肮盹按任意键尖闭屏幕0101111001131 010 1returned 0 <0x0> exe

25、cution time : 52.561 sild continue.B 1 111 100 011 01011 IB 0HR 1 R1fil& 09911 1011 10 1601101010131101 1100010 11900011 1 10101-运行结果(四)OlOOllflfi HBill0110101 Q 10111 MOI11311011011 | 0 130 011 110 01五、总结在编这项项目的过程中,我发现了很多问题,课堂上学得那些知识并不牢固,一实践和检验的 时候往往会出现这样 和那样的错误,所以要想真正掌握这门知识,光靠记忆和在深入理解也是远远不够的,必须上机多敲键盘,多打代码,遇到错误,要冷静的分析和修改,但经常很多问题不是我们个人能解决的,有时我 们只是局限于一角,忽略其他的方块隐藏的潜在简单的错误,可能一个局外人一眼就可以发现了,有时可能我们是真的停留在程序表面,所以运用经常出错,因此必须把知识和实践相结合,凭一匚 之力不能解决的事千千万,我们要与他人团结合作,发挥团队的强大性。

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

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1