?? nec_pingpong.c
字號:
_InvalidateRect(_hWinScreenSaver, x, y, w, h);
} else {
_InvalidateRect(WM_HBKWIN, x, y, w, h);
}
}
}
}
/*********************************************************************
*
* _ScreenSaverOn
*/
static void _ScreenSaverOn(void) {
if (_hWinScreenSaver == 0) {
_hWinScreenSaver = WM_CreateWindow(0, 0, LCD_GetXSize(), LCD_GetYSize(),
WM_CF_SHOW | WM_CF_STAYONTOP, &_cbScreenSaver, 0);
WM_SetFocus(_hWinScreenSaver);
}
}
/*********************************************************************
*
* _ScreenSaverOff
*/
static void _ScreenSaverOff(void) {
if (_hWinScreenSaver) {
WM_DeleteWindow(_hWinScreenSaver);
WM_SetFocus(WM_HBKWIN);
_hWinScreenSaver = 0;
WM_SelectWindow(WM_HBKWIN);
GUI_SetBkColor(GUI_BLACK);
GUI_Clear();
}
_ScreenSaverPrevTime = GUI_GetTime();
}
/*********************************************************************
*
* _HandleScreenSaver
*/
static void _HandleScreenSaver(void) {
if ((_hWinScreenSaver == 0) && (_GameState == SHOW_MENU)) {
if ((GUI_GetTime() - _ScreenSaverPrevTime) >= SCREENSAVER_WAITTIME) {
if (_ScreenSaverPrevTime != 0) {
_ScreenSaverOn();
}
_ScreenSaverPrevTime = GUI_GetTime();
}
}
}
/*********************************************************************
*
* _InitStep
*/
static void _InitStep(void) {
if (_GameState != _NewGameState) {
_GameState = _NewGameState;
WM_InvalidateWindow(WM_HBKWIN);
_ScreenSaverOff();
}
}
/*********************************************************************
*
* _NextStep
*/
static void _NextStep(unsigned Delay) {
if (_NewGameState < SHOW_STATISTICS) {
_NewGameState++;
} else {
_NewGameState = SHOW_MENU;
}
_GameWaitTime = GUI_GetTime() + Delay;
_GameHalt = 0;
}
/*********************************************************************
*
* _Delay
*/
static void _Delay(unsigned Delay) {
_GameWaitTime = GUI_GetTime() + Delay;
}
/*********************************************************************
*
* _Halt
*/
static void _Halt(void) {
_GameHalt = 1;
}
/*********************************************************************
*
* _StartGame
*/
static void _StartGame(void) {
_GameCount++;
_StopWatchTime = GUI_GetTime();
/* TBD: Start game */
}
/*********************************************************************
*
* _EndGame
*/
static void _EndGame(void) {
_GameState = SHOW_MENU;
WM_InvalidateWindow(WM_HBKWIN);
}
/*********************************************************************
*
* _HandleGame
*/
static void _HandleGame(void) {
if (_hWinScreenSaver == 0) {
if ((GUI_GetTime() >= _GameWaitTime) && !_GameHalt) {
_InitStep();
switch (_NewGameState) {
case NO_INIT:
_NextStep(0);
break;
case SHOW_MENU:
{
WM_HWIN hWin;
hWin = BUTTON_CreateEx(270, 270, 100, 30, WM_HBKWIN, WM_CF_SHOW, 0, ID_BUTTON_START);
BUTTON_SetText(hWin, "Start Game");
_Halt();
}
break;
case SHOW_REDLIGHT:
WM_DeleteWindow(WM_GetDialogItem(WM_HBKWIN, ID_BUTTON_START));
_NextStep(2250);
break;
case SHOW_YELLOWLIGHT:
_NextStep(2250);
break;
case SHOW_GREENLIGHT:
_NextStep(1000);
_StartGame();
break;
case SHOW_STOPWATCH:
//if (_IsGameOver) {
if ((GUI_GetTime() - _StopWatchTime) > 5000) {
_NextStep(0);
} else {
WM_InvalidateWindow(WM_HBKWIN);
_Delay(20);
}
break;
case SHOW_WINNER:
_NextStep(4000);
break;
case SHOW_STATISTICS:
_NextStep(4000);
break;
}
}
}
}
/*********************************************************************
*
* Static code, drawing functions
*
**********************************************************************
*/
/*********************************************************************
*
* _DrawRoundRect
*/
static void _DrawRoundRect(int x, int y, int w, int h, int r) {
GUI_COLOR Color;
if ((w < (r << 2)) || (h < (r << 2))) {
r = (w < h) ? (w >> 2) : (h >> 2);
}
Color = GUI_GetColor();
GUI_SetColor(GUI_GetBkColor());
GUI_FillCircle(x + r, y + r, r);
GUI_FillCircle(x + w - r - 1, y + r, r);
GUI_FillCircle(x + r, y + h - r - 1, r);
GUI_FillCircle(x + w - r - 1, y + h - r - 1, r);
GUI_SetColor(Color);
GUI_DrawCircle(x + r, y + r, r);
GUI_DrawCircle(x + w - r - 1, y + r, r);
GUI_DrawCircle(x + r, y + h - r - 1, r);
GUI_DrawCircle(x + w - r - 1, y + h - r - 1, r);
GUI_DrawHLine(y, x + r, x + w - r - 1);
GUI_DrawVLine(x, y + r, y + h - r - 1);
GUI_DrawVLine(x + w - 1, y + r, y + h - r - 1);
GUI_DrawHLine(y + h - 1, x + r, x + w - r - 1);
GUI_ClearRect(x + r, y + 1, x + w - r - 1, y + r - 1);
GUI_ClearRect(x + 1, y + r, x + w - 2, y + h - r - 1);
GUI_ClearRect(x + r, y + h - r, x + w - r - 1, y + h - 2);
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -