基于c语言贪吃蛇俄罗斯方块手机版下载,VC++C语言贪吃蛇与俄罗斯方块.doc

本文详细介绍了贪吃蛇游戏的类结构设计,包括蛇类(CSnake)和桌面类(CTable)。蛇类包含蛇头、蛇尾、位置等属性以及出生、移动、吃食等方法。桌面类则涉及桌面尺寸、食物、蛇等属性,并提供放置食物、检测碰撞等功能。文章还提及了游戏控制的实现,包括定时器机制和消息处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实例分析一、贪吃蛇

阶段一:贪吃蛇程序整体类结构

贪吃蛇游戏介绍

一条蛇在密闭的围墙内,在围墙内随机出现一个食物,通过按键盘上的四个方向键控制蛇向上接着又出现食物,等待被蛇吃掉,如果蛇在移动过程中,撞到墙壁或身体交叉蛇头撞到自己的身体游戏结束。

贪吃蛇游戏示意图:

贪吃蛇游戏类设计

贪吃蛇游戏需要设计两个类:

蛇类:蛇自身的属性包括蛇头、蛇尾、蛇的位置等等;蛇的方法包括出生、移动、吃食等等,CSnake类结构下图所示:

CSnake类属性成员变量名数据类型意 义m_lengthint蛇的长度m_newSnakeSnake_Struct蛇的新态的所有节点运动状态m_oldSnakeSnake_Struct蛇的旧态的所有节点运动状态m_pStateArrayBitmapState*蛇的所有节点显示位图的状态m_pPosSPoint*蛇体坐标方法成员函数名属 性函数功能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_widthint桌子的宽度m_heightint桌子的高度m_foodNumberint水果的数目m_blockNumberint障碍物(毒果)的数目m_snakeCSnake桌子上的蛇m_boardint**桌子面板(二维数组)方法成员函数名属 性函数功能InitialTable()public初始化桌面AddBlock()public在某个位置放置毒果AddFood()public在某个位置放置食物ClearFood()public清除某个位置的果实GetSnake()public获取蛇对象GetBoard()public取桌子对象GetData()public取桌子某个位置数据SnakeMove()public检测蛇头是否触碰到其身体ChangeSnakeDirect()public改变蛇的方向CTable()public构造函数~CTable()public析构函数阶段二:贪吃蛇程序整体类间调用关系

阶段三:Win32 SDK程序消息机制分析

阶段四:游戏控制的实现

因为有定时器,所以蛇会定时自动移动,为了蛇能继续长大、不碰壁和碰到毒果,必

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值