CGameTetris.h
上传用户:snevogroup
上传日期:2008-06-06
资源大小:432k
文件大小:2k
源码类别:

Symbian

开发平台:

C/C++

  1. #ifndef __CGAMETETRIS_H
  2. #define __CGAMETETRIS_H
  3. #include <w32std.h>
  4. #include "TGrid.h"
  5. #include "TBlock.h"
  6. const TUint8 COLORNUM = 9;
  7. class CGameTetris : public CBase
  8. {
  9. // construct and destruct
  10. public:
  11. static CGameTetris* NewL();
  12. ~CGameTetris();
  13. private:
  14. void ConstructL();
  15. CGameTetris();
  16. ///////////////////////////////////////////////////////////////////////////////
  17. // method
  18. public:
  19. TBool Command(TInt aCommand);
  20. void Draw(CFbsBitGc* aBackBufferGc);
  21. TInt8 Run();
  22. // Other Method 
  23. private:
  24. void LoadResL();
  25. TBool MoveTo(const TPoint& aNewPos); 
  26. void Rotate();
  27. // create a new block
  28. void NewBlock();
  29. // Start a new game
  30. void StartNewGame();
  31. // 
  32. TBool IsBlock(const TPoint& aPos) const;
  33. // Get a row from Grid
  34. void GetRowContent(TUint8 aRow, TFixedArray<TUint8, KGridX>& aRowContent);
  35. // check if a row is full
  36. TInt CheckRows();
  37. // start lines
  38. void StartLines(TUint8 aLines);
  39. // calculate score
  40. void Calculate(TInt rows);
  41. TBool FixBlock();
  42. ///////////////////////////////////////////////////////////////////////////////
  43. // Data
  44. private:
  45. TFixedArray<CFbsBitmap*, COLORNUM> iBmpBlock;
  46. CFbsBitmap* iBmpBackground;
  47. TGrid iGrid;
  48. TBlock iBlock;
  49. TBlock iBlockNext;
  50. TPoint iBlockPos;
  51. TInt64 iSeed;
  52. TInt iDelay;
  53. TInt iLine;
  54. TInt iLevel;
  55. public:
  56. // Game State
  57. TInt iStateScore;
  58. TUint8 iStateDifficulty;   // 0 or 1 or other num
  59. TInt8 iStateRotateDir; // 1 or -1
  60. TBool iStateRunning;
  61. TBool iStateLevelUp;
  62. TBool iStateWellDone;
  63. TBool iStateClearRow;
  64. TUint8 iStateStartLines;
  65. };
  66. #endif