c-俄罗斯方块-课程设计报告-刘阳.doc_第1页
c-俄罗斯方块-课程设计报告-刘阳.doc_第2页
c-俄罗斯方块-课程设计报告-刘阳.doc_第3页
c-俄罗斯方块-课程设计报告-刘阳.doc_第4页
c-俄罗斯方块-课程设计报告-刘阳.doc_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

吉林工程技术师范学院信息工程学院 C语言程序设计 课程设计报告题 目: 俄罗斯方块 专 业: 计算机科学与技术 班 级: 计算机1241 姓 名: 刘阳 学 号: 1201044120 指导教师:郭天娇 时 间:2013年6月17日至2013年6月28日 摘 要俄罗斯方块(Tetris, 俄文:)是一款风靡全球的电视掌上游戏机游戏,它由俄罗斯人阿列克谢帕基特诺夫发明,故得此名。俄罗斯方块的基本规则是移动、旋转和摆放游戏自动输出的各种方块,使之排列成完整的一行或多行并且消除得分。由于上手简单、老少皆宜,从而家喻户晓,风靡世界。原本是前苏联科学家阿列克谢帕基特诺夫所开发的教育用软件,之后开始提供授权给各个游戏公司,造成各平台上软件大量发行的现象。由于俄罗斯方块具有的数学性、动态性与知名度,也经常拿来作为游戏程序设计的练习题材。俄罗斯方块曾经造成的轰动与造成的经济价值可以说是游戏史上的一件大事,它看似简单但却变化无穷,令人上瘾。相信大多数用户都还记得为它痴迷得茶不思饭不想的那个俄罗斯方块时代。俄罗斯方块上手极其简单,但是要熟练地掌握其中的操作与摆放技巧,难度却不低。作为家喻户晓老少皆宜的大众游戏,其普及程度可以说是史上任何一款游戏都无法相比的。关键字:经典 俄罗斯方块 游戏 I目录摘要错误!未定义书签。目录1第一章 课程设计的目的2第二章 设计方案的论证3-4第三章 设计实现过程5第四章 调试运行及结果分析6-7第五章 测试及问题探讨8第六章 课设总结及体会9第七章 致谢10第八章 参考文献11第九章 附录12-36第一章 课程设计目的 俄罗斯方块家喻户晓,他能动态进行显示和判断方块位置,能对程序的综合设计有更深入的了解,同时对程序的综合开发,创新了思路,增长了开发经验。俄罗斯流传范围较广,游戏体验也比较丰富,这对开发来说增加了开发信心,俄罗斯游戏考验人的反应应变能力,对其开发能深入了解开发者思想,体会开发者心得。对于这样经典的创造于在创造都是非常好的学习机会。对程序设计初学者能更好的整合综合开发能力,对过去所学的零散的知识汇总。对开发者耐心,细心程度都有很大提升。在开发的过程中也能对以往玩过的各个版本的俄罗斯方块能取长补短,这是开发其它小程序很难获得的。第二章 设计方案的论证该程序采用数组与图形显示相结合的办法,数组用来进行方块位置判断,图形部分则根据数组所包含的数据进行显示,使程序生动,更具有可玩性。 判断函数利用该函数可以判断是否满足消除和分数判断要求主函数主函数里面负责图形驱动初始化、分数、及随机函数和清除函数和显示函数和键盘缓冲区清除和全局显示函数初始化化第三章 设计实现过程 设计首先对游戏UI进行的草图的绘制,设计出游戏UI的大小和方位。通过合理的设置游戏UI界面,会给游戏体验着带来更加愉悦的游戏体验,并留下深刻的印象。UI初步绘制完成之后就是结构化程序比较重要的一步了,那就是算法的合理选择,一个程序的好坏不能单单对其UI的评价,而是算法是否合理,程序资源调配时否达到最优化的程度等。本程序采用数组与UI界面相结合的方法进行游戏规则判断。由于采用TC编译平台。不能提供丰富的预定义函数。所以所有函数除部分头文件均由后期编写。这样一来相比使用方便的VC+编译平台,更具有实际操作能力。更具有意义。但同时要牺牲开发效率。UI后期游戏中的绘制是根据数组中值的不断变化而绘制。UI和算法均设计完毕后。便进入了最后的调试阶段。在调试阶段,通过对程序的调试,发现了很多严重的问题,经过不计其数的修改,最后程序还是比较接近预期设计效果。由于设计能力有限 部分游戏功能没有得以体现这是设计者表示比较遗憾的。在以后的学习中会不断完善,谢谢。第四章 调试运行及结果分析游戏加载界面该界面可以给玩家一定准备时间,做好一定的缓冲,不会让玩家措手不及游戏加载完成游戏运行界面结果接近预期效果,由于开发时间紧张,方块旋转函数没有涉及,所以降低了游戏的可玩性。这点比较遗憾。TC下无法输出中文,所以所有提示都采用英文,这一点也是比较遗憾。第五章 测试及问题探讨 测试发现,游戏运行流畅度不是很完美,因为所采用的延时函数不是很好,所以运行起来有卡顿延时现象。发现问题有方块穿越边界的情况,这点后期对判断值左、右、下均增加了5处判断值,与先期的一处判断值相比,能够早期判断,由于穿越边界主要是由于移动按键造成的,按键函数下每调用一次为多增加30像素值的移动,加上本次的10像素值,一共为40像素值,所以,采用50个像素值进行判断比较稳定,虽然说采用比5处更多的判断值会更加稳定,但是会减慢游戏的运行速度,所以采用50像素值进行判断。同时左右移动有时也会存在穿越其他方块的情况,这点只要在正常延时时不会存在,由于TC下暂停时间过长,再次继续有一段时间延迟会改变,所以左右穿越方块只会在这段时间出现,如果有机会日后会完善。第六章 课设总结与体会 课设期间时间充分利用,分配合理,完成度接近95%,总体满意。通过课程设计体验到了软件开发的过程,从设计到完成,完整的开发过程。同时对所涉及的各个学科有了更深入的了解。增加了实践经验。为今后的其他平台开发打下了坚实的基础,同时也为即将结束的大一生活留下了美好的一抹油彩,然大一生活更加值得怀念。第七章 致谢 在此特别感谢帮助和支持开发工作的相关人员,感谢吉林工程技术师范学院所提供的场地和环境。感谢百度搜索引擎提供的相关数据搜索,感谢男寝201 全体成员。感谢相关书籍和文献的撰写人员和出版发行社。感谢TC该编译平台。感谢Microsoft所有相关支持软件。在此特别鸣谢以上公司和个人。第八章 参考文献1 C语言程序设计 刘国成 科学出版社2C程序设计 谭浩强 1991年7月3从问题到程序 裘宗燕 北京大学出版社3计算机二级教程 刘瑞挺 南开大学出版社4C语言程序设计基础教程 陈朔鹰,兵器工业出版社5 C语言程序设计 姜仲秋 南京大学出版社附录#include#include#include#include#include#include#define ha 25 /*kuan su chang liang */#define gs 150+ha*10+30 /*cheng ji xian shi pin yi liang*/#define hh 350 /*/int xb11,xb12,xb21,xb22,xb31,xb32,xb41,xb42;int qdx1,qdy1,qdx2,qdy2,qdx3,qdy3,qdx4,qdy4;int ui=150,bi=40,mbh=0,jz=2,key,stop=0,y11;int sz40ha=0,qckey,n;int bxh=0,sxh=0,zfs=0;int ns4=0,0,0,0;void kc()int i1,j1=0,k1;int s21110=100,100,200,100,200,200,100,200,100,100;int sd21114=450,100,410,200,450,200,350,360,420,220,380,220,450,100;sleep(1); for(k1=0;k115) i1=0; delay(1000); settextstyle(0,0,3); outtextxy(480,430,Go); sleep(2); cleardevice();void sj()srand(time(0);mbh=(rand()%5);ui=150+(rand()%(ha-6)*10;/*wei fang kuai ti gong chu shi wei zhi de sui ji zhi */*wei fang kuai zhong lei ti gong chu shi zhi*/void show()int iii,j=10;for(iii=0;iii4;iii+) /*you yu TC bu neng zheng chang xian shi shu zi*/ /*gai han shu ti gong de fen cheng ji suo xu shu zi*/switch(nsiii)case 0:setlinestyle(0,2,0x0f);line(gs+3+j,3+hh,gs+3+j,21+hh);line(6+j+gs,hh+4,16+j+gs,4+hh);line(19+j+gs,hh+3,19+j+gs,21+hh);line(3+j+gs,hh+24,3+j+gs,42+hh);line(19+j+gs,hh+24,19+j+gs,42+hh);line(6+j+gs,hh+41,16+j+gs,41+hh);break;case 1:setlinestyle(0,2,0x0f);line(gs+19+j,hh+3,gs+19+j,hh+21);line(gs+19+j,hh+24,gs+19+j,hh+42);break;case 2:setlinestyle(0,2,0x0f);line(gs+6+j,hh+4,gs+16+j,hh+4);line(gs+19+j,hh+3,gs+19+j,hh+21);line(gs+6+j,hh+23,gs+16+j,hh+23);line(gs+3+j,hh+24,gs+3+j,hh+42);line(gs+6+j,hh+41,gs+16+j,hh+41);break;case 3:setlinestyle(0,2,0x0f);line(gs+6+j,hh+4,gs+16+j,hh+4);line(gs+19+j,hh+3,gs+19+j,hh+21);line(gs+6+j,hh+23,gs+16+j,hh+23);line(gs+19+j,hh+24,gs+19+j,hh+42);line(gs+6+j,hh+41,gs+16+j,hh+41);break;case 4:setlinestyle(0,2,0x0f);line(gs+3+j,hh+3,gs+3+j,hh+21);line(gs+6+j,hh+23,gs+16+j,hh+23);line(gs+19+j,hh+3,gs+19+j,hh+21);line(gs+19+j,hh+24,gs+19+j,hh+42);break;case 5:setlinestyle(0,2,0x0f);line(gs+6+j,hh+4,gs+16+j,hh+4);line(gs+3+j,hh+3,gs+3+j,hh+21);line(gs+6+j,hh+23,gs+16+j,hh+23);line(gs+19+j,hh+24,gs+19+j,hh+42);line(gs+6+j,hh+41,gs+16+j,hh+41);break;case 6:setlinestyle(0,2,0x0f);line(gs+6+j,hh+4,gs+16+j,hh+4);line(gs+3+j,hh+3,gs+3+j,hh+21);line(gs+6+j,hh+23,gs+16+j,hh+23);line(gs+3+j,hh+24,gs+3+j,hh+42);line(gs+19+j,hh+24,gs+19+j,hh+42);line(gs+6+j,hh+41,gs+16+j,hh+41);break;case 7:setlinestyle(0,2,0x0f);line(gs+6+j,hh+4,gs+16+j,hh+4);line(gs+19+j,hh+3,gs+19+j,hh+21);line(gs+19+j,hh+24,gs+19+j,hh+42);break;case 8:setlinestyle(0,2,0x0f);line(gs+3+j,hh+3,gs+3+j,hh+21);line(gs+6+j,hh+4,gs+16+j,hh+4);line(gs+19+j,hh+3,gs+19+j,hh+21);line(gs+6+j,hh+23,gs+16+j,hh+23);line(gs+3+j,hh+24,gs+3+j,hh+42);line(gs+19+j,hh+24,gs+19+j,hh+42);line(gs+6+j,hh+41,gs+16+j,hh+41);break;case 9:setlinestyle(0,2,0x0f);line(gs+3+j,hh+3,gs+3+j,hh+21);line(gs+6+j,hh+4,gs+16+j,hh+4);line(gs+19+j,hh+3,gs+19+j,hh+21);line(gs+6+j,hh+23,gs+16+j,hh+23);line(gs+19+j,hh+24,gs+19+j,hh+42);line(gs+6+j,hh+41,gs+16+j,hh+41);break;default: break; /*shu xian han shu */j+=30;void displayer()int i,j,x,y;for(i=0;i40;i+)for(j=0;j0;i-)for(j=0;j=0;i-)for(j=0;jha;j+) if(szij=1) k+;if(k=ha)qckey=1;k=0; i=39; delay(100000);qc();elsek=0;/*gai han shu wei qing chu zheng hang fang kuai */int pd()if(szxb12/10-4xb11/10-15=1 |szxb22/10-4xb21/10-15=1 |szxb32/10-4xb31/10-15=1 |szxb42/10-4xb41/10-15=1 |xb12=440|xb22=440|xb32=440|xb42=440) szqdy1/10-4qdx1/10-15=1;szqdy2/10-4qdx2/10-15=1;szqdy3/10-4qdx3/10-15=1;szqdy4/10-4qdx4/10-15=1;xb12=0;xb22=0;xb32=0;xb42=0;stop=1;zfs+=2;clear(); /*gai han shu wei pan duan han shu */void bk()setcolor(2);setlinestyle(0,2,3);line(147,37,153+ha*10,37);line(147,37,147,443);line(153+ha*10,37,153+ha*10,443);line(147,443,153+ha*10,443); /*gai han shu wei cheng xu bian kuang han shu */int zx(int y,int z)int i=z/10-4,k=0;for(;i40;i+)if(sziy/10-15=0)k+;return k; /*gai han shu wei ji fen han shu ti gong chu shi zhi*/void text()setcolor(0x0f);settextstyle(0,0,3);outtextxy(437,300,score);settextstyle(0,0,2);setcolor(0x0e);outtextxy(430,40,ESCEXIT);outtextxy(430,60,RIGHTD);outtextxy(430,80,LEFTA);outtextxy(430,100,DOWNS);setcolor(2);settextstyle(0,1,2);outtextxy(140,90,Tetris); /*gai han shu shu chi ti shi wen zi*/void display() /*gai han shu wei fang kuai yi dong han shu*/int x11=0,x21=0,y21=0,x12=0,y12=0,x22=0,y22=0,x13=0,y13=0,x23=0,y23=0;int x14=0,y14=0,x24=0,y24=0;int x=10,y=12,i,m,ww; /*fang kuai xian shi */pd();bi=40;switch(mbh)case 0:for(n=1;n150)ui-=10;if(key=8292&szy11/10-3x11/10-14=0&szy13/10-3x13/10-14=0&szy14/10-3x14/10-14=0)if(ui400)&(szxb12/10-4ui/10=0)&(szxb22/10-4ui/10=0)&(szxb32/10-4ui/10=0)&(szxb42/10-4ui/10=0)break;if( szy22/10+1x12/10-15=1 |szy24/10+1x14/10-15=1 |szy22/10x12/10-15=1 |szy24/10x14/10-15=1 |szy22/10-1x12/10-15=1 |szy24/10-1x14/10-15=1 |szy22/10-2x12/10-15=1 |szy24/10-2x14/10-15=1 |szy22/10-3x12/10-15=1 |szy24/10-3x12/10-15=1) break;if(y111) ww=0; break;displayer(); /*diao yong xian shi */ x11=ui;y11=bi+n*10;x21=x11+10;y21=y11+10; x12=x11;y12=y11+10;x22=x21;y22=y21+10; /*wei fang kuai chu shi zhi fu zhi*/ x13=x21;y13=y21;x23=x21+10;y23=y21+10;/*you yu mei zhong fang kuai bu tong*/ x14=x22;y14=y22;x24=x22+10;y24=y22+10;/*suo yi bu zuo dan du han shu */ setfillstyle(2,3); /*she zhi fang kuai yan se he tian chong fang shi*/ bar(x11,y11,x21,y21); bar(x12,y12,x22,y22); /*hui zhi fang kuai */ bar(x13,y13,x23,y23); bar(x14,y14,x24,y24);/*/xb11=x12;xb12=y12+10;xb21=x22;xb22=y22; /*zui di dian */xb31=x14;xb32=y24; /* bian jie pan duan */xb41=x14;xb42=y24;qdx1=x11;qdy1=y11;qdx2=x12;qdy2=y12; /*zui gao su zhu fu zhi dian*/qdx3=x13;qdy3=y13; /* tiao jian pan duan*/qdx4=x14;qdy4=y14; sleep(1); /*sui mian han shu yan chi*/ cleardevice(); /*qing chu quan bu yi hui zhi tu xing*/ break; /* zai ci tiao chu*/ /*!*/ /*! dao ci han fang kuai 0 jie shu */ /*! you yu yi xia mo kuai jun jie gou xiang tong*/ /*! bu zai zuo jie shi biao zhu */ /*! ru you qi tai bu tong zai ling xing biao zhu*/ /*! yi shang biao zhu wei xue sheng liy yang biao zhu */ /*! yi xia ge shi ye bu zuo te bie xiu shi*/ /*! xie xie*/ /*! QQ:763397547*/ /*! zai ci te bie gan xie nan qin 201 quan ti cheng yuan*/case 1:for(n=1;n150&szy11/10-3x11/10-16=0&szy12/10-3x12/10-16=0&szy13/10-3x13/10-16=0&szy14/10-3x14/10-16=0)ui-=10;if(key=8292&szy11/10-3x11/10-15=0&szy12/10-3x22/10-15=0&szy22/10-3x22/10-15=0&szy23/10-3x23/10-15=0 )if(ui350)|(szxb12/10-15ui/10=1)|(szxb22/10-15ui/10=1)|(szxb32/10-15ui/10=1)|(szxb42/10-15ui/10=1) break;if( szy14/10+2x14/10-15=1|szy14/10+1x14/10-15=1|szy14/10x14/10-15=1|szy14/10-1x14/10-15=1|szy14/10-2x14/10-15=1|szy14/10-3x14/10-15=1) break;if(y111) ww=0; break;displayer(); x11=ui;y11=bi+n*10;x21=x11+10;y21=y11+10; x12=x11;y12=y11+10;x22=x12+10;y22=y12+10; x13=x11;y13=y12+10;x23=x13+10;y23=y13+10; x14=x11;y14=y13+10;x24=x14+10;y24=y14+10; setfillstyle(2,6); bar(x11,y11,x21,y21); bar(x12,y12,x22,y22); bar(x13,y13,x23,y23); bar(x14,y14,x24,y24);xb11=x14;xb12=y24;xb21=x14;xb22=y24;xb31=x14;xb32=y24;xb41=x14;xb42=y24;qdx1=x11;qdy1=y11;qdx2=x12;qdy2=y12;qdx3=x13;qdy3=y13;qdx4=x14;qdy4=y14; sleep(1); cleardevice();case 2:for(n=1;n140&szy11/10-3x11/10-16=0&szy12/10-3x12/10-16=0)ui-=10;if(key=8292&szy11/10-3x11/10-14=0&szy14/10-3x14/10-14=0)if(ui340)&(szxb12/10-4ui/10=0)&(szxb22/10-4ui/10=0)&(szxb32/10-4ui/10=0)&(szxb42/10-4ui/10=0)break;if( szy12/10+2x12/10-15=1 |szy13/10+2x13/10-15=1 |szy14/10+2x14/10-15=1|szy12/10+1x12/10-15=1|szy13/10+1x13/10-15=1|szy14/10+1x14/10-15=1 |szy12/10x12/10-15=1 |szy13/10x13/10-15=1 |szy14/10x14/10-15=1 |szy12/10-1x12/10-15=1 |szy13/10-1x12/10-15=1 |szy14/10-1x12/10-15=1 |szy12/10-2x12/10-15=1 |szy13/10-2x12/10-15=1 |szy14/10-2x12/10-15=1)break;if(y111) ww=0; break;displayer(); x11=ui+20;y11=bi+10+n*10;x21=x11+10;y21=y11+10; x12=x21-20;y12=y21;x22=x12+10;y22=y12+10; x13=x11;y13=y11+10;x23=x13+10;y23=y13+10; x14=x21;y14=y21;x24=x14+10;y24=y14+10; setfillstyle(4,9); bar(x11,y11,x21,y21); bar(x12,y12,x22,y22); bar(x13,y13,x23,y23); bar(x14,y14,x24,y24);xb11=x12;xb12=y12+10;xb21=x22;xb22=y22;xb31=x14;xb32=y24;xb41=x14;xb42=y24;qdx1=x11;qdy1=y11;qdx2=x12;qdy2=y12;qdx3=x13;qdy3=y13;qdx4=x14;qdy4=y14; sleep(1); cleardevice(); break;/*/case 3:for(n=1;n150)ui-=10;if(key=8292&szy12/10-3x12/10-14=0&szy14/10-3x14/10-14=0)if(ui350)&(szxb12/10-4ui/10=0)&(szxb22/10-4ui/10=0)&(szxb32/10-4ui/10=0)&(szxb42/10-4ui/10=0)break; if(szy13/10+2x13/10-15=1 |szy14/10+2x14/10-15=1 |szy13/10+1x13/10-15=1 |szy14/10+1x13/10-15=1 |szy13/10x13/10-15=1 |szy14/10x13/10-15=1 |szy13/10-1x13/10-15=1 |szy14/10-1x13/10-15=1 |szy13/10-2x13/10-15=1 |szy14/10-2x13/10-15=1)break;if(y111) ww=0; break;displayer(); x11=ui;y11=bi+20+n*10;x21=x11+10;y21=y11+10; x12=x11+10;y12=y11;x22=x12+10;y22=y12+10; x13=x11;y13=y11+10;x23=x13+10;y23=y13+10; x14=x21;y14=y21;x24=x14+10;y24=y14+10; setfillstyle(8,5); bar(x11,y11,x21,y21); bar(x12,y12,x22,y22); bar(x13,y13,x23,y23); bar(x14,y14,x24,y24);xb11=x13;xb12=y13+10;xb21=x23;xb22=y23;xb31=x14;xb32=y24;xb41=x14;xb42=y24;qdx1=x11;qdy1=y11;qdx2=x12;qdy2=y12;qdx3=x13;qdy3=y13;qdx4=x14;qdy4=y14; sleep(1); cleardevice();break;case 4:for(n=1;n150)ui-=10;if(key=8292&szy12/10-3x12/10-14=0&szy13/10-3x13/10-14=0&szy14/10-3x14/10-14=0)if(ui370)&(szxb12/10-4ui/10=0)&(szxb22/10-4ui/10=0)&(szxb32/10-4ui/10=0)&(szxb42/10-4ui/10=0)break; if( szy22/10+1x22/10-16=1 |szy24/10+1x24/10-16=1 |szy22/10x22/10-16=1 |szy24/10x24/10-16=1 |szy22/10-1x22/10-16=1 |szy24/10-1x24/10-16=1 |szy22/10-2x22/10-16=1 |szy24/10-2x24/10-16=1 |szy22/10-3x22/

温馨提示

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

评论

0/150

提交评论