snake.h
上传用户:hbrsgg1
上传日期:2014-05-08
资源大小:2826k
文件大小:2k
源码类别:

其他智力游戏

开发平台:

C/C++

  1. /*++
  2. Copyright (c) 2004-2005  AFE(Active-Free-Elegance)
  3. Module Name:
  4.     snake.h
  5. Abstract:
  6.     the class of Snake,including the basic-method 
  7. such as : move,born,and eat,and so on.
  8. Author:
  9.     Weijian Luo (Arthur Luo)   15-Jun-2005
  10. E-mail: skybluehacker@yahoo.com.cn
  11. Revision History:      1.0
  12. --*/
  13. #ifndef _GREED_SNAKE_
  14. #define _GREED_SNAKE_
  15. #define SNAKE_MOVE 1
  16. #define SAFE_DELETE(p) {delete (p);(p)=NULL;}
  17. #define SAFE_DELETE_ARRAY(p) {delete[](p);(p)=NULL;}
  18. #include <stdio.h>
  19. //节点图像显示运动状态(方向)
  20. enum BitmapState{M_NONE,M_UP_UP,M_DOWN_DOWN,M_LEFT_LEFT,M_RIGHT_RIGHT,
  21. M_UP_LEFT,M_UP_RIGHT,M_LEFT_UP,M_LEFT_DOWN,
  22. M_RIGHT_UP,M_RIGHT_DOWN,M_DOWN_RIGHT,M_DOWN_LEFT};
  23. //节点运动状态(方向)
  24. enum MoveState{S_NONE,S_UP,S_DOWN,S_LEFT,S_RIGHT};
  25. //坐标位置结构
  26. struct SPoint
  27. {
  28. int x;
  29. int y;
  30. };
  31. class CSnake
  32. {
  33. struct Snake_Struct//定义蛇体状态
  34. {
  35. MoveState head;  //头部
  36. MoveState *body; //身体
  37. MoveState tail; //尾部
  38. };
  39. private:
  40. int m_length;                 //蛇的长度
  41. Snake_Struct m_newSnake;      //蛇的新态的所有节点运动状态
  42. Snake_Struct m_oldSnake;      //蛇的原态的所有节点运动状态
  43. BitmapState *m_pStateArray;   //蛇的所有节点显示位图的状态
  44. SPoint *m_pPos;                //蛇体坐标
  45. private:
  46. BitmapState GetRightState(MoveState oldDirect,MoveState newDirect);
  47. public:
  48. void Move(void);          
  49. void ChangeDirect(MoveState d);
  50. void AddBody(int n=1);
  51. void SetHeadPos(int x,int y);
  52. BitmapState* GetStateArray(void);
  53. SPoint* GetPos(void);
  54. bool IsHeadTouchBody(int x,int y);
  55. int GetLength( void );
  56. void Initial( void );
  57. public:
  58. CSnake(int x_pos=0,int y_pos=0,int len=1);
  59. ~CSnake();
  60. };
  61. #endif //_GREED_SNAKE_