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

📄 sqshow.c

📁 手机8032的完整代码。吐血推荐。小做改动就可以生产。
💻 C
字号:

#define _SQSHOW_C_

#pragma NOAREGS

#include "general.h"
#include "osdshow.h"

#ifdef  OSD_GAME_TETRIS
///////////////////////////////////////////////////////////////////////////////

extern void DRS232LogS(char *pcStr);
extern void DRS232LogB(BYTE bV1, BYTE bV2, BYTE bV3, BYTE bV4);

///////////////////////////////////////////////////////////////////////////////

static code WORD _wSqInfoItemMsg[] =
{
  OSD_MSG_NULL,
  OSD_MSG_NULL,
  OSD_MSG_GRADE,
  OSD_MSG_SCORE,
  OSD_MSG_LINE,
  OSD_MSG_START,
  OSD_MSG_PLAYING,
  OSD_MSG_PAUSE
};

void vSquareShowInfo(BYTE bInfo) large
{
  BYTE i;
  BYTE bItem;
  BYTE bShowStr[5];

  for (i = 0; i < SQ_INFO_NS; i++)
  {
    bItem = 0x01 << i;
    if (bInfo & bItem)
    {
      switch (bItem)
      {
        case SQ_INFO_PANE:
        {
          vDrawGameInfoPane();
          break;
        }
        case SQ_INFO_INDICATE:
        {
          vSetStartEndXY(SQ_INDICATE_RECT_START_X, SQ_INDICATE_RECT_START_Y, 
                         SQ_INDICATE_RECT_END_X - 1, SQ_INDICATE_RECT_END_Y - 1);
          vRectangle(WB_OSD_GAME, 2, GAME_COL_DARK_CYAN, TRUE, GAME_COL_BG);
          break;
        }
        case SQ_INFO_GRADE:
        case SQ_INFO_SCORE:
        case SQ_INFO_LINE:
        {
          vSetBtnCol(WB_OSD_GAME, GAME_COL_DARK_GRAY, GAME_COL_DARK_CYAN, GAME_COL_BLACK, GAME_COL_WHITE);
          vSetMsgCol4(WB_OSD_GAME, GAME_COL_DARK_CYAN, GAME_COL_DARK_CYAN, GAME_COL_BLACK, GAME_COL_WHITE);
          _wStartX = SQ_INFO_BUTTON_START_X1;
          _wEndX   = SQ_INFO_BUTTON_END_X1;
          _wEndY   = (SQ_INFO_BUTTON_SPACE + SQ_INFO_BUTTON_HEIGHT1) * (i + 1);
          _wStartY = _wEndY - SQ_INFO_BUTTON_HEIGHT1;
          vCreateMsgButton(WB_OSD_GAME, i, 4, _wSqInfoItemMsg[i], 8, 4);
          vUnselButton(WB_OSD_GAME, i);
          if(SQ_INFO_GRADE == bItem)
          {
            vHex2Sring((WORD)(_bGameGrade + 1), bShowStr);
            _wStartX = SQ_INFO_VALUE_START_X;
            _wStartY += 4;
            vOsdShowStr(WB_OSD_GAME, bShowStr);
          }
          else if(SQ_INFO_SCORE == bItem)
          {
            vHex2Sring(_wSqScore, bShowStr);
            _wStartX = SQ_INFO_VALUE_START_X;
            _wStartY += 4;
            vOsdShowStr(WB_OSD_GAME, bShowStr);
          }
          else if(SQ_INFO_LINE == bItem)
          {
            vHex2Sring(_wSqLine, bShowStr);
            _wStartX = SQ_INFO_VALUE_START_X;
            _wStartY += 4;
            vOsdShowStr(WB_OSD_GAME, bShowStr);
          }
          break;
        }
        case SQ_INFO_START:
        case SQ_INFO_PLAYING:
        case SQ_INFO_PAUSE:
        {
          vSetBtnCol(WB_OSD_GAME, GAME_COL_DARK_GRAY, GAME_COL_DARK_CYAN, GAME_COL_BLACK, GAME_COL_WHITE);
          vSetMsgCol4(WB_OSD_GAME, GAME_COL_DARK_CYAN, GAME_COL_DARK_CYAN, GAME_COL_BLACK, GAME_COL_WHITE);
          vSetStartEndXY(SQ_INFO_BUTTON_START_X2, SQ_INFO_BUTTON_START_Y2,
                         SQ_INFO_BUTTON_END_X2, SQ_INFO_BUTTON_END_Y2);
          vCreateMsgButton(WB_OSD_GAME, 6, 4, _wSqInfoItemMsg[i], 0xFFFF, 4);
          vUnselButton(WB_OSD_GAME, 6);
          break;
        }
        default:
        {
          break;
        }
      }
    }
  }
}


static code BYTE _bSqMenuItemBn[] =
{
  6,  // BM_MENU_START
  2,  // BM_MENU_ANSWER
};


void vHiliSquareMenuItem(BYTE bItem, BYTE bState) large
{
  BYTE bShowStr[5];

  if(SQ_MENU_GRADE == bItem)
  {
    if (ITEM_HILI == bState)
    {
      bState = ITEM_SELECT;
    }
  }

  vHiliGameButton(_bSqMenuItemBn[bItem], bState);

  if(SQ_MENU_GRADE == bItem)
  {
    if (ITEM_SELECT == bState)
    {
      vSetMsgCol4(WB_OSD_GAME, GAME_COL_DARK_GRAY, GAME_COL_DARK_GRAY, GAME_COL_BLACK, GAME_COL_WHITE);
    }
    else
    {
      vSetMsgCol4(WB_OSD_GAME, GAME_COL_DARK_CYAN, GAME_COL_DARK_CYAN, GAME_COL_BLACK, GAME_COL_WHITE);
    }
    _wStartX = SQ_INFO_VALUE_START_X;
    _wStartY = (SQ_INFO_BUTTON_SPACE + SQ_INFO_BUTTON_HEIGHT1) * 2 + SQ_INFO_BUTTON_SPACE + 4;
    vHex2Sring((WORD)(_bGameGrade + 1), bShowStr);
    vOsdShowStr(WB_OSD_GAME, bShowStr);
  }
}


static code BYTE _bSqTypeBmp[] =
{
  BMP_CYAN,   // SHP_LONG_BAR,
  BMP_PURPLE, // SHP_T,
  BMP_RED,    // SHP_TWO,
  BMP_BROWN,  // SHP_SEVEN ,
  BMP_BLUE,   // SHP_RE_SEVEN,
  BMP_GREEN,  // SHP_RE_TWO,
  BMP_YELLOW, // SHP_SQUARE,
  BMP_EMPTY,  // SHP_EMPTY,
  BMP_EMPTY,  // SHP_END
};

static BYTE bJudgeSquareType(BYTE bNowShape) large
{
  return _bSqTypeBmp[bNowShape];
}


void vOsdClrIndiSquare(void) large
{
  BYTE i;

  while (bSharedInfo(SI_OSD_CMD_BUF_FULL)); 

  for (i = 0; i < 4; i++)
  {
    _wStartX = GetPosition(rSquareData[bGetSquareType(0, _bNextShape)][i].x)
             + SQ_INDICATE_SHAP_START_X;
    _wStartY = GetPosition(rSquareData[bGetSquareType(0, _bNextShape)][i].y)
             + SQ_INDICATE_SHAP_START_Y;
    vPasteBmp(WB_OSD_GAME, BMP_EMPTY);
  }
}


void vOsdClrWorkSquare(void) large
{
  BYTE i;

  while (bSharedInfo(SI_OSD_CMD_BUF_FULL)); 

  for (i = 0; i < 4; i++)
  {
    _wStartX = GetPosition(rSquareData[_bSquareType][i].x + _rNowSquarePos.x);
    _wStartY = GetPosition(rSquareData[_bSquareType][i].y + _rNowSquarePos.y);
    vPasteBmp(WB_OSD_GAME, BMP_EMPTY);
  }
}


void vOsdDrawSquare(BYTE bSquareType) large
{
  BYTE i;

  while (bSharedInfo(SI_OSD_CMD_BUF_FULL)); 

  for (i = 0; i < 4; i++)
  {
    if (_fgSquareInit)
    {
      _wStartX = GetPosition(rSquareData[bGetSquareType(0, _bNextShape)][i].x)
               + SQ_INDICATE_SHAP_START_X;
      _wStartY = GetPosition(rSquareData[bGetSquareType(0, _bNextShape)][i].y)
               + SQ_INDICATE_SHAP_START_Y;
      vPasteBmp(WB_OSD_GAME, bJudgeSquareType(_bNextShape));
    }
    _wStartX = GetPosition(rSquareData[bSquareType][i].x + _rNowSquarePos.x);
    _wStartY = GetPosition(rSquareData[bSquareType][i].y + _rNowSquarePos.y);
    vPasteBmp(WB_OSD_GAME, bJudgeSquareType(_bNowShape));
  }

  _fgSquareInit = FALSE;
}


void vOsdDrawLine(BYTE bLineNo) large
{
  BYTE i;

  while (bSharedInfo(SI_OSD_CMD_BUF_FULL)); 

  for (i = 0; i < MAX_WIDTH; i++)
  {
    _wStartX = GetPosition(i);
    _wStartY = GetPosition(bLineNo);
    vPasteBmp(WB_OSD_GAME, bJudgeSquareType(bReadSQMap(i, bLineNo)));
  }
}


void vOsdClearLine(BYTE bLineNo) large
{
  BYTE i;

  while (bSharedInfo(SI_OSD_CMD_BUF_FULL)); 

  for ( i = 0; i < MAX_WIDTH; i++)
  {
    _wStartX = GetPosition(i);
    _wStartY = GetPosition(bLineNo);
    vPasteBmp(WB_OSD_GAME, BMP_EMPTY);
  }
}


void vSquareShowDialog(void) large
{
  switch (_bGameSubState)
  {
    case SQ_DIALOG_AGAIN_STATE:
    {
      vShowGameDialog(OSD_MSG_GAME_AGAIN, TRUE);
      break;
    }
    case SQ_DIALOG_NEXT_STATE:
    {
      vShowGameDialog(OSD_MSG_GAME_NEXT_GRADE, TRUE);
      break;
    }
    default:
    {
      break;
    }
  }
}


void vHiliSquareDialogItem(BYTE bItem, BYTE bStste) large
{
  vHiliGameButton(GAME_DIALOG_YES + bItem, bStste);
}

///////////////////////////////////////////////////////////////////////////////
#endif

⌨️ 快捷键说明

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