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

📄 fly.c

📁 飞机游戏
💻 C
📖 第 1 页 / 共 3 页
字号:
/******************************************************************/
/*  Copyright (C) 2007 ROCK-CHIPS FUZHOU . All Rights Reserved.  */
/*******************************************************************
File :  fly.c
Desc :  窗口类使用例程,供参考用
Author :  liaochaoyang
Date :  2007-08-27
Notes :
$Log: fly.c,v $
Revision 1.2  2008/06/19 04:42:26  Administrator
代码整理!

Revision 1.1.1.1  2008/05/07 04:14:50  Administrator
no message

Revision 1.1.1.1  2008/03/06 13:28:24  Lingzhaojun
no message

Revision 1.11  2008/01/08 09:49:27  Lingzhaojun
合并蓝魔970代码

Revision 1.10  2008/01/04 08:20:25  Liaochaoyang
修改了设置时的问题

Revision 1.9  2007/12/29 01:55:01  Liaochaoyang
no message

Revision 1.8  2007/11/12 01:13:04  Xiebangwang
修改了按键设置,游戏的时候更人性化

Revision 1.7  2007/11/08 07:50:03  Xiebangwang
修改了游戏按键  根据测试出来的问题进行了更新

Revision 1.6  2007/10/31 12:34:31  Liaochaoyang
修改了玩家选择闪耀的位置 使它更完美

Revision 1.5  2007/10/29 12:50:35  Liaochaoyang
去掉了ARM编译时的warning
修改了板子上运行时不能进入中间选项的bugs

Revision 1.4  2007/10/12 02:47:16  Liaochaoyang
no message

Revision 1.3  2007/10/09 09:17:42  Lingzhaojun
统一整理GUI头文件的包含,只包含"guictrl\Gui.h"即可引用GUI全部资源

Revision 1.2  2007/10/08 02:19:54  Lingzhaojun
添加CVS版本自动注释脚本

*********************************************************************/
/***************************************************************/
#include "include.h"
#include "fly.h"
#include "guictrl\Gui.h"
#include "..\application\game\fly\fly.h"
#include"game.h"
extern WINDOW_PROCREG FlyProcMap[];
extern WINDOW_PROCREG SelectProcMap[];
extern    GT_U8         gFly_SelectPlayer;
extern    GT_U8         gFly_GameCurLevel;
extern    GT_U8         gFly_soundCurState;
extern    GT_U8         gFly_soundCurValve;
extern   GT_BOOL        gFly_Timer;
extern GT_U8      gFly_SaveInfo[FLY_SAVE_FILE_LEN];
#define FLYDESKTIMER    30
HTIMER  Flydesktimer;
HTIMER FlySelectTimer;



UINT32 FlySet(WINDOW* win);
UINT32  FlyGlory(WINDOW* win);

UINT32 FlyHelp(WINDOW* win);
UINT32 SelectPlayer(WINDOW* win);
UINT32 FlyStart(WINDOW* win);
//UINT32 FlyPlayerSelectPaint( WINDOW* win , WMPARAM wParam, WLPARAM lParam )
//void SetTransColor(UINT32 COLOR)

/************************************************************************/
/*                       颜色处理                                           */
/************************************************************************/



void SetTransColor(UINT32 COLOR)
{
    gGuiDspTranspColor = COLOR;
}

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


/************************************************************************/
/*                       入口函数                                           */
/************************************************************************/




UINT32 GameStartFly(WINDOW* win ,  char * filePath , void* param)
{

    win = WindowCreate(win ,
                       WS_FULLSCREEN | WS_TICK,
                       WID_FlyMain,
                       0, 0, 320, 240,
                       0,
                       BID_Fly_Mission01,
                       0, 0,
                       FlyProcMap,
                       NULL);

    return 0;
}

/**************************************************************
说明            :         进入游戏的主界面
输入参数 : win 窗口指针,wParam WM_PAINT 消息, lParam没用
返回值       :     无
版本    日期      作者   改动内容和原因
*------------------------------------------------------
* 1.0            9/10/2007                 lcy         基本的功能完成
***********************************************************************/
UINT32 FlyDeskboxPaint(WINDOW* win , WMPARAM wParam, WLPARAM lParam)
{
    W_FlyDeskPic *WdeskObj = (W_FlyDeskPic*)win->Data;
    if (!(WIN_NEEDPAIT(win)))
        return TRUE;

    gGuiDspTranspColor = 0xFF00FF;
    DrawPicture(WdeskObj->IconBmp); //游戏的背景图

    DrawBmpIdEx(20, 15, BID_Fly_GameTitle, 0, DSPM_Transp);  //游戏的标题
    DrawBmpIdEx(140, 80, BID_Fly_StartSelect6, 0, DSPM_Transp); //游戏的选项
    if (WdeskObj->flag)    //游戏功能选择的闪耀处理
    {

        //DrawPicture(WdeskObj->IconBmp);
        //DrawBmpIdEx( 20,15,BID_Fly_GameTitle, 0, DSPM_Transp );
        DrawBmpIdEx(140, 80, (INT16U)(BID_Fly_StartSelect1 + WdeskObj->item), 0, DSPM_Transp);
    }
    WIN_CLEARPAIT(win);
    return TRUE;
}
/**************************************************************
说明            :        游戏主窗口的创建
输入参数 : win 窗口指针,wParam  WM_CREATE消息, lParam没用
返回值       :     无
版本    日期      作者   改动内容和原因
*------------------------------------------------------
* 1.0            9/10/2007                 lcy         基本的功能完成
***********************************************************************/
UINT32 FlyDeskboxCreat(WINDOW* win , WMPARAM wParam, WLPARAM lParam)
{
    W_FlyDeskPic *WdeskObj = NULL;

    WdeskObj = MallocClass(W_FlyDeskPic);

    if (WdeskObj)
    {
        WdeskObj->IconBmp.BmpID = win->BmpID;
        WdeskObj->IconBmp.X = win->x;
        WdeskObj->IconBmp.Y = win->y;
        WdeskObj->item = 0;
        Flydesktimer = WinStartTimer(win, FLYDESKTIMER);
        WdeskObj->flag = 0;
        win->Data = WdeskObj;
    }
    DrawBmpId(0, 0, BID_Block_Back);
    WindowInvalidateWindow(win);
    return TRUE;
}


/**************************************************************
说明            :        游戏主界面窗口的销毁
输入参数 : win 窗口指针,wParam WM_DESTROY消息,lParam消息没用
返回值       :     无
版本    日期      作者   改动内容和原因
*------------------------------------------------------
* 1.0            9/10/2007                 lcy         基本的功能完成
***********************************************************************/
UINT32 FlyDeskboxDestroy(WINDOW* win , WMPARAM wParam, WLPARAM lParam)
{
    W_FlyDeskPic *WdeskObj = (W_FlyDeskPic*)win->Data;
    RockStopTimer(Flydesktimer);
    FreeClass(WdeskObj);

    //DspTskUpdateInit( DTSC_TRANSPS);

    return WMPROC_UNHANDLE;
}
/**************************************************************
说明            :        游戏主界面窗口的按键控制
输入参数 : win 窗口指针,wParam    WM_KEY消息,lParam消息没用
返回值       :     无
版本    日期      作者   改动内容和原因
*------------------------------------------------------
* 1.0            9/10/2007                 lcy         基本的功能完成
***********************************************************************/
UINT32 FlyDeskboxKey(WINDOW* win , WMPARAM wParam, WLPARAM lParam)
{
    W_FlyDeskPic  *WpicObj = (W_FlyDeskPic *)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 % 5;
            }
            break;
        case KE_DN_RELEASE:
        case KE_PREV_RELEASE:
            {
                WpicObj->item--;
                if (WpicObj->item < 0)
                    WpicObj->item = 4;
                else
                    WpicObj->item = WpicObj->item % 5;
            }
            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;
        default:
            break;
    }

    WindowInvalidateWindow(win);

    return TRUE;
}
/***************************************************************/

UINT32 FlyDeskboxTimer(WINDOW* win , WMPARAM wParam, WLPARAM lParam)
{

    W_FlyDeskPic  *WdeskObj = win->Data;
    WdeskObj->flag = !WdeskObj->flag;
    WindowInvalidateWindow(win);
    return TRUE;
}

/**************************************************************
说明            :        游戏主界面窗口的菜单选中
输入参数 : win 窗口指针,wParam WM_COMMAND  消息, lParam没用
返回值       :     无
版本    日期      作者   改动内容和原因
*------------------------------------------------------
* 1.0            9/10/2007                 lcy         基本的功能完成
***********************************************************************/
UINT32 FlySETCommandProc(WINDOW* win , WMPARAM wParam, WLPARAM lParam)
{

    INT16U  ID = WM_CMD_GETCWID(wParam);
    INT16U  Event = WM_CMD_GETEVENT(wParam);
    W_FlyDeskPic  *WdeskObj = (W_FlyDeskPic *)win->Data;

    if (EV_ItemSelect == Event)
    {
        switch (WdeskObj->item)
        {
            case 0:
                SelectPlayer(win);     //游戏开始,进入玩家选择界面

                break;
            case 1:
                FlySet(win);          //进入游戏设置界面
                break;
            case 2:
                FlyGlory(win);       //进入游戏积分排行界面
                break;
            case 3:
                FlyHelp(win);      //进入游戏帮助界面
                break;
            case 4:
                WindowDestroy(win);  // 退出游戏
                break;


            default:
                break;
        }
    }
    return TRUE;

}
/**************************************************************
说明            :        定义名为FlyProcMap的基本类窗口消息映射表,
                               每个消息对应一个处理函数。
 输入参数 :  无
返回值      :  无
版本    日期      作者   改动内容和原因
*------------------------------------------------------
* 1.0      9/10/2007    lcy     基本的功能完成
***********************************************************************/
BEGIN_CHILDMESSAGE_MAP(FlyProcMap , CW_TYPE_fly)
ON_MESSAGE(WM_PAINT ,   FlyDeskboxPaint)
ON_MESSAGE(WM_DESTROY ,  FlyDeskboxDestroy)
ON_MESSAGE(WM_CREATE,   FlyDeskboxCreat)
ON_MESSAGE(WM_KEY,   FlyDeskboxKey)
ON_MESSAGE(WM_TIMER,   FlyDeskboxTimer)
ON_MESSAGE(WM_COMMAND,       FlySETCommandProc)
END_MESSAGE_MAP()

/**************************************************************
说明            :         进入玩家选择的界面显示
输入参数 : win 窗口指针,wParam WM_PAINT 消息, lParam没用
返回值       :     无
版本    日期      作者   改动内容和原因
*------------------------------------------------------
* 1.0            9/10/2007                 lcy         基本的功能完成
***********************************************************************/
UINT32 FlyPlayerSelectPaint(WINDOW* win , WMPARAM wParam, WLPARAM lParam)
{
    UINT16 y ;
    W_FlyPlayerPic *WplayerObj = (W_FlyPlayerPic*)win->Data;
    if (!(WIN_NEEDPAIT(win)))
        return TRUE;

    DrawPicture(WplayerObj->IconBmp); //游戏的背景图
    gGuiDspTranspColor = 0xFF00FF;
    DrawBmpIdEx(82, 8, (INT16U)(BID_Fly_SelectPlayer1 + WplayerObj->item), 0, DSPM_Transp);

    switch (WplayerObj->item)
    {
        case 0:
            y = 106;
            break;                 //第一玩家
        case 1:
            y = 64;
            break;                 //第二玩家
        case 2:
            y = 22;
            break;                  //第三玩家
        default:
            break;
    }

    if (WplayerObj->flag)                 //玩家选择的闪耀控制
    {
        gGuiDspTranspColor = 0xFF00FF;
        DrawBmpIdEx(202, y,  BID_Fly_SelectPlayer4, 0, DSPM_Transp);
    }
    else
    {
        gGuiDspTranspColor =  0xFF00FF;
        DrawBmpIdEx(202, y,  BID_Fly_SelectPlayer5, 0, DSPM_Transp);
    }

    WIN_CLEARPAIT(win);

⌨️ 快捷键说明

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