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

📄 tankdesk.c

📁 瑞星微公司RK27XX系列芯片的SDK开发包
💻 C
📖 第 1 页 / 共 2 页
字号:
                {
                    WsetObj->itty--;
                    if (WsetObj->itty < 0)
                        WsetObj->itty = 2;
                    WsetObj->itty = WsetObj->itty % 3;
                }

                if (WsetObj->itset == 2)
                {
                    WsetObj->itle--;
                    if (WsetObj->itle < 0)
                        WsetObj->itle = 2;
                    WsetObj->itle = WsetObj->itle % 3;
                }


                if (WsetObj->itset == 3 && WsetObj->barr >= 0)
                {
                    if (WsetObj->barr > 0)
                        WsetObj->barr--;
                    else if (WsetObj->barr == 0)
                        WsetObj->barr = 20;
                }
            }
            break;
        case KE_PLAY_PRESS:
            {
                WsetObj->ok = 1;
                tSave->GameLevel = WsetObj->itle;
                tSave->GameType = WsetObj->itty;
                tSave->rank = WsetObj->rank;
                tSave->barriesflag = WsetObj->barr;
            }
            break;
        case KE_PLAY_RELEASE:
            WindowDestroy(win);
            break;
        case KE_RETURN_PRESS:
            WsetObj->ok = 2;
            break;
        case KE_RETURN_RELEASE:
            WindowDestroy(win);
            break;
        default:
            break;
    }
    WindowInvalidateWindow(win);
    return TRUE;
}

/**************************************************************
Desc   : 定义名为SetProcMap的基本类窗口消息映射表,
并生成一个基本类CW_TYPE_Set 供继承
Return:无
Global:无
Author:xiexiuxie
*****************************************************************/
BEGIN_CHILDMESSAGE_MAP(SetProcMap , CW_TYPE_Set)
ON_MESSAGE(WM_PAINT ,   SetWinPaintProc)
ON_MESSAGE(WM_KEY,    SetWinKeyProc)
ON_MESSAGE(WM_CREATE,   SetWinCreatProc)
ON_MESSAGE(WM_DESTROY ,      SetWinDestroyProc)
END_MESSAGE_MAP()
/***************************************************************/
/**************************************************************
Desc   : 创建游戏设置  窗口
Param:win 窗口指针
Return:无
Global:无
Author:xiexiuxie
*****************************************************************/
UINT32 ENSET(WINDOW* win)
{
    win = WindowCreate(win ,
                       WS_FULLSCREEN | WS_TICK,
                       WID_TankGameSet,
                       0, 0,
                       320, 240,
                       0, 0, 0, 0,
                       SetProcMap,
                       NULL);
    return TRUE;
}
/**************************************************************
Desc   : 显示帮助窗口
Param:win 窗口指针,wParam WM_PAINT 消息, lParam没用
Return:无
Global:无
Author:xiexiuxie
*****************************************************************/
UINT32 HelpWinPaintProc(WINDOW* win , WMPARAM wParam, WLPARAM lParam)
{
    W_HelpPic *WpicObj = (W_HelpPic*)win->Data;
    if (!(WIN_NEEDPAIT(win)))
        return TRUE;
    DrawPic(0, 0, (INT16U)(WpicObj->IconBmp + WpicObj->page)); //显示帮助  图片
    WIN_CLEARPAIT(win);
    return TRUE;
}
/**************************************************************
Desc   : 创建帮助窗口初始化
Param:win 窗口指针,wParam WM_CREAT消息 , lParam没用
Return:无
Global:无
Author:xiexiuxie
*****************************************************************/
UINT32 HelpWinCreatProc(WINDOW* win , WMPARAM wParam, WLPARAM lParam)
{
    W_HelpPic *WpicObj = NULL;
    WpicObj = MallocClass(W_HelpPic);
    if (WpicObj)
    {
        WpicObj->IconBmp = win->BmpID;
        WpicObj->page = 0;
        win->Data = WpicObj;
    }
    WindowInvalidateWindow(win);
    return TRUE;
}
/**************************************************************
Desc   : 删除帮助窗口
Param:win 窗口指针,wParam  WM_DESTROY消息,   lParam没用
Return:无
Global:无
Author:xiexiuxie
*****************************************************************/
UINT32 HelpWinDestroyProc(WINDOW* win , WMPARAM wParam, WLPARAM lParam)
{
    W_HelpPic *WpicObj = (W_HelpPic*)win->Data;
    FreeClass(WpicObj);
    //DspTskUpdateInit( DTSC_TRANSPS);
    return WMPROC_UNHANDLE;
}
/**************************************************************
Desc   : 帮助窗口的按键处理
Param:win 窗口指针,wParam WM_KEY 消息 、 lParam没用
Return:无
Global:无
Author:xiexiuxie
*****************************************************************/
UINT32 HelpWinKeyProc(WINDOW* win , WMPARAM wParam, WLPARAM lParam)
{
    W_HelpPic  *WpicObj = (W_HelpPic *)win->Data;
    UINT16  keyPress = (UINT16)((wParam) >> 16);
    UINT16  KEY_EV = (UINT16)(wParam);
    if (keyPress)
        return FALSE;
    switch (KEY_EV)
    {
        case KE_DN_RELEASE: //变换页数
        case KE_PREV_RELEASE:
            {
                WpicObj->page++;
                WpicObj->page = WpicObj->page % 3;
            }
            break;
        case KE_NEXT_RELEASE:
        case KE_UP_RELEASE:
            {
                WpicObj->page--;
                if (WpicObj->page < 0)
                    WpicObj->page = 2;
                else
                    WpicObj->page = WpicObj->page % 3;
            }
            break;
        case KE_RETURN_RELEASE:
        case KE_EXIT_RELEASE:
            WindowDestroy(win);
        default:
            break;
    }
    WindowInvalidateWindow(win);
    return TRUE;
}
/**************************************************************
Desc   : 定义名为HelpProcMap的基本类窗口消息映射表,
并生成一个基本类CW_TYPE_help 供继承
Return:无
Global:无
Author:xiexiuxie
*****************************************************************/
BEGIN_CHILDMESSAGE_MAP(HelpProcMap , CW_TYPE_help)
ON_MESSAGE(WM_PAINT,   HelpWinPaintProc)
ON_MESSAGE(WM_KEY,   HelpWinKeyProc)
ON_MESSAGE(WM_CREATE,  HelpWinCreatProc)
ON_MESSAGE(WM_DESTROY,  HelpWinDestroyProc)
END_MESSAGE_MAP()
/********************************************************************/
/**************************************************************
Desc   : 创建帮助窗口
Param:win 窗口指针
Return:无
Global:无
Author:xiexiuxie
*****************************************************************/
UINT32 ENHELP(WINDOW* win)
{
    win = WindowCreate(win ,
                       WS_FULLSCREEN | WS_TICK,
                       WID_TankGameHelp,
                       0, 0, 320, 240, 0,
                       BID_tankhelp0,
                       0, 0,
                       HelpProcMap,
                       NULL);
    return 0;
}
/**************************************************************
Desc   : 显示分数窗口
Param:win 窗口指针,wParam WM_PAINT消息, lParam没用
Return:无
Global:无
Author:xiexiuxie
*****************************************************************/
UINT32 ScoreWinPaintProc(WINDOW* win , WMPARAM wParam, WLPARAM lParam)
{
    TANK_SAVE *tSave = &gTankConfig;
    int i, j = 0;
    int h;
    char aa[6];
    int bb = 0;
    W_Scorce  *ScorceObj = (W_Scorce *)win->Data;
    if (!(WIN_NEEDPAIT(win)))
        return TRUE;
    ASSERT(tSave);
    DrawPic(0, 0, (INT16U)(BID_tankgamehero0));
    for (i = 0;i < 10;i++)
    {
        if (tSave->gamescors[i] <= 0)
            j++;
        else if (tSave->gamescors[i] > 0)
        {
            aa[0] = tSave->gamescors[i] / 100000;
            aa[1] = (tSave->gamescors[i] % 100000) / 10000;
            aa[2] = (tSave->gamescors[i] % 10000) / 1000;
            aa[3] = (tSave->gamescors[i] % 1000) / 100;
            aa[4] = (tSave->gamescors[i] % 100) / 10;
            aa[5] = (tSave->gamescors[i] % 10) % 10;
            if (tSave->gamescors[i] >= 40000)
                bb = 0;
            else if (tSave->gamescors[i] >= 30000)
                bb = 1;
            else if (tSave->gamescors[i] >= 10000)
                bb = 2;
            else if (tSave->gamescors[i] >= 5000)
                bb = 3;
            else if (tSave->gamescors[i] > 0)
                bb = 4;
            for (h = 0;h < 6;h++)
            {
                if (i == tSave->sflag)
                    DrawBmpIdEx((INT16S)(54 + i*15), (INT16S)(78 - h*10), (INT16U)(BID_chara0 + aa[h]), 0, DSPM_Normal);
                else
                    DrawBmpIdEx((INT16S)(52 + i*15), (INT16S)(78 - h*10), (INT16U)(BID_char0 + aa[h]), 0, DSPM_Normal);
            }
            DrawBmpIdEx((INT16S)(50 + i*15), 125, (INT16U)(BID_tankscoregrade0 + bb), 0, DSPM_Normal);
        }
    }
    if (j == 10)
        DrawPic(0, 0, (INT16U)(BID_tankgamehero1));
    if (j != 10 && ScorceObj->flag == 1)
        DrawPic(287, 157, (INT16U)(BID_tankgamerecorddelete));
    if (ScorceObj->flag == 2)
        DrawPic(288, 23, (INT16U)(BID_tankgamerecordreturn));
    if (j != 10 && (ScorceObj->delete_ok == 1 || ScorceObj->delete_ok == 2))
    {
        DrawPic(80, 21, (INT16U)(BID_tankgamewarning));
        if (ScorceObj->scflag == 1)
        {
            DrawPic(155, 126, (INT16U)(BID_tankgameyes));
            ScorceObj->scflag = 0;
        }
        else if (ScorceObj->scflag1 == 1)
        {
            DrawPic(155, 58, (INT16U)(BID_tankgameno));
            ScorceObj->scflag1 = 0;
        }
    }
    WIN_CLEARPAIT(win);
    return TRUE;
}
/**************************************************************
Desc   : 分数显示窗口创建初始化
Param:win 窗口指针,wParam WM_CREAT消息 , lParam没用
Return:无
Global:无
Author:xiexiuxie
*****************************************************************/
UINT32 ScoreWinCreatProc(WINDOW* win , WMPARAM wParam, WLPARAM lParam)
{
    W_Scorce *ScorceObj = NULL;
    ScorceObj = MallocClass(W_Scorce);
    if (ScorceObj)
    {
        ScorceObj->delete_ok = 0;
        ScorceObj->flag = 0;
        ScorceObj->scflag = 0;
        ScorceObj->scflag1 = 0;
        win->Data = ScorceObj;
    }
    WindowInvalidateWindow(win);
    return TRUE;
}
/**************************************************************
Desc   : 分数显示窗口删除
Param:win 窗口指针,wParam  WM_DESTROY消息 , lParam没用
Return:无
Global:无
Author:xiexiuxie
*****************************************************************/
UINT32 ScoreWinDestroyProc(WINDOW* win , WMPARAM wParam, WLPARAM lParam)
{
    W_Scorce *ScorceObj = (W_Scorce*)win->Data;
    FreeClass(ScorceObj);
    //DspTskUpdateInit( DTSC_TRANSPS);
    return WMPROC_UNHANDLE;
}
/**************************************************************
Desc   : 分数显示窗口按键处理
Param:win 窗口指针,wParam WM_KEY消息, lParam没用
Return:无
Global:tSave    存放游戏设置参数
Author:xiexiuxie
*****************************************************************/
UINT32 ScoreWinKeyProc(WINDOW* win , WMPARAM wParam, WLPARAM lParam)
{
    W_Scorce *ScorceObj = (W_Scorce *)win->Data;
    UINT16  keyPress = (UINT16)((wParam) >> 16);
    UINT16  KEY_EV = (UINT16)(wParam);
    int i;
    TANK_SAVE *tSave = &gTankConfig;
    if (keyPress)
        return FALSE;
    ASSERT(tSave);
    switch (KEY_EV)
    {
        case KE_PLAY_PRESS:
            {
                ScorceObj->delete_ok++;
                if (ScorceObj->delete_ok == 1)
                    ScorceObj->flag = 1;
                if (ScorceObj->delete_ok == 2)
                    ScorceObj->scflag = 1;
            }
            break;
        case KE_PLAY_RELEASE:
            {
                if (ScorceObj->delete_ok == 1)
                    ScorceObj->flag = 0;
                if (ScorceObj->delete_ok == 2)
                {
                    ScorceObj->delete_ok = 0;
                    for (i = 0;i < 10;i++)
                        tSave->gamescors[i] = 0;
                }
            }
            break;
        case KE_RETURN_PRESS:
            {
                if (ScorceObj->delete_ok == 0)
                    ScorceObj->flag = 2;
                if (ScorceObj->delete_ok == 1)
                    ScorceObj->scflag1 = 1;
            }
            break;
        case KE_RETURN_RELEASE:
            {
                if (ScorceObj->delete_ok == 0)
                {
                    ScorceObj->flag = 0;
                    WindowDestroy(win);
                }
                if (ScorceObj->delete_ok == 1)
                    ScorceObj->delete_ok = 0;
            }
            break;
        default:
            break;
    }

    WindowInvalidateWindow(win);
    return TRUE;
}
/**************************************************************
Desc   : 定义名为ScoreProcMap的基本类窗口消息映射表,
并生成一个基本类CW_TYPE_tanksc 供继承
Return:无
Global:无
Author:xiexiuxie
*****************************************************************/
BEGIN_CHILDMESSAGE_MAP(ScoreProcMap , CW_TYPE_tanksc)
ON_MESSAGE(WM_PAINT,  ScoreWinPaintProc)
ON_MESSAGE(WM_KEY,   ScoreWinKeyProc)
ON_MESSAGE(WM_CREATE,  ScoreWinCreatProc)
ON_MESSAGE(WM_DESTROY,  ScoreWinDestroyProc)
END_MESSAGE_MAP()
/************************************************************************/
/**************************************************************
Desc   : 创建游戏排行窗口
Param:win 窗口指针
Return:无
Global:无
Author:xiexiuxie
*****************************************************************/
UINT32 ENScore(WINDOW* win)
{
    win = WindowCreate(win ,
                       WS_FULLSCREEN | WS_TICK,
                       WID_TankGameScore,
                       0, 0, 320, 240,
                       0,
                       0, 0, 0,
                       ScoreProcMap,
                       NULL);
    return 0;
}




/************************************************************************/



⌨️ 快捷键说明

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