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

📄 fly.c

📁 飞机游戏
💻 C
📖 第 1 页 / 共 3 页
字号:
    return TRUE;
}
/**************************************************************
说明            :      玩家选择窗口的创建
输入参数 : win 窗口指针,wParam  WM_CREATE消息, lParam没用
返回值       :     无
版本    日期      作者   改动内容和原因
*------------------------------------------------------
* 1.0            9/10/2007                 lcy         基本的功能完成
***********************************************************************/
UINT32 FlyPlayerSelectCreat(WINDOW* win , WMPARAM wParam, WLPARAM lParam)
{
    W_FlyPlayerPic *WplayerObj = NULL;

    WplayerObj = MallocClass(W_FlyPlayerPic);

    if (WplayerObj)
    {
        WplayerObj->IconBmp.BmpID = win->BmpID;
        WplayerObj->IconBmp.X = win->x;
        WplayerObj->IconBmp.Y = win->y;
        WplayerObj->item = 0;
        WplayerObj->flag = 0;
        FlySelectTimer = WinStartTimer(win, 20);
        win->Data = WplayerObj;
    }

    WindowInvalidateWindow(win);
    return TRUE;
}


/**************************************************************
说明            :     玩家选择窗口的销毁
输入参数 : win 窗口指针,wParam  WM_DESTROY消息, lParam没用
返回值       :     无
版本    日期      作者   改动内容和原因
*------------------------------------------------------
* 1.0            9/10/2007                 lcy         基本的功能完成
***********************************************************************/

UINT32 FlyPlayerSelectDestroy(WINDOW* win , WMPARAM wParam, WLPARAM lParam)
{
    W_FlyPlayerPic *WplayerObj = (W_FlyPlayerPic*)win->Data;
    RockStopTimer(FlySelectTimer);
    FreeClass(WplayerObj);

    //DspTskUpdateInit( DTSC_TRANSPS);

    return WMPROC_UNHANDLE;
}
/**************************************************************
说明            :     玩家选择窗口的按键控制
输入参数 : win 窗口指针,wParam  WM_KEY消息, lParam没用
返回值       :     无
版本    日期      作者   改动内容和原因
*------------------------------------------------------
* 1.0            9/10/2007                 lcy         基本的功能完成
***********************************************************************/
UINT32 FlyPlayerSelectKey(WINDOW* win , WMPARAM wParam, WLPARAM lParam)
{
    W_FlyPlayerPic  *WpicObj = (W_FlyPlayerPic *)win->Data;
    UINT16  keyPress = (UINT16)((wParam) >> 16);
    UINT16  KEY_EV = (UINT16)(wParam);

    if (keyPress)
        return FALSE;

    switch (KEY_EV)
    {
        case KE_UP_RELEASE:
        case KE_NEXT_RELEASE:
            {
                WpicObj->item++;
                WpicObj->item = WpicObj->item % 3;
            }
            break;
        case KE_DN_RELEASE:
        case  KE_PREV_RELEASE:
            {
                WpicObj->item--;
                if (WpicObj->item < 0)
                    WpicObj->item = 2;
                else
                    WpicObj->item = WpicObj->item % 3;
            }
            break;
        case KE_PLAY_RELEASE:
        case KE_MENU_RELEASE:
            WinSendCommand(win, EV_ItemSelect);    //记录当前选中的菜单
            break;
        case KE_RETURN_RELEASE:
        case KE_EXIT_RELEASE:
            WindowDestroy(win);
            break;
    }
    gFly_SelectPlayer = (GT_U8)(WpicObj->item);  //记录当前选择的玩家
    gFly_Timer = TRUE;
    WindowInvalidateWindow(win);

    return TRUE;
}
/**************************************************************
说明            :     玩家选择窗口的闪耀控制
输入参数 : win 窗口指针,wParam  WM_TICK消息, lParam没用
返回值       :     无
版本    日期      作者   改动内容和原因
*------------------------------------------------------
* 1.0            9/10/2007                 lcy         基本的功能完成
***********************************************************************/
UINT32 FlyPlayerSelectTimer(WINDOW* win , WMPARAM wParam, WLPARAM lParam)
{

    W_FlyPlayerPic *WplayerObj = win->Data;
    WplayerObj->flag = !WplayerObj->flag;  //每秒钟取反一次
    WindowInvalidateWindow(win);
    return TRUE;
}
/**************************************************************
说明            :     玩家选择窗口的玩家选中
输入参数 : win 窗口指针,wParam  WM_COMMANT消息, lParam没用
返回值       :     无
版本    日期      作者   改动内容和原因
*------------------------------------------------------
* 1.0            9/10/2007                 lcy         基本的功能完成
***********************************************************************/
UINT32 FlyStartCommandProc(WINDOW* win , WMPARAM wParam, WLPARAM lParam)
{

    INT16U  ID = WM_CMD_GETCWID(wParam);
    INT16U  Event = WM_CMD_GETEVENT(wParam);
    W_FlyPlayerPic  *WplayerObj = (W_FlyPlayerPic *)win->Data;


    if (EV_ItemSelect == Event)
    {
        switch (WplayerObj->item)
        {
            case 0:
                gFly_SelectPlayer = 0;    //第一玩家
                break;
            case 1:
                gFly_SelectPlayer = 1;    //第二玩家
                break;
            case 2:
                gFly_SelectPlayer = 2;   //第三玩家
                break;
            default:
                break;
        }
        FlyStart(win);               //进入游戏
    }
    return TRUE;

}


/**************************************************************
说明            :     玩家选择窗口的消息映射表,每条消息对应一个处理函数
输入参数 :  无
返回值       :     无
版本    日期      作者   改动内容和原因
*------------------------------------------------------
* 1.0            9/10/2007                 lcy         基本的功能完成
***********************************************************************/
BEGIN_CHILDMESSAGE_MAP(SelectProcMap , CW_TYPE_select)
ON_MESSAGE(WM_PAINT ,   FlyPlayerSelectPaint)
ON_MESSAGE(WM_DESTROY ,  FlyPlayerSelectDestroy)
ON_MESSAGE(WM_CREATE,   FlyPlayerSelectCreat)
ON_MESSAGE(WM_KEY,   FlyPlayerSelectKey)
ON_MESSAGE(WM_TIMER,   FlyPlayerSelectTimer)
ON_MESSAGE(WM_COMMAND,  FlyStartCommandProc)
END_MESSAGE_MAP()
/**************************************************************
说明   :   玩家选择窗口的创建
返回值   :    无
版本    日期      作者   改动内容和原因
*------------------------------------------------------
* 1.0      9/10/2007     lcy      基本的功能完成
***********************************************************************/

UINT32 SelectPlayer(WINDOW* win)
{

    win = WindowCreate(win ,
                       WS_FULLSCREEN | WS_TICK,
                       WID_FlyPlayer,
                       0, 0, 320, 240,
                       0,
                       BID_Fly_Mission01,
                       0, 0,
                       SelectProcMap,
                       NULL);
    return 0;
}


/**************************************************************
说明            :    游戏设置窗口的显示
输入参数 : win 窗口指针,wParam WM_PAINT 消息, lParam没用
返回值       :     无
版本    日期      作者   改动内容和原因
*------------------------------------------------------
* 1.0            9/10/2007                 lcy         基本的功能完成
***********************************************************************/

UINT32 FlySetboxPaint(WINDOW* win , WMPARAM wParam, WLPARAM lParam)
{
    W_PSetPic *WsetObj = (W_PSetPic*)win->Data;

    if (!(WIN_NEEDPAIT(win)))
        return TRUE;


    DrawBmpIdEx(0, 0, BID_Fly_Mission03, 0, DSPM_Normal);
    gGuiDspTranspColor = 0xFF00FF;
    DrawBmpIdEx(80, 0, BID_Fly_Config1, 0, DSPM_Transp);

    DrawBmpIdEx(154, (INT16S)(97 - WsetObj->rankon*40), BID_Fly_Config2, 0, DSPM_Transp);
    DrawBmpIdEx(126, (INT16S)(97 - WsetObj->itty*40), BID_Fly_Config2, 0, DSPM_Transp);


    DrawBmpIdEx(190, (INT16S)(41 + 5*(13 - WsetObj->rank)), BID_Fly_Config3, 0, DSPM_Normal);
    DrawBmpIdEx(178, 111, BID_fly_configrank, 0, DSPM_Normal);
    if (WsetObj->itset < 3)
        DrawBmpIdEx((INT16S)(122 + WsetObj->itset*30), 122, (INT16U)(BID_Fly_number0 + WsetObj->itset), 0, DSPM_Normal);
    if (WsetObj->itset == 3)
        DrawBmpIdEx(210 , 94, BID_Fly_number3, 0, DSPM_Normal);

    WIN_CLEARPAIT(win);
    return TRUE;
}
/**************************************************************
说明            :    游戏设置窗口的创建
输入参数 : win 窗口指针,wParam WM_CREATE 消息, lParam没用
返回值       :     无
版本    日期      作者   改动内容和原因
*------------------------------------------------------
* 1.0            9/10/2007                 lcy         基本的功能完成
***********************************************************************/

UINT32 FlySetboxCreat(WINDOW* win , WMPARAM wParam, WLPARAM lParam)
{
    W_PSetPic *WsetObj = NULL;

    WsetObj = MallocClass(W_PSetPic);

    if (WsetObj)
    {

        WsetObj->rankon = 0;
        WsetObj->rank = 6;
        WsetObj->itset = 0;

        WsetObj->itty = 0;

        win->Data = WsetObj;
    }
    WindowInvalidateWindow(win);
    return TRUE;
}
/**************************************************************
说明            :    游戏设置窗口的销毁
输入参数 : win 窗口指针,wParam WM_DESTROY 消息, lParam没用
返回值       :     无
版本    日期      作者   改动内容和原因
*------------------------------------------------------
* 1.0            9/10/2007                 lcy         基本的功能完成
***********************************************************************/
UINT32 FlySetboxDestroy(WINDOW* win , WMPARAM wParam, WLPARAM lParam)
{
    W_PSetPic *WsetObj = (W_PSetPic*)win->Data;

    FreeClass(WsetObj);

    //DspTskUpdateInit( DTSC_TRANSPS);

    return WMPROC_UNHANDLE;
}
/**************************************************************
说明            :    游戏设置窗口的按键控制
输入参数 : win 窗口指针,wParam WM_KEY 消息, lParam没用
返回值       :     无
版本    日期      作者   改动内容和原因
*------------------------------------------------------
* 1.0            9/10/2007                 lcy         基本的功能完成
***********************************************************************/

UINT32 FlysetKey(WINDOW* win , WMPARAM wParam, WLPARAM lParam)
{
    W_PSetPic  *WsetObj = (W_PSetPic *)win->Data;
    UINT16  keyPress = (UINT16)((wParam) >> 16);
    UINT16  KEY_EV = (UINT16)(wParam);

    if (keyPress)
        return FALSE;

    switch (KEY_EV)
    {
        case  KE_NEXT_RELEASE:
            {
                WsetObj->itset++;
                WsetObj->itset = WsetObj->itset % 4;
            }
            break;

        case KE_PREV_RELEASE:
            {
                if (WsetObj->itset > 0)
                    WsetObj->itset--;
                WsetObj->itset = WsetObj->itset % 4;
            }
            break;

        case  KE_DN_RELEASE:
        case  KE_DN_LONGP:
            {
                if (WsetObj->itset == 0)
                {
                    if (WsetObj->itty > 0)
                    {
                        WsetObj->itty--;
                        WsetObj->itty = WsetObj->itty % 2;
                    }
                    else if (WsetObj->itty == 0)
                        WsetObj->itty = 1;

                }
                else if (WsetObj->itset == 1)
                {
                    if (WsetObj->rankon > 0)
                    {
                        WsetObj->rankon--;
                        WsetObj->rankon = WsetObj->rankon % 2;
                    }
                    else if (WsetObj->rankon == 0)
                        WsetObj->rankon = 1;
                }
                if (WsetObj->itset == 2)
                    if (WsetObj->rank > 0)
                    {
                        WsetObj->rank--;
                        WsetObj->rank = WsetObj->rank % 14;
                    }


            }
            break;

        case KE_UP_RELEASE:
        case KE_UP_LONGP:
            {
                if (WsetObj->itset == 0)
                {
                    WsetObj->itty++;
                    WsetObj->itty = WsetObj->itty % 2;
                }
                else if (WsetObj->itset == 1)
                {
                    WsetObj->rankon++;
                    WsetObj->rankon = WsetObj->rankon % 2;
                }
                else if (WsetObj->itset == 2)
                {

⌨️ 快捷键说明

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