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

📄 square.h

📁 手机8032的完整代码。吐血推荐。小做改动就可以生产。
💻 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 + -