📄 square.h
字号:
#ifndef _SQUARE_H_
#define _SQUARE_H_
#ifdef OSD_GAME_TETRIS
// Tetris Main State
enum
{
SQ_MENU_STATE,
SQ_PLAY_STATE,
SQ_DIALOG_STATE,
SQ_STATE_NS
};
// Tetris Menu Item
enum
{
SQ_MENU_START,
SQ_MENU_GRADE,
SQ_MENU_NS,
SQ_MENU_MAX = SQ_MENU_NS - 1
};
// Square Dialog Sub-State
enum
{
SQ_DIALOG_AGAIN_STATE,
SQ_DIALOG_NEXT_STATE,
SQ_DIALOG_STATE_NS,
SQ_DIALOG_STATE_MAX = SQ_DIALOG_STATE_NS - 1
};
enum
{
SHP_LONG_BAR,
SHP_T,
SHP_TWO,
SHP_SEVEN ,
SHP_RE_SEVEN,
SHP_RE_TWO,
SHP_SQUARE,
SHP_EMPTY,
SHP_END
};
#define GetScoreGrade(a) ((a) >> 2)
#define GetPosition(a) ((a) << 4)
#define SHP_BAR_SA 0
#define SHP_TWO_SA 2
#define SHP_SEVEN_SA 4
#define SHP_T_SA 8
#define SHP_RE_SEVEN_SA 12
#define SHP_RE_TWO_SA 16
#define SHP_SQUARE_SA 18
#define MAX_HEIGHT (OSD_GAME_HEIGHT / 16)
#define MAX_WIDTH (OSD_GAME_PLAY_WIDTH / 16)
#define GAME_SQ_TT_MAP (MAX_HEIGHT * MAX_WIDTH)
#define GET_Y_VALUE 0
#define GET_X_VALUE 1
typedef struct
{
// 0 byte
BYTE fgGameStart:1; // in the game
BYTE fgGmTmEnb:1; // Game Timer Enable
BYTE fgSquareInit:1; // the flag next square init
BYTE fgDownKey:1; // flag down key be pushed
BYTE fgReserve:4;
// 1 byte
BYTE bRotate;
// 2 byte
BYTE bNowShape;
// 3 byte
BYTE bNextShape;
// 4 byte
BYTE bCurLine;
// 5/6 Byte
WORD wSqScore;
// 7 Byte
BYTE wSqLine;
// 8 Byte
BYTE bSquareType;
// 9 Byte
BYTE bGameSqTimer;
// 10 Byte
BYTE bMax_x;
// 11 Byte
BYTE bMin_x;
// 12 Byte
BYTE bMax_y;
// 13 Byte
BYTE bMin_y;
// 14/16 Byte
sPos rNowSquarePos;
}S_TETRIS_VAR;
#define _fgGameStart _uGameVar.sTetrisVar.fgGameStart
#define _fgGmTmEnb _uGameVar.sTetrisVar.fgGmTmEnb
#define _fgSquareInit _uGameVar.sTetrisVar.fgSquareInit
#define _fgDownKey _uGameVar.sTetrisVar.fgDownKey
#define _bRotate _uGameVar.sTetrisVar.bRotate
#define _bNowShape _uGameVar.sTetrisVar.bNowShape
#define _bNextShape _uGameVar.sTetrisVar.bNextShape
#define _bCurLine _uGameVar.sTetrisVar.bCurLine
#define _wSqScore _uGameVar.sTetrisVar.wSqScore
#define _wSqLine _uGameVar.sTetrisVar.wSqLine
#define _bSquareType _uGameVar.sTetrisVar.bSquareType
#define _bGameSqTimer _uGameVar.sTetrisVar.bGameSqTimer
#define _bMax_x _uGameVar.sTetrisVar.bMax_x
#define _bMin_x _uGameVar.sTetrisVar.bMin_x
#define _bMax_y _uGameVar.sTetrisVar.bMax_y
#define _bMin_y _uGameVar.sTetrisVar.bMin_y
#define _rNowSquarePos _uGameVar.sTetrisVar.rNowSquarePos
void vSetSQMap(BYTE bx, BYTE by, BYTE bValue) large;
BYTE bReadSQMap(BYTE bx, BYTE by) large;
BYTE bGetSquareType(BYTE bRotate, BYTE bShape) large;
void vGameSQTimer(void) large;
void vGameSQStateInit(void) large;
BOOL fgGameSQState(void) large;
void vGameSQExit(void) large;
#endif
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -