《2022年程序设计文档 .pdf》由会员分享,可在线阅读,更多相关《2022年程序设计文档 .pdf(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、蛇吞食程序设计【摘要】本游戏设计采用MFC 编程,对键盘消息、定时器消息、图形界面等三个主要模块进行设计, 可视化强。本游戏初始编写比较基础, 程序代码相对简单。此游戏具有可靠性,安全性以及低成本等特点。【关键词】键盘消息定时器消息图形界面一功能模块的划分整个界面由一个长宽为540*540 的矩形框(此为蛇的活动范围和食物出现的范围)、分数栏等构成。键盘消息 :按动键盘、使蛇的方向进行改变。定时器消息 :整个程序只用到一个定时器,在OnStart()里对定时器进行设定SetTimer(1,100,NULL) ,在 OnTimer()中对蛇和食物进行处理:第一关:将block设置为 1,当分数超
2、过 10 分蛇不能通过墙壁;第二关:将block 设置为 2,设置名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 8 页 - - - - - - - - - 障碍物并且蛇不能碰到墙壁,但有最低分数为20 分。图形界面 :位图处理:在 OnDraw()里面画出蛇和食物的图片。一张蛇图有四个方向的四条蛇,改变x_org(横坐标)、y_org(纵坐标)、t_org(宽度) 、b_org(长度) 、t_org1(蛇图显示区域的横坐标)的值来控制蛇不同方向的运动,用rand()来随
3、机产生食物的图片。在执行Invalidate()时自动显示位图的不同状态。菜单功能模块: Set包含 Start、Gameover、First、Second 。Start 启动定时器、Gameover关掉定时器并且退出游戏界面。 First和 Second分别选择游戏级别。Help是游戏的说明。二程序流程程序流程 :1.程序执行 Ondraw()函数部分,显示出蛇朝右的图片和食物图片。2.选择级别 First 或者 Second,此时程序会调用 OnFirst ()或 OnSecond ()改变 block 的值。若选择的 First,block 将赋值为 1,然后选择 Start 程序调用
4、OnStart () 函数,将 m_nStart 赋值为 1, 程序将执行第一关的代码,蛇能够穿墙而过。 如果分数超过 10 分 (即 score10) , 游戏将自动升级,蛇不能穿墙而过,碰到墙壁蛇将死亡;若选择的Second ,block 将赋值为 2,然后选择 Start 程序调用 OnStart()函数,将 m_nStart 赋值为 1,程序将执行第二关的代码,蛇不能够穿墙而过,而且在活动范围内有障碍物,但有最低分20 分,若碰到墙壁或障碍物蛇将死亡。3.在选择 Start 后,程序自动启动定时器,执行OnTimer()部分的代码,若 block=1,执行第一关的代码,蛇可以分别在四个
5、方向上运动,score自动加分直到超过10,则改变代码蛇不能撞墙。若撞墙则KillTimer()并将 score置为 0;4.在执行 OnTimer ()部分的代码时, 要不断执行 Invalidate ()进行刷新,然后调用 Ondraw() ,画出不同状态下的图形。5.选择 GameOver选项,调用 OnEnd ()函数,使 m_nstart=0, KillTimer ()并且退出游戏。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 8 页 - - - - - -
6、- - - 程序流程图 :先执行一次Ondraw()在Start中选择First或Second选择First选择Second执行OnFirst()函数,使 block=1执行 OnSecond()函数,使 block=2选择 Start执行OnStart()函数使m_nStart=1并启动定时器调用 Invalidate()时又执行Ondraw()执行 OnTimer()中的部分在block=1时执行第一关部分的代码,并 score10 部分执行另一部分代码在block=2时执行第二关部分的代码,并增加图形选择 Game over,KillTimer ()并退出游戏撞到墙,此次游戏结束撞到墙或
7、障碍物,此次游戏结束三 概要设计1.编写目的概要设计为“蛇吞食”客户端的开发提供基本的设计基础。背景:蛇吞食是源于贪吃蛇开发的一种变种的基础游戏,主要针对手机小游戏进名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 8 页 - - - - - - - - - 行开发。 “蛇吞食”主要目的在于供人娱乐和消遣,此游戏开发代码简单。2.参考资料 :Visual c+ 与面向对象程序设计教程MFC程序开发大全游戏编程精粹 6 3.基本设计概念和处理流程本游戏主要由键盘消息、 定时器
8、消息和图形界面三部分功能模块构成。定时器又分为第一关模块和第二关模块;图形界面又分为位图处理模块和菜单功能模块。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 8 页 - - - - - - - - - 下图为各功能模块的关系图:用户运行游戏图像界面第一关模块第二关模块位图处理模块菜单功能模块定时器消息键盘消息4.结构功能模块子功能模块标识符功能描述与其它各模块的关系键盘消息无OnKeyDown 改变蛇图的方向在图形界面的 Ondraw函数中在一张位图中截取不同方向的蛇图
9、定时器消息第一关模块OnTimer 蛇可以分别在四个方向上运动, score自动加分直到超过10, 则改变代码蛇不能撞墙。若撞墙则KillTimer()并将不断对图像进行刷新然后蛇自由的在活动范围内移动,在此会涉及到键盘消息改变蛇移动的方向,也会调用 Ondraw ()进行图像的处理名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 8 页 - - - - - - - - - score置为 0 第二关模块OnTimer 蛇可以分别在四个方向上运动,限制蛇的活动范围不断对图像
10、进行刷新然后蛇自由的在活动范围内移动,在此会涉及到键盘消息改变蛇移动的方向,也会调用 Ondraw ()进行图像的处理图形界面位图处理模块Ondraw 画出可视化界面, 矩形框、蛇图、食物图片、显示分数等在 OnTimer里面进行刷新时自动调用 Ondraw ()达到显示不同位置和方向的蛇图、不同位置的食物图、 在玩游戏过程中的分数和最后的总分数。菜单功能模块Set、Help Set里面选择级别和开始; Help 选择Introduce 查看游戏的操作说明5.功能需求与程序的关系各项功能需求的实现同各块程序的分配关系:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - -
11、 - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 8 页 - - - - - - - - - OnDraw OnInvalidate OnIntroduce OnFirst OnSecond OnStart OnEnd OnKeydown OnTimer 键盘消息定时器消息位图处理模块菜单功能模块6.人工处理本游戏只由用户按动控制蛇运动方向,防止碰到墙或障碍物即可。尚未解决的问题7.用户接口用户接口的设计按照友好性,更多的采用图形界面。规范操作命令和方法、用户界面、菜单结构、移动提示、弹出弹入图符、 警告提示的信息、 帮助的提示。键盘消息:用户只需
12、要按动上下左右键控制蛇方向即可。定时器消息: 用户只需在菜单中选择需要的关卡,就可启动后台程序。 并通过观察蛇的运动速度便可掌握蛇自由移动的大致时间。图形界面: 用户通过菜单选择启动后台程序,蛇碰到墙壁或障碍物, 则会出现信息提示;通过视图玩游戏,界面简单,从而操作也简单。在玩游戏的过程中可以看到自己当前的分数,游戏结束时可以看到总分。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 8 页 - - - - - - - - - 8.出错信息用户在玩游戏过程中按到错误的键盘会
13、显示信息提示“对不起,按键错误,请重新选择!” ;蛇撞墙或障碍物,会提示“笨蛋,蛇撞墙了!”总结在此次课程设计中, 编写程序遇到了不少麻烦, 比如怎样使蛇自由的活动起来、 怎样使用定时器等。 幸亏有老师和同学的帮助, 才能将这些问题一一的解决。我感觉在编写程序的时候要先规划好先做哪一步,再做哪一步,在每编写好一个模块后要及时的进行调试, 以保证程序在整个过程中的正确性。在做此次课程设计之前就先定好了题材,做出粗略的规划:第一步:建立好工程,处理位图;第二步:编写键盘消息的程序,与此同时配合位图进行处理;第三步:处理定时器的消息并且能使位图活动起来;第四步: 处理图形界面的菜单选项。 编写游戏时要有绝对好的耐心, 在此期间会出现各种各样意想不到的困难,此时绝对不能被困难打到,要仔细分析虚心向老师和同学请教并且查阅相关的资料,进而才能很好的解决问题。 在本次课程设计制作过程中, 我们意识到考虑问题要合理谨慎全面,学习要谦虚,在此也感谢老师和同学对我的帮助。在以后的学习工作中,一定要继续坚持不断地学习新兴的专业知识及相关的非专业知识,只有这样将作品制作的更精美,更专业。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 8 页 - - - - - - - - -
限制150内