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

📄 mine.c

📁 神龙卡开发原代码
💻 C
📖 第 1 页 / 共 3 页
字号:
            if (GetShiftKeyStatus() & 0x00000100){#endif	    if(mwCurrentButtons & MWBUTTON_L) {                BothButtonDownProc(hWnd,adrx,adry);                 break;             }               /*******  only  rbuttondown   *******/                            if (bom[adrx][adry].test)               break;            if (!bom[adrx][adry].hit )               {                     bom[adrx][adry].hit = TRUE;                     leftbombnum--;                   }            else               { bom[adrx][adry].hit = FALSE;                 leftbombnum++;               }            SetRect (&onerect, adrx*WIDTH_BOX+offsetx,                      adry*HEIGHT_BOX+HEIGHT_FACE,                       (adrx+1)*WIDTH_BOX+offsetx,                      (adry+1)*HEIGHT_BOX+HEIGHT_FACE);            InvalidateRect (hWnd, &onerect, FALSE);            InvalidateRect (hWnd, &bombnumber, FALSE);        break;              case WM_PAINT:            hdc = BeginPaint (hWnd, &ps);                       sprintf(seconds, "%03d", second);            DrawDigit(hdc, seconds, TRUE);            if (leftbombnum >= 0){                                     sprintf(bomn,"%02d",leftbombnum);                DrawDigit(hdc, bomn, FALSE);            }                        if (flag_finished)		DrawDIB(hdc, x_face+1, 1, &image_minedone);#if 0                DrawMyBitmap (hdc, fValidfinalface?&bmpfinalface:NULL,#endif            else                 if (flag_bombout)		    DrawDIB(hdc, x_face, 0, &image_minefacelost);                else		    DrawDIB(hdc, x_face, 0, &image_mineface);                        for (i = 0; i < sg_boxnumx; i++)                for (j = 0; j < sg_boxnumy; j++)            {                if (!bom[i][j].test && !bom[i][j].bombout){                    SetTextColor (hdc,BLACK);		    SelectObject(hdc, GetStockObject(NULL_BRUSH));                    Draw3DUpFrame(hdc,                            i*WIDTH_BOX+offsetx,                            j*HEIGHT_BOX+HEIGHT_FACE,                            (i+1)*WIDTH_BOX+offsetx,                            (j+1)*HEIGHT_BOX+HEIGHT_FACE,                            LTGRAY);                }                                         if ( bom[i][j].hit)		    DrawDIB(hdc, i*WIDTH_BOX+offsetx+3, j*HEIGHT_BOX+3+HEIGHT_FACE,				 &image_mineflag);                            if (bom[i][j].error) {                    Cancel3DFrame(hdc,i*WIDTH_BOX+offsetx,                                 j*HEIGHT_BOX+HEIGHT_FACE,                                 WIDTH_BOX,HEIGHT_BOX);                    		    DrawDIB(hdc, i*WIDTH_BOX+offsetx+1, j*HEIGHT_BOX+1+HEIGHT_FACE,		       &image_minehitfalse);                }                                if (bom[i][j].bombout) {                    Cancel3DFrame(hdc,i*WIDTH_BOX+offsetx,                                        j*HEIGHT_BOX+HEIGHT_FACE,                                        WIDTH_BOX,HEIGHT_BOX);                    		    DrawDIB(hdc, i*WIDTH_BOX+offsetx+1, j*HEIGHT_BOX+1+HEIGHT_FACE,		       &image_minebomb);                }            }                        for ( i = 0; i < itime; i++ )            {             Cancel3DFrame(hdc,(NoAdr[i].x)*WIDTH_BOX+offsetx,                        (NoAdr[i].y)*HEIGHT_BOX+HEIGHT_FACE,                        WIDTH_BOX, HEIGHT_BOX);             if(NoAdr[i].NY)                  TextValue(hdc,(NoAdr[i].x)*WIDTH_BOX+offsetx,                          (NoAdr[i].y)*HEIGHT_BOX+HEIGHT_FACE,                           bom[NoAdr[i].x][NoAdr[i].y].value);            }            EndPaint (hWnd, &ps);        break;            case WM_CLOSE:            KillTimer(hWnd, ID_CLOCK);              DestroyWindow (hWnd);            PostQuitMessage (0);        return 0;    }    return DefWindowProc(hWnd, message, wParam, lParam);}void InitMyWinCreateInfo(PMAINWINCREATE pCreateInfo){    pCreateInfo->dwStyle = WS_CAPTION | WS_BORDER | WS_SYSMENU |  WS_VISIBLE;    pCreateInfo->spCaption="Microwindows Minesweeper";    pCreateInfo->hMenu = 0; 	/* createmenu1(); */    pCreateInfo->hCursor = 0; 	/* GetSystemCursor(0); */    pCreateInfo->hIcon = 0;    pCreateInfo->MainWindowProc = TestMyWinProc;    pCreateInfo->lx = 0;    pCreateInfo->ty = 0;    pCreateInfo->rx = winwidth;    pCreateInfo->by = winheight;    pCreateInfo->iBkColor = LTGRAY;     pCreateInfo->dwAddData = 0;    pCreateInfo->hHosting = HWND_DESKTOP;}void* TestMyWindow(void* data) {    MSG Msg;    MAINWINCREATE CreateInfo;    HWND hMainWnd;    InitMyWinCreateInfo(&CreateInfo);    hMainWnd = CreateMainWindow(&CreateInfo);    if (hMainWnd == 0)        return NULL;    ShowWindow(hMainWnd,SW_SHOWNORMAL);    while( GetMessage(&Msg, NULL, 0, 0) ) {        TranslateMessage (&Msg);        DispatchMessage(&Msg);    }    return NULL;}int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine,	int nShowCmd){    TestMyWindow (NULL);    return 0;}/**********   create a hosted about window****/LRESULT AbHostedWinProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){    PAINTSTRUCT ps;    switch (message) {        case WM_CREATE:        break;        case WM_PAINT:        {            HDC hdc;            hdc = BeginPaint (hWnd, &ps);            SetBkColor(hdc,LTGRAY);            TextOut (hdc, 10, 25, "Minesweeper Ver 0.9 (1999/08/27)", -1);             TextOut (hdc, 10, 55,                 "Author: Mis. Zheng Xiang (xiang_zi@263.net).", -1);            TextOut (hdc, 10, 75,                 "        Mis. Glory (glory@263.net).", -1);            EndPaint (hWnd, &ps);        }        return 0;        case WM_CLOSE:            DestroyWindow (hWnd);        return 0;    }    return DefWindowProc(hWnd, message, wParam, lParam);}void InitAbHostedCreateInfo (HWND hHosting, PMAINWINCREATE pCreateInfo){    pCreateInfo->dwStyle   = WS_BORDER | WS_CAPTION | WS_VISIBLE;    pCreateInfo->spCaption = "The about window" ;    pCreateInfo->hMenu = 0;    pCreateInfo->hCursor = 0; 	/* GetSystemCursor(0); */    pCreateInfo->hIcon = 0;    pCreateInfo->MainWindowProc = AbHostedWinProc;    pCreateInfo->lx = 100;     pCreateInfo->ty = 200;    pCreateInfo->rx = 540;    pCreateInfo->by = 390;    pCreateInfo->iBkColor  = LTGRAY;     pCreateInfo->dwAddData = 0;    pCreateInfo->hHosting  = hHosting;}/*************************** High Scores Window ******************************/#define IDC_RESET  110LRESULT HighScoreWinProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){    PAINTSTRUCT ps;    static HWND hRESET, hOK;        switch (message) {        case WM_CREATE:            hRESET = CreateWindowEx (0L, "button",                        "重置",                        WS_CHILD | BS_PUSHBUTTON | WS_VISIBLE,                        100, 145, 60, 26, 			hWnd, (HMENU)IDC_RESET, 0, 0L);                                    hOK    = CreateWindowEx (0L, "button",                        "确定",                        WS_CHILD | BS_PUSHBUTTON | WS_VISIBLE,                        220, 145, 60, 26,			hWnd, (HMENU)IDOK, 0, 0L);        break;        case WM_COMMAND:        {            int id = LOWORD(wParam);            int i;            if (id == IDC_RESET && HIWORD(wParam) == BN_CLICKED) {                for (i = 0; i < 3; i++){                    score[i].highscore = 999;                    strcpy(score[i].name, "unknown");                }                    #if 0                FILE* pHighscore;                if ((pHighscore = fopen("res/.highscore.bomb", "w+"))){                    for (i = 0; i < 3; i++)                        fprintf(pHighscore, "%d, %s\n",                                     score[i].highscore,score[i].name);                    fclose(pHighscore);                }    #endif                InvalidateRect(hWnd, NULL, TRUE);            }            if (id == IDOK && HIWORD(wParam) == BN_CLICKED)                PostMessage(hWnd, WM_CLOSE, 0, 0);        }        break;                case WM_PAINT:        {            HDC hdc;            char buffer[50];            int i;                        hdc = BeginPaint (hWnd, &ps);            SetBkColor(hdc,LTGRAY);            TextOut(hdc, 130, 15, "英雄榜", -1);            TextOut(hdc, 15, 45, "SMALL" , -1);            TextOut(hdc, 15, 75, "MIDDLE", -1 );            TextOut(hdc, 15, 105, "LARGE", -1 );            for (i = 0; i < 3; i++){                sprintf(buffer, "%3d          %s",                             score[i].highscore, score[i].name);                TextOut(hdc, 150, 45+i*30, buffer, -1);            }                EndPaint (hWnd, &ps);        }        return 0;        case WM_CLOSE:            DestroyWindow (hRESET);            DestroyWindow (hOK);            DestroyWindow (hWnd);            hHighscore = HWND_DESKTOP;        return 0;    }    return DefWindowProc(hWnd, message, wParam, lParam);}void InitHighScoreCreateInfo (HWND hHosting, PMAINWINCREATE pCreateInfo){    pCreateInfo->dwStyle   = WS_BORDER | WS_CAPTION;    pCreateInfo->spCaption = "High Score" ;    pCreateInfo->hMenu = 0;    pCreateInfo->hCursor   = 0; 	/* GetSystemCursor(0); */    pCreateInfo->hIcon = 0;    pCreateInfo->MainWindowProc = HighScoreWinProc;    pCreateInfo->lx = 100;     pCreateInfo->ty = 200;    pCreateInfo->rx = 470;    pCreateInfo->by = 410;    pCreateInfo->iBkColor  = LTGRAY;     pCreateInfo->dwAddData = 0;    pCreateInfo->hHosting  = hHosting;}/************************* Congratulation Window *****************************/#define IDC_CTRL_NAME       100LRESULT CongratulationWinProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){    static HWND hPrompt, hName, hOK;           switch (message) {        case WM_CREATE:#if 0            hPrompt = CreateWindow ("static",                          "请输入大虾尊姓大名: ",                          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);#endif            hOK     = CreateWindow ("button",                          "确定",                          WS_CHILD | BS_PUSHBUTTON | WS_VISIBLE,                          110, 75, 75, 26,			  hWnd, (HMENU)IDOK, 0, 0L);        break;        case WM_COMMAND:        {            int id = LOWORD(wParam);            if (id == IDOK && HIWORD(wParam) == BN_CLICKED) {                score[flag_size].highscore = second;                SendMessage (hName, WM_GETTEXT,                                19, (LPARAM)score[flag_size].name);#if 0                FILE* pHighscore;                int i;                if ((pHighscore = fopen("res/.highscore.bomb", "w+"))){                    for (i = 0; i < 3; i++)                        fprintf(pHighscore, "%d, %s\n",                                     score[i].highscore,score[i].name);                    fclose(pHighscore);                }    #endif                PostMessage (hWnd, WM_CLOSE, 0, 0);            }        }        break;                                                                                        case WM_CLOSE:            DestroyWindow (hPrompt);            DestroyWindow (hName);            DestroyWindow (hOK);            DestroyWindow (hWnd);            hCongratulate = HWND_DESKTOP;        return 0;    }    return DefWindowProc(hWnd, message, wParam, lParam);}void InitCongratulationCreateInfo (HWND hHosting, PMAINWINCREATE pCreateInfo){    pCreateInfo->dwStyle   = WS_BORDER | WS_CAPTION | WS_VISIBLE;    pCreateInfo->spCaption = "Congratulation" ;    pCreateInfo->hMenu = 0;    pCreateInfo->hCursor   = 0; 	/* GetSystemCursor(0); */    pCreateInfo->hIcon = 0;    pCreateInfo->MainWindowProc = CongratulationWinProc;    pCreateInfo->lx = 50;     pCreateInfo->ty = 60;    pCreateInfo->rx = 255;    pCreateInfo->by = 200;    pCreateInfo->iBkColor  = LTGRAY;     pCreateInfo->dwAddData = 0;    pCreateInfo->hHosting  = hHosting;}HWNDCreateMainWindow(PMAINWINCREATE pCreateInfo){	HWND		hwnd;	RECT		rc;	WNDCLASS	wc;	wc.style = CS_DBLCLKS | CS_HREDRAW | CS_VREDRAW;	wc.lpfnWndProc = (WNDPROC)pCreateInfo->MainWindowProc;	wc.cbClsExtra = 0;	wc.cbWndExtra = 0;	wc.hInstance = 0;	wc.hIcon = pCreateInfo->hIcon;	wc.hCursor = pCreateInfo->hCursor;	wc.hbrBackground = (HBRUSH)CreateSolidBrush(pCreateInfo->iBkColor);	wc.lpszMenuName = 0;	wc.lpszClassName = pCreateInfo->spCaption;	RegisterClass(&wc);	SetRect(&rc, pCreateInfo->lx, pCreateInfo->ty, pCreateInfo->rx,		pCreateInfo->by);	AdjustWindowRectEx(&rc, pCreateInfo->dwStyle, FALSE, 0L);	hwnd = CreateWindowEx(0L, pCreateInfo->spCaption,			pCreateInfo->spCaption,			pCreateInfo->dwStyle,			rc.left, rc.top, rc.right-rc.left, rc.bottom-rc.top,			pCreateInfo->hHosting,			(HMENU)0, (HINSTANCE)0,			(PVOID)pCreateInfo->dwAddData);	return hwnd;}BOOLPtInRect2(const RECT *lprc, int x, int y){	POINT	p;	p.x = x;	p.y = y;	return PtInRect(lprc, p);}voidDraw3DUpFrame(HDC hDC, int l, int t, int r, int b, int fillc){	RECT	rc;	HBRUSH	hbr;	SetRect(&rc, l, t, r, b);	Draw3dBox(hDC, rc.left, rc.top,		rc.right-rc.left, rc.bottom-rc.top,		GetSysColor(COLOR_3DLIGHT),		GetSysColor(COLOR_WINDOWFRAME));	InflateRect(&rc, -1, -1);	Draw3dBox(hDC, rc.left, rc.top,		rc.right-rc.left, rc.bottom-rc.top,		GetSysColor(COLOR_BTNHIGHLIGHT),		GetSysColor(COLOR_BTNSHADOW));	InflateRect(&rc, -1, -1);	hbr = CreateSolidBrush(LTGRAY);	FillRect(hDC, &rc, hbr);	DeleteObject(hbr);}

⌨️ 快捷键说明

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