- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
程序设计类课专程周设计
专 周 报 告
课程名称 面向对象程序设计专周 专周题目 俄罗斯方块游戏 姓 名 班 级 学 号 指导教师 设计时间
目 录
一、题目和设计要求 1
二、设计与实现 2
1、分析问题 2
2、设计思路 2
4、功能实现 5
5、典型算法和技巧分析,调试体会 7
三、专周小结 9
四、参考文献 10
一、题目和设计要求
专周题目:
俄罗斯方块游戏
设计要求:
用单文档来制作一个俄罗斯方块游戏,玩家可以通过键盘操作或快捷键来玩游戏。我做为小组成员负责界面美化,添加音乐,和视图类这三部分。
题目要求如下:
1.有一个可视化的界面,玩家可以按游戏的选项(开始,暂停,退出等)来操作游戏。
2.玩家可以执行游戏方块的移动操作:一般为移动键盘左、右、下键来向左、右、下来移动方块;还可以执行方块变形的操作:可用上键来变形方块
3.当玩家将游戏方块排满一行(或几行)游戏自动消行,分数也将增加(如消一行加100)
难度也会以系统设置相应的增加(如分数为500是难度为1,再加500时难度就加1为2)
4.如果玩家将方格堆积触到了界面顶端,此时即游戏结束,游戏弹出提醒菜单。
二、设计与实现
1、分析问题
编写俄罗斯方块游戏,首要考虑的是界面的问题要有一个相对美观的界面,可以用Photoshop做,也可以直接用MFC做。
界面做好后,就要考虑七种方块的移动操作 、显示等等一系列的问题。首先,我们要把七种方块用二维数组的方式控制;其次,在游戏中将这七种方块随机的挑选出来显示在屏幕上,根据键盘事件进行移动、旋转;最后,判断到达底部的方块是简单叠加还是引发消除事件。
考虑方块的几种形状,变形时,要对图形变换的情况作出判断,判断其可以变几种形,以及怎样来实现变形。
如何控制方块的下落速度,如何实现左移、右移、下落,如何消行,如何记分,又如何加速等等都是需要考虑的问题。
对于如何决定下一个怎样的方块,可以采取随机数,用随机数来决定方块。
需要判断是否需要消行,如果消行,需判断消的行数,及所需加相应的分数。
随着分数的改变自动升级部分:可根据所得的分数进行自动升级,标准什么?采用怎样的升级方式?分数与等级之间怎样分配比例?
背景音乐部分:点击背景音乐菜单中的开始出现一个窗口,可进入电脑中选择自己喜欢的音乐,怎样让音乐暂停?
2、 设计思路
首先运行程序,出现游戏界面,在游戏菜单子菜单-开始,玩家可以鼠标点击,也可以按快捷键F2来开始游戏。
游戏开始,会随机的出现方块类型,方块以设定的速度下落。
玩家可以用键盘上的方向键,左、右、下键来向左、向右、向下移动方块,还可以用上键来变形。
d) 玩家如果把方块拼成满行,(满12列),方块将自动消行,并且在分数上相应的增加,难度上也对应增加。同时一相应的难度增加相应的速度。
e) 游戏有暂停功能(F3)
游戏进行时的图片:
4、功能实现
1,我的整个模块是一个Tetris方块类编写。
具体包括Tetris方块类中的
//游戏数组
int Russia[100][100];
// 当前图形
int Now[4][4];
//上一图形
int Will[4][4];
//变换后的图形
int After[4][4];
//当前图形的左上角位置
CPoint NowPosition;
//当前可能出现的图形形状数,
int Count;
//游戏结束
bool end;
//级别
int m_Speed;
//分数
int m_Score;
//行列数
int m_RowCount,m_ColCount;
//方块
//显示分数等内容
void DrawScore(CDC*pDC);
//消行
void LineDelete();
//方块移动
void Move(int direction);
//方块变化,即方向键上键操作
bool Change(int a[][4],CPoint p,int b[][100]);
//是否与原来方块接触,或与边界接触
bool Meet(int a[][4],int direction,CPoint p);
//显示下一个方块
void DrawWill();
//显示界面
void DrawJiemian(CDC*pDC);
//开始
void Start();
以下即为我负责编写的函数以及相应的注释:
void CT
原创力文档


文档评论(0)