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

📄 gameshow.c

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

#define _GAMESHOW_C_

#pragma NOAREGS

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

#ifdef  SUPPORT_OSD_GAME

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

#ifdef OSD_GAME_MAIN_MENU

static code WORD _wGameMenuItemMsg[GAME_MENU_ITEM_NS] =
{
  OSD_MSG_BREAKOUT,
  OSD_MSG_SOKOBAN,
  OSD_MSG_TETRIS,
  OSD_MSG_EXIT
};

void vShowGameMainMenu(void) large
{
  BYTE i;

  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 = GAME_MENU_ITEM_START_X;
  _wEndX   = GAME_MENU_ITEM_END_X;
  _wStartY = GAME_MENU_ITEM_SPACE;
  _wEndY   = _wStartY + GAME_MENU_ITEM_HEIGHT;
  for (i = 0; i < GAME_MENU_ITEM_NS; i++)
  {
    vCreateMsgButton(WB_OSD_GAME, i, 4, _wGameMenuItemMsg[i], 0xFFFF, 0);
    vUnselButton(WB_OSD_GAME, i);
    _wStartY += GAME_MENU_ITEM_HEIGHT + GAME_MENU_ITEM_SPACE;
    _wEndY   = _wStartY + GAME_MENU_ITEM_HEIGHT;
  }
}


void vHiliGameMenuItem(BYTE bItem, BYTE bState) large
{
  vHiliGameButton(bItem, bState);
}

#endif

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

void vHex2Sring(WORD wHex, BYTE *pbString) large
{
  pbString[4] = wHex % 10 + '0';
  wHex /= 10;
  pbString[3] = wHex % 10 + '0';
  wHex /= 10;
  pbString[2] = wHex % 10 + '0';
  wHex /= 10;
  pbString[1] = wHex % 10 + '0';
  pbString[0] = 4;
}


void vClrGameWorkArea(void) large
{
  vSetStartEndXY(GAME_WORK_START_X, GAME_WORK_START_Y, GAME_WORK_END_X, GAME_WORK_END_Y);
  vRectangle(WB_OSD_GAME, 0, 0, TRUE, GAME_COL_BG);
}


void vDrawGameInfoPane(void) large
{
#if  0
  vSetStartEndXY(GAME_INFO_START_X, GAME_INFO_START_Y, GAME_INFO_END_X, GAME_INFO_START_Y);
  vOsdShowLine(WB_OSD_GAME, GAME_COL_DARK_CYAN, GAME_INFO_LINE_WIDTH);

  vSetStartEndXY(GAME_INFO_START_X, GAME_INFO_START_Y, GAME_INFO_START_X, GAME_INFO_END_Y);
  vOsdShowLine(WB_OSD_GAME, GAME_COL_DARK_CYAN, GAME_INFO_LINE_WIDTH);

  vSetStartEndXY(GAME_INFO_END_X - GAME_INFO_LINE_WIDTH, GAME_INFO_START_Y,
                 GAME_INFO_END_X - GAME_INFO_LINE_WIDTH, GAME_INFO_END_Y);
  vOsdShowLine(WB_OSD_GAME, GAME_COL_DARK_CYAN, GAME_INFO_LINE_WIDTH);

  vSetStartEndXY(GAME_INFO_START_X, GAME_INFO_END_Y - GAME_INFO_LINE_WIDTH ,
                 GAME_INFO_END_X, GAME_INFO_END_Y - GAME_INFO_LINE_WIDTH);
  vOsdShowLine(WB_OSD_GAME, GAME_COL_DARK_CYAN, GAME_INFO_LINE_WIDTH);
#else
  vSetStartEndXY(GAME_INFO_START_X, GAME_INFO_START_Y, GAME_INFO_END_X - 1, GAME_INFO_END_Y - 1);
  vRectangle(WB_OSD_GAME, GAME_INFO_LINE_WIDTH, GAME_COL_DARK_CYAN, TRUE, GAME_COL_BG);
#endif
}


void vHiliGameButton(BYTE bBnIndex, BYTE bState) large
{
  switch (bState)
  {
    case ITEM_UNSELECT:
    {
      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);
      vUnselButton(WB_OSD_GAME, bBnIndex);
      break;
    }
    case ITEM_SELECT:
    {
      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_GRAY, GAME_COL_DARK_GRAY, GAME_COL_BLACK, GAME_COL_WHITE);
      vSelButton(WB_OSD_GAME, bBnIndex);
      break;
    }
    case ITEM_HILI:
    {
      vSetBtnCol(WB_OSD_GAME, GAME_COL_DARK_GRAY, GAME_COL_YELLOW, GAME_COL_BLACK, GAME_COL_WHITE);
      vSetMsgCol4(WB_OSD_GAME, GAME_COL_YELLOW, GAME_COL_YELLOW, GAME_COL_BLACK, GAME_COL_BLACK);
      vUnselButton(WB_OSD_GAME, bBnIndex);
      break;
    }
    default:
    {
      break;
    }
  }
}


void vShowGameDialog(WORD wMsg, BYTE fgYesNo) large
{
  // Create the dialog background
  vSetStartEndXY(GAME_DIALOG_START_X, GAME_DIALOG_START_Y, GAME_DIALOG_END_X, GAME_DIALOG_END_Y);
  vRectangle(WB_OSD_GAME, 0, 0, TRUE, GAME_COL_DARK_CYAN);

  // Show the dialog message
  vSetMsgCol4(WB_OSD_GAME, GAME_COL_DARK_CYAN, GAME_COL_DARK_CYAN, GAME_COL_BLACK, GAME_COL_WHITE);
  vSetStartXY(GAME_DIALOG_MSG_START_X, GAME_DIALOG_MSG_START_Y);
  vOsdMsgPaste(WB_OSD_GAME, wMsg);

  // Create the 'Yes' and 'No' button
  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(GAME_DIALOG_BN1_START_X, GAME_DIALOG_BN_START_Y,
                 GAME_DIALOG_BN1_END_X, GAME_DIALOG_BN_END_Y);
  vCreateMsgButton(WB_OSD_GAME, GAME_DIALOG_YES, 4, OSD_MSG_GAME_YES, 0xFFFF, 0);
  vSetStartEndXY(GAME_DIALOG_BN2_START_X, GAME_DIALOG_BN_START_Y,
                 GAME_DIALOG_BN2_END_X, GAME_DIALOG_BN_END_Y);
  vCreateMsgButton(WB_OSD_GAME, GAME_DIALOG_NO, 4, OSD_MSG_GAME_NO, 0xFFFF, 0);
  if(fgYesNo)
  {
    vHiliGameButton(GAME_DIALOG_YES, TRUE);
    vHiliGameButton(GAME_DIALOG_NO, FALSE);
  }
  else
  {
    vHiliGameButton(GAME_DIALOG_YES, FALSE);
    vHiliGameButton(GAME_DIALOG_NO, FALSE);
  }
}

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

#endif

⌨️ 快捷键说明

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