tetrisdata.h

来自「俄罗斯方块双打版」· C头文件 代码 · 共 90 行

H
90
字号
//---------------------------------------------------------------------------

#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 + =
减小字号Ctrl + -
显示快捷键?