📄 tetrisdata.h
字号:
//---------------------------------------------------------------------------
#ifndef TetrisDataH
#define TetrisDataH
//---------------------------------------------------------------------------
#include <vcl.h>
//---------------------------------------------------------------------------
class TBaseTetris
{
public:
static const MapXsize = 9;
static const MapYsize = 16;
#pragma pack(push,1)
typedef unsigned char TTetrisUnit[4][4];
typedef struct
{
TTetrisUnit un[4];
int 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,
};
__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 TTetrisUnits *IncomingUnits = { read = fGetIncmUnit };
void NewGame(void);
void Move(int iMdir);
TBaseTetris();
~TBaseTetris();
private:
static const NumUnits = 7;
static const TTetrisUnits BaseUnits[NumUnits];
int Ux0, Uy0;
TTetrisUnits CurrUnit, IncmUnit;
TTetrisBuffer DispBuffer, BlockBuffer;
TTetrisBuffer *fGetDispBuf(void) { return &DispBuffer; }
TTetrisUnits *fGetIncmUnit(void) { return &IncmUnit; }
bool _bStarted, _bGameOver;
int _iRemoving, _iScore, _iLines;
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);
};
//---------------------------------------------------------------------------
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -