GridPicture.h
上传用户:z3308516
上传日期:2013-01-23
资源大小:703k
文件大小:3k
源码类别:

2D图形编程

开发平台:

Visual C++

  1. #pragma once
  2. /*
  3. author:snk12
  4. phone:13816097632
  5. 每消掉一个就重排相应的标签
  6. 消掉时产生声音---------------
  7.                             |同时,然后计算剩下的图像是否可以继续游戏下去,不行就重排
  8. 消掉时产生爆炸画面-----------
  9. 2次重排的道具
  10. 3次查找的道具
  11. 可以打出2次重排的道具
  12. 可以打出2次查找的道具
  13. 清掉以后为-1
  14. 计分,根据时间计分,跟具道具使用的次数计分,跟具难益度计分
  15. 12X7 21 easy
  16. 14X8 28 normal
  17. 16X9 36 complex
  18. typedef struct{
  19. byte flags; //flags&1=top flags&2=left flags&4=right flags&8=bottom
  20. long resourceid; //装要载入的图片ID
  21. }
  22. */
  23. typedef struct{
  24. long resourceid; //装要载入的图片ID
  25. RECT rc;
  26. }SINGLE_BLOCK,*PSINGLE_BLOCK;
  27. typedef struct{
  28. HWND hParent;
  29. RECT rc;
  30. }EXPLORE_STRUCT,*PEXPLORE_STRUCT;
  31. typedef enum{
  32. enumAny,
  33. enumRight,
  34. enumLeft,
  35. enumUP,
  36. enumDown}SEARCH_OPERATOR,*PSEARCH_OPERATOR;
  37. class CGridPicture
  38. {
  39. public:
  40. CGridPicture();
  41. ~CGridPicture(void);
  42. void CGridPictureInit(HWND hParent,int iHorz,int iVert,long lThumb,BOOL bSpecial=FALSE);
  43. void Draw(HDC hDC,PSINGLE_BLOCK arrayPic=arrayPic);
  44. // static void DrawToMemDC(HDC hDC,PSINGLE_BLOCK arrayPic);
  45. void Shuffle();
  46. bool Picture_Click(POINT &ptPos);
  47. void Discard();
  48. static int QueryResourceID(int ids,int idq);
  49. static LRESULT CALLBACK ThreadExplore(LPARAM lParam);
  50. static LRESULT CALLBACK ThreadWatch(LPARAM lParam);
  51. bool isCanLink(int id1,int id2,SEARCH_OPERATOR se,bool bfirst=true,int recur=3);
  52. static void FoundLink(CGridPicture *pgrid,int *id1,int *id2,BOOL &bFound);
  53. void SetSelect(int id);
  54. void DrawLinkLine(int id1,int id2);
  55. void Explore(int id1,int id2);
  56. void SetFenLevel(int ifen,int ilevel,int lv=0);
  57. void OrderPicture(int id1,int id2);
  58. void GetLevelAndFen(int &ifen,int &lv);
  59. void OutputWin(char * pszInfo);
  60. void CancelFocus();
  61. void ReadMap(LPCTSTR id);
  62. BOOL GetSound(){return bSound;}
  63. void SetSound(BOOL bSound){this->bSound=bSound;}
  64. protected:
  65. void ParsePosAndInvalidate(int id,BOOL bClear=FALSE);
  66. void Play(LPCTSTR pszRes);
  67. bool CanDirectToTop(int idq);
  68. bool CanDirectToLeft(int idq);
  69. bool CanDirectToRight(int idq);
  70. bool CanDirectToBottom(int idq);
  71. private:
  72. static HWND hParent;
  73. HBITMAP allThumb;
  74. POINT startPoint; //起点
  75. static int horzNum; //横向数目
  76. static int vertNum; //纵向数目
  77. static int picNum; //不同图案的数目
  78. static BOOL bTerminate; //是否可以继续GAME
  79. int focusid;
  80. BOOL bSound;
  81. BOOL bSpecial;
  82. int lv;
  83. int leftEdge;
  84. int rightEdge;
  85. int topEdge;
  86. int bottomEdge;
  87. int lThumb;
  88. int ifen;
  89. int ilevel;
  90. static SINGLE_BLOCK *arrayPic;
  91. HDC tempDC; //整体的THUMB存储的地方
  92. RECT rcPicture_region; //图片所占的位置空间
  93. PEXPLORE_STRUCT pe;
  94. BOOL bFirstDraw;
  95. POINT pt1,pt2;
  96. ///temp
  97. int picture_height;
  98. };