MFC實現貪吃蛇小游戲


  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, BOTTOM
11 }DIRECTION;
12 
13 class CSection
14 {
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 CSnake
12 {
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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM