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

📄 mine.c

📁 神龙卡开发原代码
💻 C
📖 第 1 页 / 共 3 页
字号:
    mii.hsubmenu    = createpmenustart();    InsertMenuItem(hmnu, 0, TRUE, &mii);    mii.type        = MFT_STRING;    mii.id          = 110;    mii.typedata    = (DWORD)"Level";    mii.hsubmenu    = createpmenulevel();    InsertMenuItem(hmnu, 1, TRUE, &mii);        mii.type        = MFT_STRING;    mii.id          = 120;    mii.typedata    = (DWORD)"About";    mii.hsubmenu    = createpmenuabout();    InsertMenuItem(hmnu, 2, TRUE, &mii);                       return hmnu;}#endifvoid BothButtonDownProc(HWND hWnd,int adrx,int adry){    int test_open = 0;     int i = 1;    int adrx1 = 0, adry1 = 0;    int flag_opened = 1;    if (!bom[adrx][adry].test)    return;    if (!bom[adrx][adry].value)    return;    if (bom[adrx][adry].hit)    return;    while (i <= 8)    {       switch (i)       {        case 1:           adrx1 = adrx-1;           adry1 = adry;        break;                                case 2:           adrx1 = adrx-1;           adry1 = adry-1;        break;        case 3:           adrx1 = adrx-1;           adry1 = adry+1;        break;                case 4:           adrx1 = adrx;           adry1 = adry-1;        break;                case 5:            adrx1 = adrx;            adry1 = adry+1;        break;                case 6:            adrx1 = adrx+1;            adry1 = adry;         break;                 case 7:            adrx1 = adrx+1;            adry1 = adry+1;        break;                 case 8:            adrx1 = adrx+1;            adry1 = adry-1;        break;       }              if (adrx1>=0 && adry1>=0 && adrx1<sg_boxnumx && adry1<sg_boxnumy                            && bom[adrx1][adry1].hit)           test_open++;       else            if(adrx>=0 && adry1>=0 && adrx1<sg_boxnumx && adry1<sg_boxnumy                            && !bom[adrx1][adry1].test)                flag_opened = 0;                   i++;    }    if ((test_open == bom[adrx][adry].value) && !flag_opened)    {        if (!Open (hWnd, adrx, adry))            BombOut (hWnd);        if (itime == (sg_boxnumx*sg_boxnumy-bombnum))            Finished(hWnd);                 }            }void DrawDigit(HDC hdc, char* buffer, int CLOCK){    int x;        if (CLOCK)        x = x_clock;    else        x = x_bomnum;            	SetBkMode(hdc, OPAQUE);	SetBkColor(hdc, LTGRAY);	TextOut(hdc, x, 0, buffer, -1);	return;}LRESULT TestMyWinProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){    HDC hdc;    char  bomn[30], seconds[30];    int i, j;    int ran1, ran2;    static RECT bombregion, face, onerect, bombnumber, clock;     static RECT winposition;    MAINWINCREATE  CreateInfo;    PAINTSTRUCT ps;    switch (message) {              case WM_CREATE:#if 0    	    FILE* pHighscore;    	    char  buffer[256];            if( LoadBitmap(&bmpbom,"res/lei.bmp")<0)                fprintf(stderr,"bitmap error");            else                fValidbom = TRUE;              if( LoadBitmap(&bmpface,"res/face1.bmp")<0)                fprintf(stderr,"bitmap error");            else                fValidface = TRUE;                            if( LoadBitmap(&bitmap1,"res/face.bmp")<0)                fprintf(stderr,"bitmap error");            else                fValid1 = TRUE;                            if( LoadBitmap(&bmpflag,"res/flag.bmp")<0)                fprintf(stderr,"bitmap error");            else                fValidflag = TRUE;                               if( LoadBitmap(&bmpfinalface,"res/finished.bmp")<0)                fprintf(stderr,"bitmap error");            else                fValidfinalface = TRUE;                              if( LoadBitmap(&bmphitfalse,"res/hitfalse.bmp")<0)                fprintf(stderr,"bitmap error");            else                fValidhitfalse = TRUE;                               for (i = 0; i < 10; i++){                sprintf(buffer, "res/%d.bmp", i);                LoadBitmap(sg_bmpDigit + i, buffer);            }            if ((pHighscore = fopen("res/.highscore.bomb","r"))){                for (i = 0; i < 3; i++)                    fscanf(pHighscore, "%d, %s",                            &score[i].highscore, score[i].name);                fclose(pHighscore);            }            else                for (i = 0; i < 3; i++){                    score[i].highscore = 999;                    strcpy(score[i].name, "unknown");                }    #endif            SetTimer(hWnd, ID_CLOCK, FREQ_CLOCK, NULL);                        PostMessage(hWnd,WM_COMMAND,ID_NEW,0);        break;        case WM_COMMAND:            if (LOWORD(wParam) == ID_ABOUT)            {               InitAbHostedCreateInfo(hWnd,&CreateInfo);               CreateMainWindow(&CreateInfo);              }                        if (LOWORD(wParam) == ID_CLOSE)            {                PostMessage(hWnd, WM_CLOSE, 0, 0);            }                        if (LOWORD(wParam) == ID_HIGHSCORE)            {               InitHighScoreCreateInfo(hWnd,&CreateInfo);               hHighscore =  CreateMainWindow(&CreateInfo);                 ShowWindow(hHighscore,SW_SHOW);             }                        if (LOWORD(wParam) == ID_LARGE)            {                bombnum = 99;                sg_boxnumx = 30;                sg_boxnumy = 18;                winwidth = WIDTH_LARGEWIN;                flag_size = 2;                GetWindowRect(hWnd, &winposition);                MoveWindow(hWnd, winposition.left, winposition.top,                            WIDTH_LARGEWIN, HEIGHT_LARGEWIN, FALSE);                PostMessage(hWnd, WM_COMMAND, ID_NEW, 0);            }                if (LOWORD(wParam) == ID_MIDDLE)            {                bombnum = 40;                sg_boxnumx = 16;                sg_boxnumy = 16;                winwidth = WIDTH_MIDDLEWIN;                flag_size = 1;                GetWindowRect(hWnd, &winposition);                MoveWindow(hWnd, winposition.left, winposition.top,                            WIDTH_MIDDLEWIN, HEIGHT_MIDDLEWIN, FALSE);                PostMessage(hWnd, WM_COMMAND, ID_NEW, 0);            }                        if (LOWORD(wParam) == ID_SMALL)            {                bombnum = 10;                sg_boxnumx = 8;                sg_boxnumy = 8;                winwidth = WIDTH_SMALLWIN;                flag_size = 0;                GetWindowRect(hWnd, &winposition);                MoveWindow(hWnd, winposition.left, winposition.top,                            WIDTH_SMALLWIN, HEIGHT_SMALLWIN, FALSE);                PostMessage(hWnd, WM_COMMAND, ID_NEW, 0);            }                                if (LOWORD(wParam) == ID_NEW)            {                bTimer = FALSE;                second = 0;                itime = 0;                leftbombnum = bombnum;                flag_bombout = 0;                flag_finished = 0;                x_bomnum = winwidth / 6;                x_face = (winwidth*2) / 5;                x_clock = (winwidth*3) / 5;                offsetx = (winwidth - WIDTH_BOX*sg_boxnumx)/2-2;                SetRect (&clock, x_clock, 0,                             x_clock + WIDTH_CLOCK, HEIGHT_CLOCK);                                            SetRect (&face, x_face, 0,                            x_face + WIDTH_FACE, HEIGHT_FACE);                                            SetRect (&bombregion, offsetx, HEIGHT_FACE,                           WIDTH_BOX*sg_boxnumx+offsetx,                           HEIGHT_BOX*sg_boxnumy+HEIGHT_FACE);                                     SetRect (&bombnumber, x_bomnum, 0,                     x_bomnum + WIDTH_BOMNUM, HEIGHT_BOMNUM);                                    /**************initial bomb value************** */                             for (i = 0; i < sg_boxnumx; i++)                for (j = 0; j < sg_boxnumy; j++)                { bom[i][j].flag  = 0;                  bom[i][j].hit   = FALSE;                  bom[i][j].value = 0;                  bom[i][j].test  = FALSE;                  bom[i][j].bombout = FALSE;                  bom[i][j].error = FALSE;                 };               for (i = 0; i < (sg_boxnumx*sg_boxnumy); i++)                  NoAdr[i].NY = FALSE;                                  srandom( time(NULL));              i = 0;              while( i < bombnum )               {                  ran1 = random()%sg_boxnumx;                  ran2 = random()%sg_boxnumy;                  if(!bom[ran1][ran2].flag)                     {                         bom[ran1][ran2].flag = 1;			i++;                     } #ifdef __rtems__		      else i++;		/* bad rtems random function*/#endif                }                for (i = 0; i < sg_boxnumx; i++)                           for (j = 0; j < sg_boxnumy; j++)                    {                if (!bom[i][j].flag) {                if(i-1>=0&&j-1>=0&&bom[i-1][j-1].flag)                        bom[i][j].value++;                                        if(i-1>=0&&bom[i-1][j].flag)                        bom[i][j].value++;                                        if(i-1>=0&&j+1<sg_boxnumy&&bom[i-1][j+1].flag)                        bom[i][j].value++;                                        if(j-1>=0&&bom[i][j-1].flag)                        bom[i][j].value++;                                        if(j+1<sg_boxnumy&&bom[i][j+1].flag)                        bom[i][j].value++;                                        if(i+1<sg_boxnumx&&j+1<sg_boxnumy&&bom[i+1][j+1].flag)                        bom[i][j].value++;                                         if(i+1<sg_boxnumx&&bom[i+1][j].flag)                         bom[i][j].value++;                                        if(i+1<sg_boxnumx&&j-1>=0&&bom[i+1][j-1].flag)                        bom[i][j].value++;                }                      }                   InvalidateRect (hWnd, NULL, TRUE);               }        break;                case WM_TIMER:            if (wParam == ID_CLOCK)                if (bTimer){                    if (second < 1000){                        second++;                        InvalidateRect(hWnd, &clock, FALSE);                    }                }        break;                case WM_LBUTTONDOWN:            oldx = LOWORD (lParam);            oldy = HIWORD (lParam);            adrx = (oldx-offsetx)/WIDTH_BOX;            adry = (oldy-HEIGHT_FACE)/HEIGHT_BOX;                        if (hCongratulate || hHighscore)                break;                            if (!PtInRect2 (&bombregion, oldx, oldy)) {                if (PtInRect2 (&face, oldx, oldy)){                    PostMessage (hWnd, WM_COMMAND, ID_NEW, 0);                    break;                }                    else                    break;            }            if (flag_bombout)                break;            if (flag_finished)                break;            if (!bTimer)                bTimer = TRUE;                            if (bom[adrx][adry].hit)                break;#if 0            if (GetShiftKeyStatus() & 0x00000200) {#endif	    if(mwCurrentButtons & MWBUTTON_R) {                BothButtonDownProc(hWnd,adrx,adry);                break;            }                                        if (bom[adrx][adry].test)                break;                            if (bom[adrx][adry].flag) {                BombOut(hWnd);                   break;            }                if (bom[adrx][adry].value != 0)            {                    NoAdr[itime].x  = adrx;                    NoAdr[itime].y  = adry;                    NoAdr[itime].NY = TRUE;                    itime++;                    bom[adrx][adry].test = TRUE;                                        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);             }             else {                    hdc = GetDC(hWnd);                    SearchGround (hdc, adrx, adry);                    ReleaseDC(hWnd, hdc);             }                          if (itime == (sg_boxnumx*sg_boxnumy - bombnum))                Finished(hWnd);                     break;        case WM_MBUTTONDOWN:             oldx = LOWORD (lParam);             oldy = HIWORD (lParam);             adrx = (oldx-offsetx)/WIDTH_BOX;             adry = (oldy-HEIGHT_FACE)/HEIGHT_BOX;              if (!PtInRect2 (&bombregion, oldx, oldy))                break;            if (flag_bombout)                break;            if (flag_finished)                break;                            if (!bTimer)                bTimer = TRUE;                           /*****RBUTTONDOWN & LBUTTONDOWN******/                            BothButtonDownProc(hWnd,adrx,adry); 		break;        case WM_RBUTTONDOWN:#if 0             SetCapture (hWnd);#endif             oldx = LOWORD (lParam);             oldy = HIWORD (lParam);             adrx = (oldx-offsetx)/WIDTH_BOX;             adry = (oldy-HEIGHT_FACE)/HEIGHT_BOX;              if (!PtInRect2 (&bombregion, oldx, oldy))                break;            if (flag_bombout)                break;            if (flag_finished)                break;                            if (!bTimer)                bTimer = TRUE;                           /*****RBUTTONDOWN & LBUTTONDOWN******/            #if 0

⌨️ 快捷键说明

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