贪吃蛇VC课程设计毕业论文 - 图文(2)
VC课程设计报告
第三章 软件实现
3.1变量函数及资源的声明
根据程序的结构,将贪吃蛇需要实现的功能细化成为相应的函数。
3.1.1函数声明
void CYuShuoView::OnDraw(CDC* pDC)
//在OnDraw函数中绘制游戏背景、游戏文字以及控制蛇的样式颜色。
void CYuShuoView::YsInitFood() //初始化贪吃蛇的食物,使其随机生成 void CYuShuoView::YsInitGame() //初始化贪吃蛇游戏参数 void CYuShuoView::YsReDisplay(CPoint ysPoint) //重绘游戏窗口
void CYuShuoView::OnYsBegin() //开始游戏(菜单响应消息) void CYuShuoView::OnYsPause() //暂停游戏(菜单响应消息) void CYuShuoView::OnYsStop() //停止游戏(菜单响应消息) void CYuShuoView::OnYsExit() //退出游戏(菜单响应消息) void CYuShuoView::OnYsEffect() //控制游戏音效 void CYuShuoView::OnYsMusicbkg() //控制游戏背景音乐 void CYuShuoView::OnYsLevel1() //控制游戏等级为初级 void CYuShuoView::OnYsLevel2() //控制游戏等级为中级 void CYuShuoView::OnYsLevel3() //控制游戏等级为高级 void CYuShuoView::OnYsHelpgame() //游戏帮助 void CYuShuoView::OnYsBest() //英雄榜的显示
3.1.2变量声明
CArray
int m_ysTime1; //满10则进一位使时间增加1秒 int m_ysDirect; //方向控制变量 int m_ysScore; //玩家成绩变量 int m_yspausectrl; //暂停控制变量 int m_yslevelctrl; //等级控制变量
- 4 -
VC课程设计报告
CString m_ysPlayer; //玩家姓名 int m_yseffectctrl; //音效控制变量 int m_ysmusicctrl; //背景音乐控制变量
3.1.3资源
1、对话框
IDD_YS_HELPGAME //游戏帮助说明 IDD_YS_BEST //英雄榜 IDD_YS_RETRY //停止游戏确认 IDD_ABOUTBOX //关于游戏版本 2、音乐
IDR_YS_BKGMUSIC //游戏背景音乐
IDR_YS_EAT //贪吃蛇吃到食物的音乐 IDR_YS_LOWSCORE //游戏结束后得低分音乐 IDR_YS_HIGHSCORE //游戏结束后得高分音乐 3、位图
IDB_YS_BITMAP //游戏背景图 4、菜单/工具栏
IDR_MAINFRAME //系统自带菜单
IDR_YS_TOOLBAR //自己创建的工具条 5、头文件
mmsystem.h //播放音乐的相应文件 fstream.h //文件流文件
3.2主要功能的实现 3.2.1游戏界面
贪吃蛇游戏的游戏界面包括背景图片、蛇身体的绘制、蛇移动范围的绘制等等。其中贪吃蛇的身体用什么方法绘制,才可以使得其在游戏过程中可以实现“吃”的功能是很重要的。因此在游戏界面的初始绘制时就必须考虑到游戏时可能遇到的问题。
本程序采用点数组CArray
- 5 -
VC课程设计报告
的帮助。
导入位图以及菜单工具条后,游戏未开始前(XP系统下)的界面显示如图3-1所示
图3-1 游戏初始界面显示
3.2.2初始化食物
确定用点数组存储贪吃蛇以后,贪吃蛇的食物如何达到随机出现,并且能够按照网格式与蛇头无偏差相接就是一个亟待解决的问题。
随机出现应采用rand()函数来实现,而食物与蛇头无偏差相接则利用坐标来解决。设置两个整型变量m_ysX,m_ysY作为食物出现的点的坐标,令m_ysX= rand()0, ,m_ysY= rand()@即可。使随机出现的点能够整除最小网格,也就是使食物与蛇头无偏差相接。
再由食物坐标(m_ysX,m_ysY)与蛇头坐标是否相同判断蛇是否“吃”到了食物,设置判断标签ysTag,如果吃到了,ysTag为1,则再出现下一个食物,反之,如果没吃到,则不出现食物直到
- 6 -
VC课程设计报告
标签为1为止。
最后,再将(m_ysX,m_ysY)赋给m_ysFood作为食物坐标,以便在其他函数中调用。在下面的图3-2中,我们可以看到,蛇的身体是与出现的食物在一条直线上的,完全可以达到相接的目的。
图3-2 蛇与食物的相接
3.2.3开始游戏
开始游戏后的重点是如何用键盘来控制蛇的移动并传递到OnTimer(UINT nIDEvent)函数中去以及判断蛇是否死亡。首先说明键盘与蛇的响应,设置一个方向控制变量m_ysDirect,再添加OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)函数来实现键盘消息的传递,按下不同的键盘按键,m_ysDirect会相应的改变,再利用switch语句在OnTimer(UINT nIDEvent)函数中对坐标进行相应改变即可。如图3-3所示。
(1)左 (2)下 (3)右 (4)上
图3-3 键盘的上下左右键的效果
- 7 -
VC课程设计报告
其次来解释一下如何判断蛇的死亡,由于蛇的身体是由点坐标数组构成的,因此判断蛇是否死亡其本质就是判断蛇头的坐标是否与游戏边框相同或者蛇头坐标是否与蛇自己的身体相同。该过程也在OnTimer(UINT nIDEvent)函数中写入即可,设置一个判断死亡变量ysTag1,当按下向下键时,蛇纵坐标不断自加,此处仅以向下为例,具体程序如下:
switch(m_ysDirect) //根据键盘按下键来选择蛇移动的方向 {
case 1: //方向变量向下 }
如果ysTag1为1,则说明蛇已经死亡,应当弹出对话框提示死亡,输出得分(如图3-4),同时还可以根据玩家的得分数相应的改变对话框中的话语(XP系统下)。
ysPoint2.y++; //点纵坐标自加
if(ysPoint2.y>=40) //如果纵坐标多于最下端边框 { } break;
ysTag1=1; //变量为1,判断死亡
图3-4 贪吃蛇的死亡
- 8 -
…… 此处隐藏:1223字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [基础教育]2016-2022年中国钢芯铝绞线市场现状调
- [基础教育]语文部编版初一语文下册练习题 句式变
- [基础教育]南京继续教育参考答案--深入学习贯彻习
- [基础教育]国旗下讲话稿——珍惜时间好读书
- [基础教育]北师大版六年级数学下册圆锥的体积教学
- [基础教育]人教版-音乐-四年级下册-四年级下册音
- [基础教育]乔布斯2019年斯坦福大学毕业典礼致辞.d
- [基础教育]2015年加油站安全知识竞赛试题及答案
- [基础教育]2020年教师年度考核个人工作总结
- [基础教育]2019年中考历史试题-2019年大庆市初中
- [基础教育]初三仁爱英语第一轮总复习教案
- [基础教育]SG-A094电气配管安装工程隐蔽验收记录
- [基础教育]冀教版小学数学三年级下册第六单元教材
- [基础教育]青岛版(五制)小学科学二年级下册16《制
- [基础教育]2018-2019年初中科学初一中考真卷测试
- [基础教育]幼儿园大班期末简短评语精选
- [基础教育]2018云南临沧公务员考试申论技巧:这样
- [基础教育]学校食堂经营管理方案
- [基础教育]新中国砥砺奋进的七十年原文
- [基础教育]真空泵的选型及常用计算公式
- 高职田径课程教学现状与对策
- 全髋关节置换术在老年股骨颈骨折患者中
- 青人社厅函〔2016〕576号(附件)工资
- cp101-07砂子检验作业指导书 - secret
- 微观经济学 第八章 博弈论 习题
- 2014高考真题(词语运用)汇编及答案
- 2018年人教版七年级语文下册《第三单元
- 苏教版数学四年级上册第一单元试题 - M
- 四川大学新闻与传播考研2000-2010年真
- 浙江万里学院英语专业四年制本科教学计
- 最新2018马年事业祝福语-范文word版(2
- 最全模具行业术语英文翻译
- 皮亚杰的发展心理学理论
- 64篇高考情景式默写 练习题及答案
- 仿写(学生稿)
- 《SQL Server数据库技术》试卷A
- 第七章作业答案
- 江苏省赣榆县海头高级中学高中语文必修
- 浙江省2001年10月自考正常人体解剖学答
- 2012英语重点短语




