MFC实现贪吃蛇小游戏

来源:互联网 发布:顶点软件股票 编辑:程序博客网 时间:2024/05/16 09:19
1、概述    

贪吃蛇是一个很经典的小游戏,这里介绍如何分离UI和逻辑来设计该游戏。

  2、设计思路

  整个游戏有三个组成部分:背景面板、食物、蛇。面板划分成不同的网格,食物和蛇都出现在网格中。

  1)食物的随机生成要保证在网格内;

  2)蛇的移动要保证按照格子大小进行。

  3、类描述

  1)属性  

 1 /**食物  2 * 1.位置 3 * 2.宽度 4 * 3.高度 5 */ 6  7 class CFood 8 { 9     private:10         CPoint m_nPos;11         int         m_nWidth;12         int         m_nHeight;    13 }
 1 /** 2 * 蛇身 3 * 1.位置 4 * 2.宽度 5 * 3.高度 6 */ 7  8 class CSection 9 {10     private:11         CPoint m_nPos;12         int         m_nWidth;13         int         m_nHeight;    14 }
 1 /** 2 * 蛇 3 * 1.移动方向 4 * 2.蛇头位置 5 * 3.蛇身集合 6 */ 7  8 typedef enum 9 {10     LEFT, RIGHT, TOP, BOTTOM11 }DIRECTION;12 13 class CSection14 {15     private:16         DIRECTION  m_way;17         CPoint         m_head;18         CPtrList       m_list;19 }

  2)行为

 1 /** 2 * 1.形状展示 3 * 2.获取位置 4 * 3.设置位置 5 */ 6  7 class CFood 8 { 9     public:10         void Draw(CDC *pDC);11         CPoint& GetPosition();12          void SetPosition(CPoint &pos);    13 }
 1 /** 2 * 1.形状展示 3 * 2.获取位置 4 * 3.设置位置 5 */ 6  7 class CSection 8 { 9     public:10         void Draw(CDC *pDC);11         CPoint& GetPosition();12          void SetPosition(CPoint &pos);    13 }
 1 /** 2 * 1.形状展示 3 * 2.获取位置 4 * 3.设置位置 5 * 4. 移动 6 * 5. 移动方向的设置或获取 7 * 6. 吃食物 8 * 7. 是否结束(碰到墙或自身) 9 */10 11 class CSnake12 {13     public:14         void Draw(CDC *pDC);15         void EatFood();16         bool IsOver();17         void Move();18         void SetWay(DIRECTION dir);19         DIRECTION GetWay;    20 }

  4、运行结果

  

  完整代码:

  https://git.oschina.net/zhujf21st/Snake.git

 

原创粉丝点击