基于c++的俄罗斯方块游戏

邱丑丑

发布日期: 2019-05-29 17:51:22 浏览量: 399
评分:
star star star star star star star star star star_border
*转载请注明来自write-bug.com

一、基本要求

  • 综合实验设计可采取一人一设计,也可以组成小组,每组成员(不得超过4人)分工合作完成一个设计,每个人的任务不同

  • 要求利用面向对象程序设计方法以及C++的编程思想来完成系统的设计

  • 要求有菜单、文件操作,数据使用数组、结构体等均可,键盘操作或鼠标操作均可

  • 所编写的程序必须上机通过,并获得满意的结果

  • 完成综合实验设计报告书

二、实验内容

2.1 实验题目

俄罗斯方块小游戏

2.2 问题描述

俄罗斯方块是在一个m*n 的矩形框内进行的,矩形框的顶部会随机的出现一个有四个小方块组成的砖块,每过一段时间,就会下落一格,知道他碰到底部,然后再过一个时间下落另一个砖块,依次进行,砖块是随机出现的。当发现底部砖块是满的话,则消去它从而得到相应设置的分数,当砖块到达顶部的时候,游戏结束。选择俄罗斯方块进行C++面向对象程序设计课程设计主要是在学习C++这门面向对象语言的基础上,并通过实践加深对 C++面向对象程序设计语言特点的认识与理解。同时,可以提高运用C++编程语言解决实际问题的能力;锻炼实际的编程能力;还能提高调查研究、查阅技术文献、资料以及编写软件设计文档的能力。

2.3 功能要求

  • 实现方块的变形、下落、左移、右移消行等基本的功能

  • 实现方块暂停、判断分数以及等级设置功能

  • 界面窗口、以及小方块图形设计功能

2.4 算法分析

游戏中会出现6大类,19种形状类型,每种形状在游戏中都能够旋转,形成新的形状。每种形状都是由方形的色块组成的。

  • 程序中方法void make_tetris(struct Tetris *tetris):穷举出19中方块形状类型

  • 方法int if_moveable(struct Tetris *tetris)判断方块是否可以移动

  • 方法void get_flag(struct Tetris *tetris)随机产生19中方块形状类型的序号用于区分不同的形状

  • 方法void print_tetris(HANDLE hOut,struct Tetris *tetris)打印随机生成的俄罗斯方块

  • 方法void clear_tetris(HANDLE hOut,struct Tetris *)用于清除俄罗斯方块的痕迹

  • 方法void del_full(HANDLE hOut,struct Tetris *)判断方块是否满行

三、概要设计

3.1 俄罗斯方块功能设计图

3.2 功能描述

  • 方块操作功能:在方块下落时,可以通过键盘左方向键← 和 右方向键→ 控制方块在下降的过程中向左移动、向右移动。方向键↑控制方块的变形

  • 得分功能:每消除一行得100分。以此累加

  • 等级提升功能:当得分为1000分时(即消除10行),等级提升一级

  • 方块速度控制:默认速度是400ms,每当等级提升一级时,下降时间减少20ms

  • 游戏控制:空格键游戏暂停,再次点击空格键,游戏继续。当点击Esc按键时退出游戏

四、详细设计

  1. //声明俄罗斯方块的结构体
  2. struct Tetris
  3. {
  4. int x; //中心方块的x轴坐标
  5. int y; //中心方块的y轴坐标
  6. int flag; //标记方块类型的序号
  7. int next; //下一个俄罗斯方块类型的序号
  8. int speed; //俄罗斯方块移动的速度
  9. int count; //产生俄罗斯方块的个数
  10. int score; //游戏的分数
  11. int level; //游戏的等级
  12. };

五、程序运行结果测试与分析

5.1 开始游戏测试

5.2 方块变形测试

5.3 游戏结束

5.4 退出游戏测试

5.7 分析总结

运行程序,方块可以产生,并通过左右方向键可以控制方块的左右移动,通过方向键↑,可以改变当前方块的旋转角度,并通过方向键可以将改变后的方块堆放在适合的位置,。当方块堆满一行时,将满行方块消除,得分加100,当得分满1000分时,等级提升1,同时下降速度提升20ms。当方块堆到顶时提示游戏结束,使用空格键可以控制游戏暂停,使用Esc键可以退出游戏。

六、结论与心得

通过本次综合设计,掌握了C++面向对象的开发思想,对于复杂的问题学会从全局思考,分解问题并将模块化、画出结构图、设置好变量、留足修改与增添的空间、设计好测试的平台。其次写一个函数就测试一个函数可很好的解决程序改错的问题、联系自己已解决的问题可减少在去写类似函数的工作量 。巩固了C++的基础知识,并熟练的应用,为以后从事c++编程开发,打下了良好的基础。

上传的附件 cloud_download c++俄罗斯方块.7z ( 132.71kb, 6次下载 )
error_outline 下载需要4点积分

发送私信

精品资源尽在此

57
文章数
0
评论数
最近文章
eject