⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tetrisdata.h

📁 俄罗斯方块双打版
💻 H
字号:
//---------------------------------------------------------------------------

#ifndef TetrisDataH
#define TetrisDataH
//---------------------------------------------------------------------------

#include <vcl.h>
//---------------------------------------------------------------------------
class TBaseTetris
{
public:
  static const MapXsize  =  9;
  static const MapYsize  = 20;

  #pragma pack(push,1)
  typedef unsigned char TTetrisUnit[4][4];
  typedef struct
   {
     TTetrisUnit un[4];
     int a,x,y,r;
   } TTetrisUnits;
  typedef struct
   {
     unsigned char TetrisBuffer[MapYsize][MapXsize];
   } TTetrisBuffer;
  #pragma pack(pop)

  enum TMoveDir
   {
     btmLeft  = 1,
     btmRight = 2,
     btmDown  = 3,
     btmCW    = 4,
     btmCCW   = 5,
   };

  enum TBlockAttr
   {
     tbaBomb = 0x0001,
   };

  __property bool Busy = { read = fGetBusy };
  __property bool Started = { read = _bStarted };
  __property bool GameOver = { read = _bGameOver };
  __property int Score = { read = _iScore };
  __property int Lines = { read = _iLines };

  __property TTetrisBuffer *DisplayBuffer = { read = fGetDispBuf   };
  __property TTetrisBuffer *TetrisBuffer  = { read = fGetTetirsBuf };
  __property TTetrisUnits *IncomingUnits  = { read = fGetIncmUnit  };

  void NewGame(void);
  void Move(int iMdir);
  void AddLines(int Ln);
  void AddMonsters(int Mn) { _iMonsters+=Mn; }
  void AddBombs(int Bn) { _iBombs+=Bn; }

  TBaseTetris();
  ~TBaseTetris();

private:
  static const NumUnits = 7;
  static const NumMonsters = 8;
  static const TTetrisUnits BaseUnits[NumUnits+NumMonsters+1];
  static bool RandomInitialized;

  int Ux0, Uy0;
  TTetrisUnits CurrUnit, IncmUnit;
  TTetrisBuffer DispBuffer, BlockBuffer;

  TTetrisBuffer *fGetDispBuf(void)   { return &DispBuffer;  }
  TTetrisBuffer *fGetTetirsBuf(void) { return &BlockBuffer; }
  TTetrisUnits *fGetIncmUnit(void)   { return &IncmUnit;    }

  bool _bStarted, _bGameOver;
  int _iRemoving, _iScore, _iLines, _iMonsters, _iBombs;

  bool fGetBusy(void) { return _iRemoving!=0; }

  int CheckUnit(int x, int y, int r);
  int TryToRemove(void);
  void GenNewUnit(void);
  void DispTetris(void);
  void AddScore(int iRmv);
  void CheckBomb(void);
};
//---------------------------------------------------------------------------

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -