- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实例分析一、贪吃蛇
阶段一:贪吃蛇程序整体类结构
贪吃蛇游戏介绍
一条蛇在密闭的围墙内,在围墙内随机出现一个食物,通过按键盘上的四个方向键控制蛇向上接着又出现食物,等待被蛇吃掉,如果蛇在移动过程中,撞到墙壁或身体交叉蛇头撞到自己的身体游戏结束。
贪吃蛇游戏示意图:
贪吃蛇游戏类设计
贪吃蛇游戏需要设计两个类:
蛇类:蛇自身的属性包括蛇头、蛇尾、蛇的位置等等;蛇的方法包括出生、移动、吃食等等,CSnake类结构下图所示:
CSnake类 属性成员 变量名 数据类型 意 义 m_length int 蛇的长度 m_newSnake Snake_Struct 蛇的新态的所有节点运动状态 m_oldSnake Snake_Struct 蛇的旧态的所有节点运动状态 m_pStateArray BitmapState* 蛇的所有节点显示位图的状态 m_pPos SPoint* 蛇体坐标 方法成员 函数名 属 性 函数功能 GetRightState() private 返回当前应当显示的身体状态 Move() public 蛇移动 ChangeDirect() public 改变移动方向 AddBody() public 蛇的身体增长 SetHeadPos() public 设置蛇头的坐标 GetStateArray() public 取蛇的状态标识数组 GetPos() public 取蛇的位置数组 IsHeadTouchBody() public 检测蛇头是否触碰到其身体 GetLength() public 获取蛇身的长度 Initial() public 游戏初始化 CSnake() public 构造函数 ~CSnake() public 析构函数 注:
Snake_Struct为结构体类型,定义为:
struct Snake_Struct//定义蛇体状态
{
MoveState head; //头部
MoveState *body; //身体
MoveState tail; //尾部
};
MoveState为枚举类型,定义为:
//节点运动状态(方向),4个成员分别对应4个方向
enum MoveState{S_NONE,S_UP,S_DOWN,S_LEFT,S_RIGHT};
BitmapState为枚举类型,定义为:
//节点图像显示运动状态(方向),第一个成员代表无方向,后12个成员之分别对应12个方向
EnumBitmapState{M_NONE,M_UP_UP,M_DOWN_DOWN,M_LEFT_LEFT,M_RIGHT_RIGHT,M_UP_LEFT,M_UP_RIGHT,M_LEFT_UP,M_LEFT_DOWN,M_RIGHT_UP,
M_RIGHT_DOWN,M_DOWN_RIGHT,M_DOWN_LEFT}
SPoint为结构体类型,定义为:
struct SPoint{
int x,y;// 横、纵坐标
};
桌面类:桌面类的属性包括桌子的宽度、高度、食物、蛇等等;方法包括设置桌面环境,获取食物等等,CTable类结构下图所示:
CTable类 属性成员 变量名 数据类型 意 义 m_width int 桌子的宽度 m_height int 桌子的高度 m_foodNumber int 水果的数目 m_blockNumber int 障碍物(毒果)的数目 m_snake CSnake 桌子上的蛇 m_board int** 桌子面板(二维数组) 方法成员 函数名 属 性 函数功能 InitialTable() public 初始化桌面 AddBlock() public 在某个位置放置毒果 AddFood() public 在某个位置放置食物 ClearFood() public 清除某个位置的果实 GetSnake() public 获取蛇对象 GetBoard() public 取桌子对象 GetData() public 取桌子某个位置数据 SnakeMove() public 检测蛇头是否触碰到其身体 ChangeSnakeDirect() public 改变蛇的方向 CTable() public 构造函数 ~CTable() public 析构函数 阶段二:贪吃蛇程序整体类间调用关系
阶段三:Win32 SDK程序消息机制分析
阶段四:游戏控制的实现
因为有定时器,所以蛇会定时自动移动,为了蛇能继续长大、不碰壁和碰到毒果,必
原创力文档


文档评论(0)