C++MFC课程设计-俄罗斯方块
更新时间:2023-03-20 08:45:01 阅读量: 实用文档 文档下载
一个简单的MFC俄罗斯方块实现。
面向对象程序设计
课题名称: 俄罗斯方块 学 号: 10408200119 姓 名: 刘 旭 班 级: 通信101 指导老师: 沈浩老师
一个简单的MFC俄罗斯方块实现。
目录
一、需求分析 ................................................................................................................................... 3
1.1开发背景............................................................................................................................. 3 1.3 系统目标............................................................................................................................ 3 1.3 运行环境............................................................................................................................ 3 二、概要设计 ................................................................................................................................... 3
2.1 程序流程图 ........................................................................................................................ 3 2.2 定义的类............................................................................................................................ 4 三、详细设计 ................................................................................................................................... 5 四、调试分析 ................................................................................................................................... 8 五、用户使用说明 ........................................................................................................................... 9 六、测试结果 ................................................................................................................................... 9 七、附录或参考资料 ..................................................................................................................... 10
一个简单的MFC俄罗斯方块实现。
一、 需求分析
1.1 开发背景
与C语言不同,经过了一学期的C++课程,基本熟悉了面向对象的设计思路,通过运用基本的MFC来完成一系列的功能,课题选择了俄罗斯方块,一是以前的数据结构课程设计原本打算写的程序后面由于设计不当没有完成,这次使用MFC完成也算是弥补了小小的遗憾,二是MFC是微软为开发者集成的一个开发库,拥有非常强大的功能,这一切又和面向对象的思想相契合,因此选择MFC是一个不错的选择。其次,通过团队的合作,也使得的这次的设计较为顺利。
1.3 系统目标
本系统的目标是通过接受键盘的输入信息来完成俄罗斯方块的基本功能。 1. 能够是游戏正确的开始和结束; 2. 能够使用合法的所有方块;
3. 能够使得方块在下降的过程中变化自己的形状; 4. 能够统计得分,并且逐步加大难度.
1.3 运行环境
一台安装windows xp、wndows vista、windows 7并且能够运行.exe可执
行文件的计算机。
二、 概要设计
2.1 程序流程图
一个简单的MFC俄罗斯方块实现。
2.2 定义的类
下面是VC++6.0的类浏览
前面6个类都是MFC类,程序的主要调用通过CMyTaskView中定时器的OnTimer函数来实现。
Dset用来弹出对话框来设置等级。
Graph类是一个普通的C++类,没有继承任何的MFC类,该类所有成员均为静态变量,所有函数也是静态的。数据包括砖块的形状和颜色,以及同种类型砖块的变换区间。类中
一个简单的MFC俄罗斯方块实现。
也包括画砖块函数。
Tile类用来保留当前砖块和下一个砖块。
Wall类描绘了整个墙壁被砖块砌成的状态,当中包括了检查是否可进行消除和判断停止以及加大游戏难度。
三、详细设计
主要类的声明如下: class Graph {
public: Graph(); static int GetTile(); static int GetCol(); static int GetTileNum(int No); static void DrawTile(CDC *pDC, int &Tile, COLORREF &Col, Point &pt); static void ShowNext(CDC *pDc, int &Tile, COLORREF &Col); static void ShowShadow(CDC *pDC, int &Tile, Point &pt); static void ClearShadow(CDC *pDC, int &Tile, Point &pt); virtual ~Graph(); public: static char G[21][4][5]; // 用来存储瓷片的形状 static int interval[7][2]; // 用来存储同一种瓷片不同形态在G中的连续区间边界 static COLORREF Col[9]; };
class Tile {
public: Tile(); void Modify(); void Init(); virtual ~Tile(); public: int curTile; // 用来保留当前瓷片 int curCol; // 用来保留当前瓷片颜色 int nextTile; // 用来保留下一个瓷片 int nextCol; // 用来保留下一个瓷片颜色 };
一个简单的MFC俄罗斯方块实现。
class Wall {
public: Wall(); static bool Stop(Wall &wall, int &Tile, int &fx, int &fy); static void Modify(Wall &wall, int &Tile, COLORREF &Col, int &fx, int &fy); static void Completed(CDC *pDC, Wall &wall); static bool Skip(Wall &wall, int Speed); void Init(); virtual ~Wall(); public: int Score; int Width; int Height; };
COLORREF Statu_Col[10][19]; // 如果被覆盖用来保留颜色,默认为0
主导作用的OnTimer函数:
void CMyTaskView::OnTimer(UINT nIDEvent) { // TODO: Add your message handler code here and/or call default CClientDC cDC(this); int lastfy = fy; ++fy; if (Wall::Stop(wall, tile.curTile, fx, fy)) {
}
if (fx == 4 && fy == 0) { // 已经达到结束条件 KillTimer(Timer); MessageBox("真遗憾,游戏结束!"); play = 0; CClientDC cDC(this); OnDraw(&cDC); }
Wall::Modify(wall, tile.curTile, Graph::Col[tile.curCol], fx, lastfy); Wall::Completed(&cDC, wall); // 判定是否存在行能够消除 tile.Modify(); fx = 4; fy = -1;
// 更新wall,此时瓷片的位置已经固定,更新tile,以及位置坐标 return; // 如果碰到边界或者是遇到了障碍
一个简单的MFC俄罗斯方块实现。
}
// 打印分数 char str[10];
sprintf(str, "Score: %d", wall.Score);
cDC.TextOut(LU.x+30*11, LU.y+30*(6), CString(str)); // 判定是否过关
if (Wall::Skip(wall, Speed)) { KillTimer(Timer); Speed = 400 / ((400 / Speed) + 1); }
play = 0; // 逻辑上结束了游戏 MessageBox("恭喜,过关了"); CClientDC cDC(this); OnDraw(&cDC); OnStart();
// 如果还有下降的空间
if (fy == 0) {// 如果是刚刚新产生的图形 int lastfy = fy; Point pt; }
while (!Wall::Stop(wall, tile.curTile, fx, ++lastfy)) {} // 一直到发生停止命令以后 --lastfy;
pt = Point(LU.x+30*fx, LU.y+30*lastfy);
Graph::ShowShadow(&cDC, tile.curTile, pt);
Point pt; //清洗掉上次的图形
pt = Point(LU.x+30*fx, LU.y+30*lastfy);
Graph::DrawTile(&cDC, tile.curTile, Graph::Col[7], pt);
pt = Point(LU.x+30*fx, LU.y+30*fy); // 绘制新的图形,不发生图形的改变 Graph::DrawTile(&cDC, tile.curTile, Graph::Col[tile.curCol], pt);
Graph::ShowNext(&cDC, tile.nextTile, Graph::Col[tile.nextCol]); // 显示下一个瓷片
ReleaseDC(&cDC);
CView::OnTimer(nIDEvent);
一个简单的MFC俄罗斯方块实现。
四、调试分析
菜单栏
当前砖块
显示阴影
提示用户
分数
一个简单的MFC俄罗斯方块实现。
五、用户使用说明
用户进入程序后,点击开始开始游戏,可以在游戏前设置难度,游戏中也可以通过暂停,继续键来暂停游戏。
游戏中:
上-----------------变形 下-----------------加速下降 左\右------------位置变化 空格-------------立即下降
六、测试结果
开始界面: 难度设置:
一个简单的MFC俄罗斯方块实现。
游戏正式开始: 游戏结束:
七、附录或参考资料
1.谭浩强.C++面向对象程序设计[M].北京:清华大学出版社,2006.
2. Visual C++从入门到精通[M].北京:人民邮电出版社,2010
正在阅读:
C++MFC课程设计-俄罗斯方块03-20
母亲节颜色12-19
中国现代名人小故事02-18
太极拳理论测试题01-07
高中地理:1.3《地球的运动》学案(2)(湘教版必修1)06-02
9000体系培训教材09-04
2016年高考原创押题卷(江苏卷)化学(解析版)含解析05-27
关节松动术10-28
浅谈如何提高小学数学课堂教学的有效性12-29
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 俄罗斯
- 方块
- 课程
- 设计
- MFC
- 剑桥国际儿童英语playway1单词和句型
- 2011年1月-2014年9月中国(HS87085089)未列名机动车进口量及进口额月度数
- xx市人工影响天气先进事迹
- 耳尖放血临床应用
- 山体滑坡及泥石流应急预案
- 诺基亚电池通用表
- 中职《职业生涯规划》第一单元第一课教案
- 研究生多维教程熟谙-课文翻译全本
- 小微企业融资难融资贵深层次原因解析
- 毕业论文设计 数控机床故障的诊断和维修
- 0.136%芸苔&183;吲乙&183;赤霉酸可湿性粉剂在苹果上的应用试验
- 明德小学心理咨询室工作制度
- 中国传统绘画与书法(传统绘画部分)
- 新疆的历史与文化
- 中国文化概论第五至七章
- 毛泽东诗词中的春
- 会计基础第一章总论
- 公开课乐理三和弦教学设计
- 道路桥梁文本文档
- 检体诊断学试题1卷