C++语言实现俄罗斯方块经典游戏课程设计.docxVIP

C++语言实现俄罗斯方块经典游戏课程设计.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C语言实现俄罗斯方块经典游戏课程设计

计算机实习报告 一.功能说明1.1总体功能说明本工程用C++语言实现了俄罗斯方块经典游戏。俄罗斯方块游戏特点:俄罗斯方块的基本规则是通过键盘控制移动、旋转和摆放游戏自动输出的各种方块,使之排列成完整的一行或多行并且消除得分,上手简单,是一款经典游戏。在经典玩法(正常模式)的基础上,本程序还添加了挑战模式,即在游戏伊始时在游戏区域中随机分布方块,减小了留给玩家调整方块的时间和区域,需要通过玩家不断填补消行才能把游戏进行下去。游戏会随着玩家的得分的增多而加大方块下落的速度,从而增加游戏难度,因此也在原来的基础上大大增加了游戏的可玩性。游戏中还增加了Esc键的功能,从而可以实现暂停游戏和退出游戏的功能。1.2用户界面这是游戏的初始界面。出现游戏名,根据提示,玩家按下“c”“n”即可自行选择挑战模式和正常模式,难度不同。这样既明确了游戏名称,提供两种模式的入口,又给玩家一个准备的时间以自行控制游戏开始,不必一打开文件就突然开始游戏,增加了游戏的人性化。以上两图为进入游戏后的主界面,分别为正常模式和挑战模式。中间的区域为游戏主要界面,游戏从上往下随机产生并自动输出七种方块,对俄罗斯方块的基本操作如←(左移),→(右移),↑(方块变形),↓(加速下落)都在此区域里完成。最上方显示的是模式。右边的区域显示一些与游戏相关的信息,从上往下分别是下落速度、游戏得分、游戏操作说明,编者信息。此图为按下“Esc”键后出现的画面。程序支持Esc键暂停的功能,即按下后,按Y键退出,按N键可继续游戏,玩家中途有事离开,回来后也可继续游戏,提供了方便。1.3使用方法打开程序后根据屏幕上的提示信息,按下回车键以进入游戏界面开始游戏。进入游戏界面后,根据屏幕右下方的游戏说明,通过键盘上←(左移),→(右移),↑(方块变形),↓(加速下落)控制方块。游戏过程中,可按“Esc”键暂停,并可以通过“Y”和“C”键选择退出和继续。游戏结束之后,通过键盘按键“Y”和“N”选择是否退出游戏。←,→,↑,↓:左移,右移,翻转和加速下落。Esc:暂停/继续/退出游戏难度配置是随着分数的增加而提高的。二.程序设计说明2.1 总体设计框架程序以main函数为主线,在main函数中调用其他函数,具体算法主要在其他函数中实现,使程序更加简洁明了,清晰而有层次。除main函数外,还有Start,Begin,Block_birth,Print,Clear,Turn,Intomap,Available,Deleteline,Gameover十个实现算法的函数,分别用来实现初始界面,初始游戏,生成方块,打印方块,擦除方块,旋转方块,更改地图矩阵,判断是否放下,消行,游戏结束的功能。框架图如下: Y N N Y N Y N Y2.2 关键算法描述本工程主要采用了数组来存储矩阵,用三维数组(block_shape[7][4][4])存储了最基本的7种俄罗斯方块,而在具体操作中则通过对另外两个新定义的二维数组当前方块(tshape[4][4])与新方块(newshape[4][4])来实现各种操作与判断。打印函数Print()和擦除函数Clear()可实现方块的移动。判断函数Available ()进行方块满行和叠加的判断,主要是通过定义了一个二维的地图矩阵map_shape[24][46],在有方块的地方值为1,无则为0,对于“■”字符横坐标占两个的问题,统一取其左边第一个位置为1进行各种判断操作。关键算法 1:算法功能:在主程序中接收键盘传来的信息,并对所要操纵的方块做相应的操作(翻转,左移,右移,下落),包括Esc键控制的暂停/继续/退出游戏。void Turn(int block_shape[4][4])//操作方块{int direction = _getch();switch(direction){case 72://up 方块翻转for(int k=0;k4;k++){for(int j=0;j4;j++){block_newshape[3-j][k] = block_shape[k][j];}}if(Available(block_newshape,0,0)){Clear(block_tshape);Print(block_newshape);for(int k=0;k4;k++)for(int j=0;j4;j++){block_tshape[k][j] = block_newshape[k][j];}}break;case 75://left 方块左移if(Available(block_tshape,-2,0)){Clear(block_tshape);x_coordinate-=2;Print(block_tshape);}break;case 77://right

文档评论(0)

2017meng + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档