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

📄 bomb.c~

📁 Linux下扫雷 1.开始游戏----新游戏的开始。 ⒉难度设定——有初级、中级、高级三种难度的选择适合不同的玩家。 ⒊排名---在所有玩过此游戏的玩家进行排名。
💻 C~
📖 第 1 页 / 共 5 页
字号:
    int i;
    const char* layer = NULL;
    RECT max_rect = {0, 0, 0, 0};

    for (i = 1; i < args; i++) {
        if (strcmp (arg[i], "-layer") == 0) {
            layer = arg[i + 1];
            break;
        }
    }

    GetLayerInfo (layer, &max_rect, NULL, NULL, NULL);

    if (JoinLayer (layer, arg[0], max_rect.left, max_rect.top,
                            max_rect.left + 1024,
                            max_rect.top + 768) == INV_LAYER_HANDLE) {
        printf ("JoinLayer: invalid layer handle.\n");
        exit (1);
    }
#endif

    InitMyWinCreateInfo(&CreateInfo);

    hMainWnd = CreateMainWindow(&CreateInfo);  //建立主窗口

    if (hMainWnd == HWND_INVALID)
#ifdef _LITE_VERSION
        return 0;
#else
        return NULL;
#endif

    ShowWindow(hMainWnd,SW_SHOWNORMAL);  //显示主窗口   /*消息循环    *GetMessage:从应用程序的消息队列中取出一条信息    *TranslateMessage:用于把击键消息转换为字符消息(MSG_CHAR)    *DispatchMessage:把当前消息发送到对应的窗口过程函数中去,由窗口过程函数对消息进行处理    *当GetMessage函数接收到由PostQuitMessage函数发送的一个MSG_QUIT消息时,GetMessage函数返回值0,循环终止*/
    while( GetMessage(&Msg, hMainWnd) ) {
        TranslateMessage (&Msg);
        DispatchMessage(&Msg);
    }

    MainWindowThreadCleanup(hMainWnd);
#ifdef _LITE_VERSION
        return 0;
#else
    return NULL;
#endif
}

#ifndef _LITE_VERSION   
int MiniGUIMain(int args, const char* arg[])
{
#ifdef _IME_GB2312
    GBIMEWindow (HWND_DESKTOP);  
#endif
    TestMyWindow (NULL);
    return 0;
}
#endif

/**********   create a hosted about window****//***********************************************************名    称:AbHostedWinProc()*功    能:绘制"The about window" 窗口内容*入口参数:hWnd     当前窗口(即接收信息的窗口)的句柄*         message   接收到的消息标识*         wParam    消息参数1*         lParam    消息参数2*出口参数:  返回0**********************************************************/
int AbHostedWinProc (HWND hWnd, int message, WPARAM wParam, LPARAM lParam)
{
    
    switch (message) {
        case MSG_CREATE:  //窗口建立消息
        break;

        case MSG_PAINT:   //窗口绘图消息
        {
            HDC hdc;

            hdc = BeginPaint (hWnd);   //获取窗口设备上下文句柄
            SetBkColor(hdc,COLOR_lightgray);  //设置文本背景颜色
            TextOut (hdc, 10, 25, "Bomb Game Ver 1.0 (2000/04/11)"); //输出字符串
            TextOut (hdc, 10, 55, 
                "Author: Mis. Zheng Xiang (xiang_zi@263.net).");
            TextOut (hdc, 10, 75, 
                "        Mis. Glory (glory@263.net).");
            EndPaint (hWnd, hdc);   //释放窗口设备上下文句柄
        }
        return 0;

        case MSG_CLOSE:  //关闭窗口消息
            DestroyMainWindow (hWnd);  //销毁主窗口
        return 0;
    }

    return DefaultMainWinProc(hWnd, message, wParam, lParam); //默认的主窗口过程函数
}/***********************************************************名    称:InitAbHostedCreateInfo()*功    能:建立"The about window" 的主窗口*入口参数:hHosting    当前窗口的句柄*         pCreateInfo  主窗口*出口参数:  返回0**********************************************************/
void InitAbHostedCreateInfo (HWND hHosting, PMAINWINCREATE pCreateInfo)
{
    pCreateInfo->dwStyle   = WS_BORDER | WS_CAPTION | WS_VISIBLE;  //窗口风格设置
    pCreateInfo->dwExStyle = WS_EX_NONE;  //不使用窗口扩展风格
    pCreateInfo->spCaption = "The about window" ;  //窗口标题
    pCreateInfo->hMenu = 0;  //无下拉式菜单
    pCreateInfo->hCursor   = GetSystemCursor(0);  //设置窗口光标
    pCreateInfo->hIcon = 0;  //窗口无图标
    pCreateInfo->MainWindowProc = AbHostedWinProc;  //窗口过程函数
    pCreateInfo->lx = 100;  //窗口的位置,大小
    pCreateInfo->ty = 200;
    pCreateInfo->rx = 540;
    pCreateInfo->by = 390;
    pCreateInfo->iBkColor  = COLOR_lightgray;  //窗口背景色
    pCreateInfo->dwAddData = 0;   //无附加数据
    pCreateInfo->hHosting  = hHosting;   //托管窗口句柄
} 

/*************************** High Scores Window ******************************//***********************************************************名    称:HighScoreWinPro()*功    能:绘制"The about window" 窗口内容*入口参数:hWnd     当前窗口(即接收信息的窗口)的句柄*         message   接收到的消息标识*         wParam    消息参数1*         lParam    消息参数2*出口参数:  返回0**********************************************************/
#define IDC_RESET  110
int HighScoreWinProc (HWND hWnd, int message, WPARAM wParam, LPARAM lParam)
{
    static HWND hRESET, hOK;  //定义两个窗口句柄
    
    switch (message) {
        case MSG_CREATE:  //窗口建立消息
            hRESET = CreateWindow ("button",
                        "Reset",
                        WS_CHILD | BS_PUSHBUTTON | WS_VISIBLE,
                        IDC_RESET,
                        100, 145, 60, 26, hWnd, 0);  //创建一个重设置窗口
                        
            hOK    = CreateWindow ("button",
                        "Ok",
                        WS_CHILD | BS_PUSHBUTTON | WS_VISIBLE,
                        IDOK,
                        220, 145, 60, 26, hWnd, 0);   //创建一个确定窗口
        break;

        case MSG_COMMAND:  //命令消息
        {
            int id = LOWORD(wParam);  //取得控件ID
            FILE* pHighscore;
            int i;
	    /*取得控件ID为RESET,取得通知码消息是用户单击此按钮*/
            if (id == IDC_RESET && HIWORD(wParam) == BN_CLICKED) {		/*三个模式默认都是,最高分999,姓名unknown*/
                for (i = 0; i < 3; i++){
                    score[i].highscore = 999;
                    strcpy(score[i].name, "unknown");
                }    
                		/*如果写形式打开记录文件,记录最高分*/
                if ((pHighscore = fopen(get_record_file(), "w+"))){
                    for (i = 0; i < 3; i++)
                        fprintf(pHighscore, "%d, %s\n", 
                                    score[i].highscore,score[i].name); /*记录最高分*/
                    fclose(pHighscore);
                }    
                InvalidateRect(hWnd, NULL, TRUE);
            }	   /*取得控件ID为OK,取得通知码消息是用户单击此按钮*/
            if (id == IDOK && HIWORD(wParam) == BN_CLICKED)
                PostMessage(hWnd, MSG_CLOSE, 0, 0);   //发送关闭窗口消息
        }
        break;
        
        case MSG_PAINT:  //绘图窗口
        {
            HDC hdc;
            char buffer[50];
            int i;
            
            hdc = BeginPaint (hWnd);
            SetBkColor(hdc,COLOR_lightgray);   //设置窗口背景色
            TextOut(hdc, 130, 15, "Heroes");    //输出字符串
            TextOut(hdc, 15, 45, "SMALL" );
            TextOut(hdc, 15, 75, "MIDDLE" );
            TextOut(hdc, 15, 105, "LARGE" );		   /*输出三个模式的最高记录*/
            for (i = 0; i < 3; i++){
                sprintf(buffer, "%3d          %s", 
                            score[i].highscore, score[i].name);
                TextOut(hdc, 150, 45+i*30, buffer);   //输出字符串数组
            }    
            EndPaint (hWnd, hdc);
        }
        return 0;

        case MSG_CLOSE:    
            DestroyWindow (hRESET);   //销毁RESET窗口
            DestroyWindow (hOK);     //销毁OK窗口
            DestroyMainWindow (hWnd);  //销毁主窗口
            hHighscore = HWND_DESKTOP;  
        return 0;
    }

    return DefaultMainWinProc(hWnd, message, wParam, lParam);  //默认的主窗口过程函数
}
/***********************************************************名    称:InitHighScoreCreateInfo()*功    能:建立"High Score" 的主窗口*入口参数:hHosting    当前窗口的句柄*         pCreateInfo  主窗口*出口参数:  返回0**********************************************************/
void InitHighScoreCreateInfo (HWND hHosting, PMAINWINCREATE pCreateInfo)
{
    pCreateInfo->dwStyle   = WS_BORDER | WS_CAPTION; //窗口风格设置
    pCreateInfo->dwExStyle = WS_EX_NONE;  //不使用窗口扩展风格
    pCreateInfo->spCaption = "High Score" ;  //窗口标题
    pCreateInfo->hMenu = 0;   //无下拉式菜单
    pCreateInfo->hCursor   = GetSystemCursor(0);  //设置窗口光标
    pCreateInfo->hIcon = 0;  //窗口无图标
    pCreateInfo->MainWindowProc = HighScoreWinProc; //窗口过程函数
    pCreateInfo->lx = 100;  //窗口位置,大小
    pCreateInfo->ty = 200;
    pCreateInfo->rx = 470;
    pCreateInfo->by = 410;
    pCreateInfo->iBkColor  = COLOR_lightgray;  //窗口背景色
    pCreateInfo->dwAddData = 0;   //无附加数据
    pCreateInfo->hHosting  = hHosting;  //托管窗口句柄
}

/************************* Congratulation Window *****************************/
/***********************************************************名    称:CongratulationWinProc()*功    能:绘制"Congratulation" 窗口内容*入口参数:hWnd     当前窗口(即接收信息的窗口)的句柄*         message   接收到的消息标识*         wParam    消息参数1*         lParam    消息参数2*出口参数:  返回0**********************************************************/
#define IDC_CTRL_NAME       100

int CongratulationWinProc (HWND hWnd, int message, WPARAM wParam, LPARAM lParam)
{
    static HWND hPrompt, hName, hOK;   //三个窗口句柄
       
    switch (message) {
        case MSG_CREATE:
            hPrompt = CreateWindow ("static",
                          "Please input your name:",
                          SS_SIMPLE | WS_VISIBLE,
                          IDC_STATIC,
                          10, 10, 185, 24, hWnd, 0);  //创建一个静态窗口
            hName   = CreateWindow ("edit",
                          getlogin(),
                          WS_CHILD | WS_VISIBLE | WS_BORDER,
                          IDC_CTRL_NAME,
                          10, 40, 175, 26, hWnd, 0);   //创建一个输入姓名窗口
            hOK     = CreateWindow ("button",
                          "Ok",
                          WS_CHILD | BS_PUSHBUTTON | WS_VISIBLE,
                          IDOK,
                          110, 75, 75, 26, hWnd, 0);   //创建一个确定窗口
        break;

        case MSG_COMMAND:
        {
            int id = LOWORD(wParam);  //取得控件ID
            FILE* pHighscore;
            int i;
	    /*取得控件ID为OK,取得通知码消息是用户单击此按钮*/
            if (id == IDOK && HIWORD(wParam) == BN_CLICKED) {
                score[flag_size].highscore = second;  //分数存入记录结构体的分数中	/*姓名的消息发送到记录结构体的姓名中,MSG_GETTEXT取得文本内容消息        * 19 为允许接收的最大字符个数,*/
                SendMessage (hName, MSG_GETTEXT,
                                19, (LPARAM)score[flag_size].name);  		/*如果写形式打开记录文件,记录最高分*/
                if ((pHighscore = fopen(get_record_file(), "w+"))){
                    for (i = 0; i < 3; i++)
                        fprintf(pHighscore, "%d, %s\n", 
                                    score[i].highscore,score[i].name);
                    fclose(pHighscore);
                }    
                PostMessage (hWnd, MSG_CLOSE, 0, 0);
            }
        }
        break;
        case MSG_CLOSE:
            DestroyWindow (hPrompt);  //销毁窗口
            DestroyWindow (hName);
            DestroyWindow (hOK);
            DestroyMainWindow (hWnd);
            hCongratuate = HWND_DESKTOP;
        return 0;
    }

    return DefaultMainWinProc(hWnd, message, wParam, lParam);   //默认的主窗口过程函数
}
/***********************************************************名    称:InitCongratulationCreateInfo()*功    能:建立"Congratulation" 的主窗口*入口参数:hHosting    当前窗口的句柄*         pCreateInfo  主窗口*出口参数:  返回0**********************************************************/
void InitCongratulationCreateInfo (HWND hHosting, PMAINWINCREATE pCreateInfo)
{
    pCreateInfo->dwStyle   = WS_BORDER | WS_CAPTION | WS_VISIBLE;  //窗口风格设置
    pCreateInfo->dwExStyle = WS_EX_IMECOMPOSE;  //使用窗口扩展风格
    pCreateInfo->spCaption = "Congratulation" ;  //窗口标题
    pCreateInfo->hMenu = 0;   //无下拉式菜单
    pCreateInfo->hCursor   = GetSystemCursor(0);   //设置窗口光标
    pCreateInfo->hIcon = 0;  //窗口无图标
    pCreateInfo->MainWindowProc = CongratulationWinProc;

⌨️ 快捷键说明

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