鱼C论坛

 找回密码
 立即注册
查看: 36870|回复: 302

[技术交流] 写了个俄罗斯方块,在上一次的代码里做了改进, 性能好多了, 大家看看吧!

  [复制链接]
发表于 2016-3-15 21:20:17 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. #include <windows.h>
  2. #include "resource.h"

  3. #define BLACK                1
  4. #define WHITE                2
  5. #define RED                        3
  6. #define GREEN                4
  7. #define BLUE                5
  8. #define YELLOW                6
  9. #define MAGENTA                7
  10. #define CYAN                8
  11. #define ID_TIMER    9
  12. struct BLOCK
  13. {
  14.         BOOL                bool;
  15.         int                        color;
  16. }block[22][12];
  17. HBRUSH                hRedBrush, hGreenBrush, hBlueBrush, hYellowBrush, hMagentaBrush, hCyanBrush, hBlackBrush, hWhiteBrush;
  18. int                        m = 21, n = 4, m1 = 21, n1 = 5, m2 = 22, n2 = 5, m3 = 22, n3 = 6, NextBlock = 3, NowBlock = 3, score = 0;
  19. int                        ChangeBlock0, ChangeBlock1, ChangeBlock2, ChangeBlock3, ChangeBlock4;
  20. int                        id = 40006, id_Next;

  21. LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);
  22. VOID SetIsotropic(HDC hdc, int cxClient, int cyClient);
  23. VOID DrawBlock(HDC hdc);
  24. VOID DispatchBlock(VOID);
  25. VOID DispatchBlockColor(VOID);
  26. VOID ChangeBlock(HDC hdc, int q);
  27. VOID ClearupBlock(VOID);

  28. int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
  29. {
  30.         HWND                                hwnd;
  31.         WNDCLASS                        wndclass;
  32.         MSG                                        msg;
  33.         TCHAR                                szAppName[] = TEXT("WangXiaoQi");

  34.         wndclass.style                                = CS_VREDRAW | CS_HREDRAW;
  35.         wndclass.hInstance                        = hInstance;
  36.         wndclass.lpfnWndProc                = WndProc;
  37.         wndclass.cbClsExtra                        = 0;
  38.         wndclass.cbWndExtra                        = 0;
  39.         wndclass.hIcon                                = LoadIcon(NULL, IDI_SHIELD);
  40.         wndclass.hCursor                        = LoadCursor(NULL, IDC_ARROW);
  41.         wndclass.hbrBackground                = (HBRUSH)GetStockObject(WHITE_BRUSH);
  42.         wndclass.lpszMenuName                = MAKEINTRESOURCE(IDR_MENU1);
  43.         wndclass.lpszClassName                = szAppName;

  44.         if (!RegisterClass(&wndclass))
  45.         {
  46.                 MessageBox(NULL, TEXT("改程序只能在WindowsNT下才能运行!"), szAppName, MB_ICONERROR);
  47.                 return 0;
  48.         }

  49.         hwnd = CreateWindow(szAppName,
  50.                                                 TEXT("俄罗斯方块!"),
  51.                                                 WS_OVERLAPPEDWINDOW,
  52.                                                 CW_USEDEFAULT,
  53.                                                 CW_USEDEFAULT,
  54.                                                 CW_USEDEFAULT,
  55.                                                 CW_USEDEFAULT,
  56.                                                 NULL,
  57.                                                 NULL,
  58.                                                 hInstance,
  59.                                                 NULL);

  60.         ShowWindow(hwnd, iCmdShow);
  61.         UpdateWindow(hwnd);

  62.         while (GetMessage(&msg, NULL, 0, 0))
  63.         {
  64.                 TranslateMessage(&msg);
  65.                 DispatchMessage(&msg);
  66.         }
  67.         return msg.wParam;

  68. }

  69. LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
  70. {
  71.         HDC                                hdc;
  72.         PAINTSTRUCT                ps;
  73.         static int                cxClient, cyClient;
  74.         HMENU                        hMenu;
  75.         int                                i, j, k, iFileLength;
  76.         HANDLE                        hFile;
  77.         PTSTR                        pstrFileName = TEXT("王小琪.WangXiaoQi");
  78.         CHAR                        pText[500], szBuffer[500];
  79.         DWORD                        dwBytesRead;

  80.         switch (message)
  81.         {
  82.         case WM_CREATE:
  83.                 hBlackBrush = GetStockObject(BLACK_BRUSH);
  84.                 hWhiteBrush = GetStockObject(WHITE_BRUSH);
  85.                 hRedBrush = CreateSolidBrush(RGB(255, 0, 0));
  86.                 hGreenBrush = CreateSolidBrush(RGB(0, 255, 0));
  87.                 hBlueBrush = CreateSolidBrush(RGB(0, 255, 0));
  88.                 hYellowBrush = CreateSolidBrush(RGB(255, 255, 0));
  89.                 hMagentaBrush = CreateSolidBrush(RGB(255, 0, 255));
  90.                 hCyanBrush = CreateSolidBrush(RGB(0, 255, 255));

  91.                 for (i = 0; i <= 22; i++)
  92.                 {
  93.                         block[i][0].bool = TRUE;
  94.                         block[i][11].bool = TRUE;
  95.                 }
  96.                 for (i = 0; i <= 11; i++)
  97.                         block[0][i].bool = TRUE;
  98.                 if (INVALID_HANDLE_VALUE ==
  99.                         (hFile = CreateFile(pstrFileName, GENERIC_READ, 0,
  100.                         NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL)))
  101.                 {
  102.                         MessageBox(hwnd, TEXT("打开文件失败, 无法获取文件内的数据!"), TEXT("俄罗斯方块"), MB_ICONERROR);
  103.                 }
  104.                 iFileLength = GetFileSize(hFile, NULL);
  105.                 if (iFileLength == 0)
  106.                 {
  107.                         for (i = 1; i <= 20; i++)
  108.                         for (j = 1; j <= 10; j++)
  109.                                 block[i][j].bool = FALSE;
  110.                         m = 21; n = 4; m1 = 21; n1 = 5; m2 = 22; n2 = 5; m3 = 22; n3 = 6;
  111.                         ChangeBlock0 = 0; ChangeBlock1 = 0; ChangeBlock2 = 0; ChangeBlock3 = 0; ChangeBlock4 = 0;
  112.                         NowBlock = 3;
  113.                         id = 40004;
  114.                         score = 0;
  115.                 }
  116.                 else
  117.                 {
  118.                         ReadFile(hFile, szBuffer, iFileLength, &dwBytesRead, NULL);
  119.                         k = 0;
  120.                         for (i = 1; i <= 20; i++)
  121.                         for (j = 1; j <= 10; j++)
  122.                         {
  123.                                 if (szBuffer[k] == '1')
  124.                                         block[i][j].bool = TRUE;
  125.                                 if (szBuffer[k] == '0')
  126.                                         block[i][j].bool = FALSE;
  127.                                 k++;
  128.                         }
  129.                         k++;
  130.                         for (i = 1; i <= 20; i++)
  131.                         for (j = 1; j <= 10; j++)
  132.                         {
  133.                                 switch (szBuffer[k])
  134.                                 {
  135.                                 case '0':
  136.                                         block[i][j].color = 0; break;
  137.                                 case '3':
  138.                                         block[i][j].color = 3; break;
  139.                                 case '4':
  140.                                         block[i][j].color = 4; break;
  141.                                 case '5':
  142.                                         block[i][j].color = 5; break;
  143.                                 case '6':
  144.                                         block[i][j].color = 6; break;
  145.                                 case '7':
  146.                                         block[i][j].color = 7; break;
  147.                                 case '8':
  148.                                         block[i][j].color = 8; break;
  149.                                 }
  150.                                 k++;
  151.                         }
  152.                         k = 402;
  153.                         m = atol(&szBuffer[k]);
  154.                         while (1)
  155.                         {
  156.                                 if (szBuffer[k] != ' ')
  157.                                         k++;
  158.                                 else
  159.                                         break;
  160.                         }
  161.                         k++;
  162.                         n = atol(&szBuffer[k]);
  163.                         while (1)
  164.                         {
  165.                                 if (szBuffer[k] != ' ')
  166.                                         k++;
  167.                                 else
  168.                                         break;
  169.                         }
  170.                         k++;
  171.                         m1 = atol(&szBuffer[k]);
  172.                         while (1)
  173.                         {
  174.                                 if (szBuffer[k] != ' ')
  175.                                         k++;
  176.                                 else
  177.                                         break;
  178.                         }
  179.                         k++;
  180.                         n1 = atol(&szBuffer[k]);
  181.                         while (1)
  182.                         {
  183.                                 if (szBuffer[k] != ' ')
  184.                                         k++;
  185.                                 else
  186.                                         break;
  187.                         }
  188.                         k++;
  189.                         m2 = atol(&szBuffer[k]);
  190.                         while (1)
  191.                         {
  192.                                 if (szBuffer[k] != ' ')
  193.                                         k++;
  194.                                 else
  195.                                         break;
  196.                         }
  197.                         k++;
  198.                         n2 = atol(&szBuffer[k]);
  199.                         while (1)
  200.                         {
  201.                                 if (szBuffer[k] != ' ')
  202.                                         k++;
  203.                                 else
  204.                                         break;
  205.                         }
  206.                         k++;
  207.                         m3 = atol(&szBuffer[k]);
  208.                         while (1)
  209.                         {
  210.                                 if (szBuffer[k] != ' ')
  211.                                         k++;
  212.                                 else
  213.                                         break;
  214.                         }
  215.                         k++;
  216.                         n3 = atol(&szBuffer[k]);
  217.                         while (1)
  218.                         {
  219.                                 if (szBuffer[k] != ' ')
  220.                                         k++;
  221.                                 else
  222.                                         break;
  223.                         }
  224.                         k++;
  225.                         ChangeBlock0 = atol(&szBuffer[k]);
  226.                         while (1)
  227.                         {
  228.                                 if (szBuffer[k] != ' ')
  229.                                         k++;
  230.                                 else
  231.                                         break;
  232.                         }
  233.                         k++;
  234.                         ChangeBlock1 = atol(&szBuffer[k]);
  235.                         while (1)
  236.                         {
  237.                                 if (szBuffer[k] != ' ')
  238.                                         k++;
  239.                                 else
  240.                                         break;
  241.                         }
  242.                         k++;
  243.                         ChangeBlock2 = atol(&szBuffer[k]);
  244.                         while (1)
  245.                         {
  246.                                 if (szBuffer[k] != ' ')
  247.                                         k++;
  248.                                 else
  249.                                         break;
  250.                         }
  251.                         k++;
  252.                         ChangeBlock3 = atol(&szBuffer[k]);
  253.                         while (1)
  254.                         {
  255.                                 if (szBuffer[k] != ' ')
  256.                                         k++;
  257.                                 else
  258.                                         break;
  259.                         }
  260.                         k++;
  261.                         ChangeBlock4 = atol(&szBuffer[k]);
  262.                         while (1)
  263.                         {
  264.                                 if (szBuffer[k] != ' ')
  265.                                         k++;
  266.                                 else
  267.                                         break;
  268.                         }
  269.                         k++;
  270.                         NowBlock = atol(&szBuffer[k]);
  271.                         while (1)
  272.                         {
  273.                                 if (szBuffer[k] != ' ')
  274.                                         k++;
  275.                                 else
  276.                                         break;
  277.                         }
  278.                         k++;
  279.                         id = atol(&szBuffer[k]);
  280.                         while (1)
  281.                         {
  282.                                 if (szBuffer[k] != ' ')
  283.                                         k++;
  284.                                 else
  285.                                         break;
  286.                         }
  287.                         k++;
  288.                         score = atol(&szBuffer[k]);
  289.                 }
  290.                 CloseHandle(hFile);
  291.                 if (id == 40003)
  292.                         SetClassLong(hwnd, GCL_HBRBACKGROUND, (LONG)hWhiteBrush);
  293.                 if (id == 40004)
  294.                 {
  295.                         SetClassLong(hwnd, GCL_HBRBACKGROUND, (LONG)hBlackBrush);
  296.                 }
  297.                 return 0;
  298.         case WM_SIZE:
  299.                 cxClient = LOWORD(lParam);
  300.                 cyClient = HIWORD(lParam);
  301.                 return 0;
  302.         case WM_PAINT:
  303.                 hdc = BeginPaint(hwnd, &ps);
  304.                 SetIsotropic(hdc, cxClient, cyClient);
  305.                 if (id == 40003)
  306.                         SelectObject(hdc, GetStockObject(BLACK_PEN));
  307.                 else
  308.                         SelectObject(hdc, GetStockObject(WHITE_PEN));
  309.                 MoveToEx(hdc, 0, 0, NULL);
  310.                 LineTo(hdc, 0, 221);
  311.                 MoveToEx(hdc, 0, 221, NULL);
  312.                 LineTo(hdc, 111, 221);
  313.                 MoveToEx(hdc, 111, 0, NULL);
  314.                 LineTo(hdc, 111, 221);
  315.                 MoveToEx(hdc, 111, 0, NULL);
  316.                 LineTo(hdc, 0, 0);
  317.                 DrawBlock(hdc);
  318.                 EndPaint(hwnd, &ps);
  319.                 return 0;
  320.         case WM_TIMER:
  321.                 hdc = GetDC(hwnd);
  322.                 SetIsotropic(hdc, cxClient, cyClient);
  323.                 ChangeBlock(hdc, 0);
  324.                 ReleaseDC(hwnd, hdc);
  325.                 return 0;
  326.         case WM_LBUTTONDOWN:
  327.                 SetTimer(hwnd, ID_TIMER, 800, NULL);
  328.                 return 0;
  329.         case WM_RBUTTONDOWN:
  330.                 KillTimer(hwnd, ID_TIMER);
  331.                 return 0;
  332.         case WM_KEYDOWN:
  333.                 hdc = GetDC(hwnd);
  334.                 SetIsotropic(hdc, cxClient, cyClient);
  335.                 switch (LOWORD(wParam))
  336.                 {
  337.                 case VK_ESCAPE:
  338.                         SendMessage(hwnd, WM_CLOSE, 0, 0);
  339.                         break;
  340.                 case VK_UP:
  341.                         ChangeBlock(hdc, 1);
  342.                         break;
  343.                 case VK_DOWN:
  344.                         ChangeBlock(hdc, 0);
  345.                         break;
  346.                 case VK_LEFT:
  347.                         block[m][n].bool = FALSE; block[m1][n1].bool = FALSE; block[m2][n2].bool = FALSE; block[m3][n3].bool = FALSE;
  348.                         if (block[m][n - 1].bool == FALSE && block[m1][n1 - 1].bool == FALSE && block[m2][n2 - 1].bool == FALSE && block[m3][n3 - 1].bool == FALSE)
  349.                         {
  350.                                 n -= 1; n1 -= 1; n2 -= 1; n3 -= 1;
  351.                                 DispatchBlockColor();
  352.                         }
  353.                         block[m][n].bool = TRUE; block[m1][n1].bool = TRUE; block[m2][n2].bool = TRUE; block[m3][n3].bool = TRUE;
  354.                         DrawBlock(hdc);
  355.                         break;
  356.                 case VK_RIGHT:
  357.                         block[m][n].bool = FALSE; block[m1][n1].bool = FALSE; block[m2][n2].bool = FALSE; block[m3][n3].bool = FALSE;
  358.                         if (block[m][n + 1].bool == FALSE && block[m1][n1 + 1].bool == FALSE && block[m2][n2 + 1].bool == FALSE && block[m3][n3 + 1].bool == FALSE)
  359.                         {
  360.                                 n += 1; n1 += 1; n2 += 1; n3 += 1;
  361.                                 DispatchBlockColor();
  362.                         }
  363.                         block[m][n].bool = TRUE; block[m1][n1].bool = TRUE; block[m2][n2].bool = TRUE; block[m3][n3].bool = TRUE;
  364.                         DrawBlock(hdc);
  365.                         break;
  366.                 case VK_SPACE:
  367.                         block[m][n].bool = FALSE; block[m1][n1].bool = FALSE; block[m2][n2].bool = FALSE; block[m3][n3].bool = FALSE;
  368.                         while (1)
  369.                         {
  370.                                 if (block[m - 1][n].bool == FALSE && block[m1 - 1][n1].bool == FALSE && block[m2 - 1][n2].bool == FALSE && block[m3 - 1][n3].bool == FALSE)
  371.                                 {
  372.                                         m -= 1; m1 -= 1; m2 -= 1; m3 -= 1;
  373.                                 }
  374.                                 else
  375.                                         break;
  376.                         }
  377.                         block[m][n].bool = TRUE; block[m1][n1].bool = TRUE; block[m2][n2].bool = TRUE; block[m3][n3].bool = TRUE;
  378.                         DispatchBlockColor();
  379.                         ChangeBlock(hdc, 0);
  380.                         break;
  381.                 }
  382.                 ReleaseDC(hwnd, hdc);
  383.                 return 0;
  384.         case WM_COMMAND:
  385.                 switch (LOWORD(wParam))
  386.                 {
  387.                 case ID_40001:
  388.                         hdc = GetDC(hwnd);
  389.                         SetIsotropic(hdc, cxClient, cyClient);
  390.                         for (i = 1; i <= 20; i++)
  391.                         for (j = 1; j <= 10; j++)
  392.                                 block[i][j].bool = FALSE;
  393.                         SetTimer(hwnd, ID_TIMER, 800, NULL);
  394.                         score = 0;
  395.                         DrawBlock(hdc);
  396.                         ReleaseDC(hwnd, hdc);
  397.                         break;
  398.                 case ID_40003:
  399.                         SetClassLong(hwnd, GCL_HBRBACKGROUND, (LONG)hWhiteBrush);
  400.                         InvalidateRect(hwnd, NULL, TRUE);
  401.                         id_Next = id;
  402.                         id = ID_40003;
  403.                         break;
  404.                 case 40004:
  405.                         SetClassLong(hwnd, GCL_HBRBACKGROUND, (LONG)hBlackBrush);
  406.                         InvalidateRect(hwnd, NULL, TRUE);
  407.                         id_Next = id;
  408.                         id = ID_40004;
  409.                         break;
  410.                 case 40005:
  411.                         SendMessage(hwnd, WM_CLOSE, 0, 0);
  412.                         break;
  413.                 }
  414.                 return 0;
  415.         case WM_MENUSELECT:
  416.                 hMenu = GetMenu(hwnd);
  417.                 CheckMenuItem(hMenu, id_Next, MF_UNCHECKED);
  418.                 CheckMenuItem(hMenu, id, MF_CHECKED);
  419.                 return 0;
  420.         case WM_DESTROY:
  421.                 KillTimer(hwnd, ID_TIMER);
  422.                 DeleteObject(hRedBrush);
  423.                 DeleteObject(hGreenBrush);
  424.                 DeleteObject(hBlueBrush);
  425.                 DeleteObject(hYellowBrush);
  426.                 DeleteObject(hMagentaBrush);
  427.                 DeleteObject(hCyanBrush);

  428.                 /*保存数据*/
  429.                 if (INVALID_HANDLE_VALUE ==
  430.                         (hFile = CreateFile(pstrFileName, GENERIC_WRITE, 0,
  431.                         NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_HIDDEN, NULL)))
  432.                 {
  433.                         return MessageBox(NULL, TEXT("打开文件失败, 无法写入数据"), TEXT("俄罗斯方块"), MB_ICONERROR);
  434.                         PostQuitMessage(0);
  435.                 }
  436.                 k = 0;
  437.                 for (i = 1; i <= 20; i++)
  438.                 for (j = 1; j <= 10; j++)
  439.                 {
  440.                         if (block[i][j].bool == TRUE)
  441.                                 pText[k++] = '1';
  442.                         else
  443.                                 pText[k++] = '0';
  444.                 }
  445.                 pText[k++] = '\n';
  446.                 for (i = 1; i <= 20; i++)
  447.                 for (j = 1; j <= 10; j++)
  448.                 {
  449.                         if (block[i][j].bool == TRUE)
  450.                         {
  451.                                 switch (block[i][j].color)
  452.                                 {
  453.                                 case RED:
  454.                                         pText[k] = '3';
  455.                                         break;
  456.                                 case GREEN:
  457.                                         pText[k] = '4';
  458.                                         break;
  459.                                 case BLUE:
  460.                                         pText[k] = '5';
  461.                                         break;
  462.                                 case YELLOW:
  463.                                         pText[k] = '6';
  464.                                         break;
  465.                                 case MAGENTA:
  466.                                         pText[k] = '7';
  467.                                         break;
  468.                                 case CYAN:
  469.                                         pText[k] = '8';
  470.                                         break;
  471.                                 }
  472.                         }
  473.                         else
  474.                         {
  475.                                 pText[k] = '0';
  476.                         }
  477.                         k++;
  478.                 }
  479.                 pText[k++] = ' ';
  480.                 wsprintfA(&pText[k], "%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d", m, n, m1, n1, m2, n2, m3, n3, ChangeBlock0, ChangeBlock1, ChangeBlock2, ChangeBlock3, ChangeBlock4, NowBlock, id, score);
  481.                 WriteFile(hFile, pText, (402 + lstrlenA(&pText[k])) * sizeof(CHAR), &dwBytesRead, NULL);
  482.                 CloseHandle(hFile);
  483.                 PostQuitMessage(0);
  484.                 return 0;
  485.         }
  486.         return DefWindowProc(hwnd, message, wParam, lParam);
  487. }

  488. VOID SetIsotropic(HDC hdc, int cxClient, int cyClient)
  489. {
  490.         POINT        pt;

  491.         SetMapMode(hdc, MM_ISOTROPIC);
  492.         SetWindowExtEx(hdc, 200, 224, NULL);
  493.         SetViewportExtEx(hdc, cxClient, -cyClient, NULL);

  494.         pt.x = cxClient / 2; pt.y = cyClient / 2;
  495.         DPtoLP(hdc, &pt, 1);
  496.         SetWindowOrgEx(hdc, -pt.x, -pt.y, NULL);
  497.         OffsetWindowOrgEx(hdc, 100, 110, NULL);

  498. }

  499. VOID DrawBlock(HDC hdc)
  500. {
  501.         HBRUSH                hOldBrush;
  502.         int                        i, j;
  503.         POINT                pt[4];
  504.         int                    a1 = FALSE, a2 = FALSE, a3 = FALSE, a4 = FALSE, a5 = FALSE, a6 = FALSE, a7 = FALSE, a8 = FALSE;
  505.         CHAR        szBuffer[20];

  506.         SelectObject(hdc, GetStockObject(NULL_PEN));
  507.         for (i = 1; i <= 20; i++)
  508.         {
  509.                 for (j = 1; j <= 10; j++)
  510.                 {
  511.                         if (block[i][j].bool == TRUE)
  512.                         {
  513.                                 switch (block[i][j].color)
  514.                                 {
  515.                                 case RED:
  516.                                         hOldBrush = SelectObject(hdc, hRedBrush); break;
  517.                                 case GREEN:
  518.                                         hOldBrush = SelectObject(hdc, hGreenBrush); break;
  519.                                 case BLUE:
  520.                                         hOldBrush = SelectObject(hdc, hBlueBrush); break;
  521.                                 case YELLOW:
  522.                                         hOldBrush = SelectObject(hdc, hYellowBrush); break;
  523.                                 case MAGENTA:
  524.                                         hOldBrush = SelectObject(hdc, hMagentaBrush); break;
  525.                                 case CYAN:
  526.                                         hOldBrush = SelectObject(hdc, hCyanBrush); break;
  527.                                 }
  528.                                 pt[0].x = (j - 1) * 10 + j;                        pt[0].y = (i - 1) * 10 + i;
  529.                                 pt[1].x = pt[0].x;                                        pt[1].y = pt[0].y + 10;
  530.                                 pt[2].x = pt[0].x + 10;                                pt[2].y = pt[0].y + 10;
  531.                                 pt[3].x = pt[0].x + 10;                                pt[3].y = pt[0].y;
  532.                                 Polygon(hdc, pt, 4);
  533.                                 SelectObject(hdc, hOldBrush);
  534.                         }
  535.                         else
  536.                         {
  537.                                 if (id == 40003)
  538.                                         hOldBrush = SelectObject(hdc, hWhiteBrush);
  539.                                 if (id == 40004)
  540.                                         hOldBrush = SelectObject(hdc, hBlackBrush);
  541.                                 pt[0].x = (j - 1) * 10 + j;                        pt[0].y = (i - 1) * 10 + i;
  542.                                 pt[1].x = pt[0].x;                                        pt[1].y = pt[0].y + 10;
  543.                                 pt[2].x = pt[0].x + 10;                                pt[2].y = pt[0].y + 10;
  544.                                 pt[3].x = pt[0].x + 10;                                pt[3].y = pt[0].y;
  545.                                 Polygon(hdc, pt, 4);
  546.                                 SelectObject(hdc, hOldBrush);
  547.                         }
  548.                 }
  549.         }
  550.         if (id == 40003)
  551.         {
  552.                 pt[0].x = 120; pt[0].y = 200; pt[1].x = 120; pt[1].y = 179; pt[2].x = 163; pt[2].y = 179; pt[3].x = 163; pt[3].y = 200;
  553.                 hOldBrush = SelectObject(hdc, hWhiteBrush);
  554.                 SelectObject(hdc, GetStockObject(NULL_PEN));
  555.                 Polygon(hdc, &pt, 4);
  556.                 SetTextColor(hdc, RGB(0, 0, 0));
  557.                 SetBkColor(hdc, RGB(255, 255, 255));
  558.         }
  559.         else
  560.         {
  561.                 pt[0].x = 120; pt[0].y = 200; pt[1].x = 120; pt[1].y = 179; pt[2].x = 163; pt[2].y = 179; pt[3].x = 163; pt[3].y = 200;
  562.                 hOldBrush = SelectObject(hdc, hBlackBrush);
  563.                 SelectObject(hdc, GetStockObject(NULL_PEN));
  564.                 Polygon(hdc, &pt, 4);
  565.                 SetTextColor(hdc, RGB(255, 255, 255));
  566.                 SetBkColor(hdc, RGB(0, 0, 0));
  567.         }
  568.         TextOut(hdc, 120, 210, TEXT("NextBlock"), 9);
  569.         TextOut(hdc, 120, 40, TEXT("Score:"), 6);
  570.         wsprintfA(szBuffer, "%d", score);
  571.         TextOutA(hdc, 120, 30, szBuffer, lstrlenA(szBuffer));
  572.         switch (NextBlock)
  573.         {
  574.         case 0:
  575.                 a1 = FALSE; a2 = FALSE; a3 = FALSE; a4 = FALSE; a5 = TRUE; a6 = TRUE; a7 = TRUE; a8 = TRUE;
  576.                 hOldBrush = SelectObject(hdc, hRedBrush);
  577.                 break;
  578.         case 1:
  579.                 a1 = FALSE; a2 = TRUE; a3 = FALSE; a4 = FALSE; a5 = TRUE; a6 = TRUE; a7 = TRUE; a8 = FALSE;
  580.                 hOldBrush = SelectObject(hdc, hGreenBrush);
  581.                 break;
  582.         case 2:
  583.                 a1 = TRUE; a2 = FALSE; a3 = FALSE; a4 = FALSE; a5 = TRUE; a6 = TRUE; a7 = TRUE; a8 = FALSE;
  584.                 hOldBrush = SelectObject(hdc, hBlueBrush);
  585.                 break;
  586.         case 3:
  587.                 a1 = FALSE; a2 = TRUE; a3 = TRUE; a4 = FALSE; a5 = TRUE; a6 = TRUE; a7 = FALSE; a8 = FALSE;
  588.                 hOldBrush = SelectObject(hdc, hYellowBrush);
  589.                 break;
  590.         case 4:
  591.                 a1 = TRUE; a2 = TRUE; a3 = FALSE; a4 = FALSE; a5 = FALSE; a6 = TRUE; a7 = TRUE; a8 = FALSE;
  592.                 hOldBrush = SelectObject(hdc, hMagentaBrush);
  593.                 break;
  594.         case 5:
  595.                 a1 = TRUE; a2 = TRUE; a3 = FALSE; a4 = FALSE; a5 = TRUE; a6 = TRUE; a7 = FALSE; a8 = FALSE;
  596.                 hOldBrush = SelectObject(hdc, hCyanBrush);
  597.                 break;
  598.         }
  599.         if (a1 == TRUE)
  600.         {
  601.                 pt[0].x = 120; pt[0].y = 200; pt[1].x = 120; pt[1].y = 190; pt[2].x = 130; pt[2].y = 190; pt[3].x = 130; pt[3].y = 200;
  602.                 Polygon(hdc, &pt, 4);
  603.         }
  604.         if (a2 == TRUE)
  605.         {
  606.                 pt[0].x = 131; pt[0].y = 200; pt[1].x = 131; pt[1].y = 190; pt[2].x = 141; pt[2].y = 190; pt[3].x = 141; pt[3].y = 200;
  607.                 Polygon(hdc, &pt, 4);
  608.         }
  609.         if (a3 == TRUE)
  610.         {
  611.                 pt[0].x = 142; pt[0].y = 200; pt[1].x = 142; pt[1].y = 190; pt[2].x = 152; pt[2].y = 190; pt[3].x = 152; pt[3].y = 200;
  612.                 Polygon(hdc, &pt, 4);
  613.         }
  614.         if (a4 == TRUE)
  615.         {
  616.                 pt[0].x = 153; pt[0].y = 200; pt[1].x = 153; pt[1].y = 190; pt[2].x = 163; pt[2].y = 190; pt[3].x = 163; pt[3].y = 200;
  617.                 Polygon(hdc, &pt, 4);
  618.         }
  619.         if (a5 == TRUE)
  620.         {
  621.                 pt[0].x = 120; pt[0].y = 189; pt[1].x = 120; pt[1].y = 179; pt[2].x = 130; pt[2].y = 179; pt[3].x = 130; pt[3].y = 189;
  622.                 Polygon(hdc, &pt, 4);
  623.         }
  624.         if (a6 == TRUE)
  625.         {
  626.                 pt[0].x = 131; pt[0].y = 189; pt[1].x = 131; pt[1].y = 179; pt[2].x = 141; pt[2].y = 179; pt[3].x = 141; pt[3].y = 189;
  627.                 Polygon(hdc, &pt, 4);
  628.         }
  629.         if (a7 == TRUE)
  630.         {
  631.                 pt[0].x = 142; pt[0].y = 189; pt[1].x = 142; pt[1].y = 179; pt[2].x = 152; pt[2].y = 179; pt[3].x = 152; pt[3].y = 189;
  632.                 Polygon(hdc, &pt, 4);
  633.         }
  634.         if (a8 == TRUE)
  635.         {
  636.                 pt[0].x = 153; pt[0].y = 189; pt[1].x = 153; pt[1].y = 179; pt[2].x = 163; pt[2].y = 179; pt[3].x = 163; pt[3].y = 189;
  637.                 Polygon(hdc, &pt, 4);
  638.         }
  639. }

  640. VOID DispatchBlock(VOID)
  641. {
  642.         int i;

  643.         NextBlock = rand() % 6;
  644. }

  645. VOID DispatchBlockColor(VOID)
  646. {
  647.         switch (NowBlock)
  648.         {
  649.         case 0:
  650.                 block[m][n].color = RED; block[m1][n1].color = RED; block[m2][n2].color = RED; block[m3][n3].color = RED;
  651.                 break;
  652.         case 1:
  653.                 block[m][n].color = GREEN; block[m1][n1].color = GREEN; block[m2][n2].color = GREEN; block[m3][n3].color = GREEN;
  654.                 break;
  655.         case 2:
  656.                 block[m][n].color = BLUE; block[m1][n1].color = BLUE; block[m2][n2].color = BLUE; block[m3][n3].color = BLUE;
  657.                 break;
  658.         case 3:
  659.                 block[m][n].color = YELLOW; block[m1][n1].color = YELLOW; block[m2][n2].color = YELLOW; block[m3][n3].color = YELLOW;
  660.                 break;
  661.         case 4:
  662.                 block[m][n].color = MAGENTA; block[m1][n1].color = MAGENTA; block[m2][n2].color = MAGENTA; block[m3][n3].color = MAGENTA;
  663.                 break;
  664.         case 5:
  665.                 block[m][n].color = CYAN; block[m1][n1].color = CYAN; block[m2][n2].color = CYAN; block[m3][n3].color = CYAN;
  666.                 break;
  667.         }
  668. }

  669. VOID ChangeBlock(HDC hdc, int q)
  670. {
  671.         VOID ClearupBlock(VOID);

  672.         static int         time = 1;

  673.         if (q == 0)
  674.         {
  675.                 block[m][n].bool = FALSE; block[m1][n1].bool = FALSE; block[m2][n2].bool = FALSE; block[m3][n3].bool = FALSE;
  676.                 if (block[m - 1][n].bool == FALSE && block[m1 - 1][n1].bool == FALSE && block[m2 - 1][n2].bool == FALSE && block[m3 - 1][n3].bool == FALSE)
  677.                 {
  678.                         m -= 1; m1 -= 1; m2 -= 1; m3 -= 1;
  679.                         block[m][n].bool = TRUE; block[m1][n1].bool = TRUE; block[m2][n2].bool = TRUE; block[m3][n3].bool = TRUE;
  680.                         DispatchBlockColor();
  681.                         DrawBlock(hdc);
  682.                         if (time == 1)
  683.                                 DispatchBlock();
  684.                         time = 0;
  685.                 }
  686.                 else
  687.                 {
  688.                         time = 1;
  689.                         ChangeBlock0 = 0; ChangeBlock1 = 0; ChangeBlock2 = 0; ChangeBlock3 = 0; ChangeBlock4 = 0;
  690.                         block[m][n].bool = TRUE; block[m1][n1].bool = TRUE; block[m2][n2].bool = TRUE; block[m3][n3].bool = TRUE;
  691.                         DispatchBlockColor();
  692.                         ClearupBlock();
  693.                         DrawBlock(hdc);
  694.                         NowBlock = NextBlock;
  695.                         switch (NowBlock)
  696.                         {
  697.                         case 0:
  698.                                 m = 21; n = 4; m1 = 21; n1 = 5; m2 = 21; n2 = 6; m3 = 21; n3 = 7;
  699.                                 break;
  700.                         case 1:
  701.                                 m = 21; n = 4; m1 = 21; n1 = 5; m2 = 21; n2 = 6; m3 = 22; n3 = 5;
  702.                                 break;
  703.                         case 2:
  704.                                 m = 22; n = 4; m1 = 21; n1 = 4; m2 = 21; n2 = 5; m3 = 21; n3 = 6;
  705.                                 break;
  706.                         case 3:
  707.                                 m = 21; n = 4; m1 = 21; n1 = 5; m2 = 22; n2 = 5; m3 = 22; n3 = 6;
  708.                                 break;
  709.                         case 4:
  710.                                 m = 22; n = 4; m1 = 22; n1 = 5; m2 = 21; n2 = 5; m3 = 21; n3 = 6;
  711.                                 break;
  712.                         case 5:
  713.                                 m = 21; n = 4; m1 = 22; n1 = 4; m2 = 21; n2 = 5; m3 = 22; n3 = 5;
  714.                                 break;
  715.                         }
  716.                 }
  717.         }
  718.         if (q == 1)
  719.         {
  720.                 switch (NowBlock)
  721.                 {
  722.                 case 0:
  723.                         switch (ChangeBlock0)
  724.                         {
  725.                         case 0:
  726.                                 block[m][n].bool = FALSE; block[m2][n2].bool = FALSE; block[m3][n3].bool = FALSE; block[m1][n1].bool = FALSE;
  727.                                 if (block[m1 - 1][n1].bool == FALSE && block[m1 + 1][n1].bool == FALSE && block[m1 + 2][n1].bool == FALSE)
  728.                                 {
  729.                                         m = m1 - 1; m2 = m1 + 1; m3 = m1 + 2;
  730.                                         n = n2 = n3 = n1;
  731.                                         ChangeBlock0 = 1;
  732.                                 }
  733.                                 block[m][n].bool = TRUE; block[m2][n2].bool = TRUE; block[m3][n3].bool = TRUE; block[m1][n1].bool = TRUE;
  734.                                 DispatchBlockColor();
  735.                                 DrawBlock(hdc);
  736.                                 break;
  737.                         case 1:
  738.                                 block[m][n].bool = FALSE; block[m2][n2].bool = FALSE; block[m3][n3].bool = FALSE; block[m1][n1].bool = FALSE;
  739.                                 if (block[m1][n1 - 1].bool == FALSE && block[m1][n1 + 1].bool == FALSE && block[m1][n1 + 2].bool == FALSE)
  740.                                 {
  741.                                         m = m2 = m3 = m1;
  742.                                         n = n1 - 1; n2 = n1 + 1; n3 = n1 + 2;
  743.                                         ChangeBlock0 = 0;
  744.                                 }
  745.                                 block[m][n].bool = TRUE; block[m2][n2].bool = TRUE; block[m3][n3].bool = TRUE; block[m1][n1].bool = TRUE;
  746.                                 DispatchBlockColor();
  747.                                 DrawBlock(hdc);
  748.                         }
  749.                         break;
  750.                 case 1:
  751.                         switch (ChangeBlock1)
  752.                         {
  753.                         case 0:
  754.                                 block[m][n].bool = FALSE; block[m1][n1].bool = FALSE; block[m2][n2].bool = FALSE; block[m3][n3].bool = FALSE;
  755.                                 if (block[m1 - 1][n1].bool == FALSE)
  756.                                 {
  757.                                         m = m1 - 1; m2 = m1 + 1; m3 = m1;
  758.                                         n = n2 = n1; n3 = n1 + 1;
  759.                                         ChangeBlock1 = 1;
  760.                                 }
  761.                                 block[m][n].bool = TRUE; block[m1][n1].bool = TRUE; block[m2][n2].bool = TRUE; block[m3][n3].bool = TRUE;
  762.                                 DispatchBlockColor();
  763.                                 DrawBlock(hdc);
  764.                                 break;
  765.                         case 1:
  766.                                 block[m][n].bool = FALSE; block[m1][n1].bool = FALSE; block[m2][n2].bool = FALSE; block[m3][n3].bool = FALSE;
  767.                                 if (block[m1][n1 - 1].bool == FALSE)
  768.                                 {
  769.                                         m = m2 = m1; m3 = m1 - 1;
  770.                                         n = n1 - 1; n2 = n1 + 1; n3 = n1;
  771.                                         ChangeBlock1 = 2;
  772.                                 }
  773.                                 block[m][n].bool = TRUE; block[m1][n1].bool = TRUE; block[m2][n2].bool = TRUE; block[m3][n3].bool = TRUE;
  774.                                 DispatchBlockColor();
  775.                                 DrawBlock(hdc);
  776.                                 break;
  777.                         case 2:
  778.                                 block[m][n].bool = FALSE; block[m1][n1].bool = FALSE; block[m2][n2].bool = FALSE; block[m3][n3].bool = FALSE;
  779.                                 if (block[m1 + 1][n1].bool == FALSE)
  780.                                 {
  781.                                         m = m1; m2 = m1 - 1; m3 = m1 + 1;
  782.                                         n = n1 - 1; n2 = n3 = n1;
  783.                                         ChangeBlock1 = 3;
  784.                                 }
  785.                                 block[m][n].bool = TRUE; block[m1][n1].bool = TRUE; block[m2][n2].bool = TRUE; block[m3][n3].bool = TRUE;
  786.                                 DispatchBlockColor();
  787.                                 DrawBlock(hdc);
  788.                                 break;
  789.                         case 3:
  790.                                 block[m][n].bool = FALSE; block[m1][n1].bool = FALSE; block[m2][n2].bool = FALSE; block[m3][n3].bool = FALSE;
  791.                                 if (block[m1][n1 + 1].bool == FALSE)
  792.                                 {
  793.                                         m = m2 = m1; m3 = m1 + 1;
  794.                                         n = n1 - 1; n2 = n1 + 1; n3 = n1;
  795.                                         ChangeBlock1 = 0;
  796.                                 }
  797.                                 block[m][n].bool = TRUE; block[m1][n1].bool = TRUE; block[m2][n2].bool = TRUE; block[m3][n3].bool = TRUE;
  798.                                 DispatchBlockColor();
  799.                                 DrawBlock(hdc);
  800.                                 break;
  801.                         }
  802.                         break;
  803.                 case 2:
  804.                         switch (ChangeBlock2)
  805.                         {
  806.                         case 0:
  807.                                 block[m][n].bool = FALSE; block[m1][n1].bool = FALSE; block[m2][n2].bool = FALSE; block[m3][n3].bool = FALSE;
  808.                                 if (block[m1 - 1][n1].bool == FALSE && block[m1 - 2][n1].bool == FALSE)
  809.                                 {
  810.                                         m = m1; n = n1 + 1;
  811.                                         m2 = m1 - 1; n2 = n1;
  812.                                         m3 = m1 - 2; n3 = n1;
  813.                                         ChangeBlock2 = 1;
  814.                                 }
  815.                                 block[m][n].bool = TRUE; block[m1][n1].bool = TRUE; block[m2][n2].bool = TRUE; block[m3][n3].bool = TRUE;
  816.                                 DispatchBlockColor();
  817.                                 DrawBlock(hdc);
  818.                                 break;
  819.                         case 1:
  820.                                 block[m][n].bool = FALSE; block[m1][n1].bool = FALSE; block[m2][n2].bool = FALSE; block[m3][n3].bool = FALSE;
  821.                                 if (block[m1][n1 - 1].bool == FALSE && block[m1][n1 - 2].bool == FALSE && n1 - 2 >= 1)
  822.                                 {
  823.                                         m = m1 - 1; n = n1;
  824.                                         m2 = m1; n2 = n1 - 1;
  825.                                         m3 = m1; n3 = n1 - 2;
  826.                                         ChangeBlock2 = 2;
  827.                                 }
  828.                                 block[m][n].bool = TRUE; block[m1][n1].bool = TRUE; block[m2][n2].bool = TRUE; block[m3][n3].bool = TRUE;
  829.                                 DispatchBlockColor();
  830.                                 DrawBlock(hdc);
  831.                                 break;
  832.                         case 2:
  833.                                 block[m][n].bool = FALSE; block[m1][n1].bool = FALSE; block[m2][n2].bool = FALSE; block[m3][n3].bool = FALSE;
  834.                                 if (block[m1 + 1][n1].bool == FALSE && block[m1 + 2][n1].bool == FALSE)
  835.                                 {
  836.                                         m = m1; n = n1 - 1;
  837.                                         m2 = m1 + 1; n2 = n1;
  838.                                         m3 = m1 + 2; n3 = n1;
  839.                                         ChangeBlock2 = 3;
  840.                                 }
  841.                                 block[m][n].bool = TRUE; block[m1][n1].bool = TRUE; block[m2][n2].bool = TRUE; block[m3][n3].bool = TRUE;
  842.                                 DispatchBlockColor();
  843.                                 DrawBlock(hdc);
  844.                                 break;
  845.                         case 3:
  846.                                 block[m][n].bool = FALSE; block[m1][n1].bool = FALSE; block[m2][n2].bool = FALSE; block[m3][n3].bool = FALSE;
  847.                                 if (block[m1][n1 + 1].bool == FALSE && block[m1][n1 + 2].bool == FALSE && n1 + 2 <= 10)
  848.                                 {
  849.                                         m = m1 + 1; n = n1;
  850.                                         m2 = m1; n2 = n1 + 1;
  851.                                         m3 = m1; n3 = n1 + 2;
  852.                                         ChangeBlock2 = 0;
  853.                                 }
  854.                                 block[m][n].bool = TRUE; block[m1][n1].bool = TRUE; block[m2][n2].bool = TRUE; block[m3][n3].bool = TRUE;
  855.                                 DispatchBlockColor();
  856.                                 DrawBlock(hdc);
  857.                                 break;
  858.                         }
  859.                         break;
  860.                 case 3:
  861.                         switch (ChangeBlock3)
  862.                         {
  863.                         case 0:
  864.                                 block[m][n].bool = FALSE; block[m1][n1].bool = FALSE; block[m2][n2].bool = FALSE; block[m3][n3].bool = FALSE;
  865.                                 if (block[m1][n1 + 1].bool == FALSE && block[m1 - 1][n1 + 1].bool == FALSE)
  866.                                 {
  867.                                         m = m1 + 1; n = n1;
  868.                                         m2 = m1; n2 = n1 + 1;
  869.                                         m3 = m1 - 1; n3 = n1 + 1;
  870.                                         ChangeBlock3 = 1;
  871.                                 }
  872.                                 block[m][n].bool = TRUE; block[m1][n1].bool = TRUE; block[m2][n2].bool = TRUE; block[m3][n3].bool = TRUE;
  873.                                 DispatchBlockColor();
  874.                                 DrawBlock(hdc);
  875.                                 break;
  876.                         case 1:
  877.                                 block[m][n].bool = FALSE; block[m1][n1].bool = FALSE; block[m2][n2].bool = FALSE; block[m3][n3].bool = FALSE;
  878.                                 if (block[m1][n1 - 1].bool == FALSE && block[m1 + 1][n1 + 1].bool == FALSE)
  879.                                 {
  880.                                         m = m1; n = n1 - 1;
  881.                                         m2 = m1 + 1; n2 = n1;
  882.                                         m3 = m1 + 1; n3 = n1 + 1;
  883.                                         ChangeBlock3 = 0;
  884.                                 }
  885.                                 block[m][n].bool = TRUE; block[m1][n1].bool = TRUE; block[m2][n2].bool = TRUE; block[m3][n3].bool = TRUE;
  886.                                 DispatchBlockColor();
  887.                                 DrawBlock(hdc);
  888.                                 break;
  889.                         }
  890.                         break;
  891.                 case 4:
  892.                         switch (ChangeBlock4)
  893.                         {
  894.                         case 0:
  895.                                 block[m][n].bool = FALSE; block[m1][n1].bool = FALSE; block[m2][n2].bool = FALSE; block[m3][n3].bool = FALSE;
  896.                                 if (block[m2 - 1][n2].bool == FALSE && block[m2 + 1][n2 + 1].bool == FALSE)
  897.                                 {
  898.                                         m = m2 - 1; n = n2;
  899.                                         m1 = m2; n1 = n2 + 1;
  900.                                         m3 = m2 + 1; n3 = n2 + 1;
  901.                                         ChangeBlock4 = 1;
  902.                                 }
  903.                                 block[m][n].bool = TRUE; block[m1][n1].bool = TRUE; block[m2][n2].bool = TRUE; block[m3][n3].bool = TRUE;
  904.                                 DispatchBlockColor();
  905.                                 DrawBlock(hdc);
  906.                                 break;
  907.                         case 1:
  908.                                 block[m][n].bool = FALSE; block[m1][n1].bool = FALSE; block[m2][n2].bool = FALSE; block[m3][n3].bool = FALSE;
  909.                                 if (block[m2 + 1][n2].bool == FALSE && block[m2 + 1][n2 - 1].bool == FALSE)
  910.                                 {
  911.                                         m = m2 + 1; n = n2 - 1;
  912.                                         m1 = m2 + 1; n1 = n2;
  913.                                         m3 = m2; n3 = n2 + 1;
  914.                                         ChangeBlock4 = 0;
  915.                                 }
  916.                                 block[m][n].bool = TRUE; block[m1][n1].bool = TRUE; block[m2][n2].bool = TRUE; block[m3][n3].bool = TRUE;
  917.                                 DispatchBlockColor();
  918.                                 DrawBlock(hdc);
  919.                                 break;
  920.                         }
  921.                         break;
  922.                 }
  923.         }
  924. }

  925. VOID ClearupBlock(VOID)
  926. {
  927.         int                i, j, k = 0;
  928.         int                p, q;

  929.         for (i = 1; i <= 20; i++)
  930.         {
  931.                 k = 0;
  932.                 for (j = 1; j <= 10; j++)
  933.                 {
  934.                         if (block[i][j].bool == TRUE)
  935.                                 k++;
  936.                         else
  937.                                 break;
  938.                 }
  939.                 if (k == 10)
  940.                 {
  941.                         for (p = i; p <= 20; p++)
  942.                         for (q = 1; q <= 10; q++)
  943.                                 block[p][q] = block[p + 1][q];
  944.                         score += 100;

  945.                 }
  946.                 k = 0;
  947.                 for (j = 1; j <= 10; j++)
  948.                 {
  949.                         if (block[i][j].bool == TRUE)
  950.                                 k++;
  951.                         else
  952.                                 break;
  953.                 }
  954.                 if (k == 10)
  955.                 {
  956.                         for (p = i; p <= 20; p++)
  957.                         for (q = 1; q <= 10; q++)
  958.                                 block[p][q] = block[p + 1][q];
  959.                         score += 100;
  960.                 }
  961.                 k = 0;
  962.                 for (j = 1; j <= 10; j++)
  963.                 {
  964.                         if (block[i][j].bool == TRUE)
  965.                                 k++;
  966.                         else
  967.                                 break;
  968.                 }
  969.                 if (k == 10)
  970.                 {
  971.                         for (p = i; p <= 20; p++)
  972.                         for (q = 1; q <= 10; q++)
  973.                                 block[p][q] = block[p + 1][q];
  974.                         score += 100;
  975.                 }
  976.                 k = 0;
  977.                 for (j = 1; j <= 10; j++)
  978.                 {
  979.                         if (block[i][j].bool == TRUE)
  980.                                 k++;
  981.                         else
  982.                                 break;
  983.                 }
  984.                 if (k == 10)
  985.                 {
  986.                         for (p = i; p <= 20; p++)
  987.                         for (q = 1; q <= 10; q++)
  988.                                 block[p][q] = block[p + 1][q];
  989.                         score += 100;
  990.                 }
  991.         }
  992. }
复制代码
QQ截图20160315211954.png

评分

参与人数 3荣誉 +20 鱼币 +20 贡献 +7 收起 理由
无符号整形 + 5 + 5 + 5
freeparty + 10 + 10 感谢楼主无私奉献!
曹岂源 + 5 + 5 + 2 这个用什么编译,VC6.0Cannot open include.

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-3-15 22:33:17 | 显示全部楼层
我只是想看看是用什么写的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-3-15 22:46:01 | 显示全部楼层
看看,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-3-15 23:42:16 | 显示全部楼层
奋斗丶小Z 发表于 2016-3-15 22:33
我只是想看看是用什么写的

C语言写的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-3-16 08:31:26 | 显示全部楼层
学习怎么写出来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-3-16 09:07:10 | 显示全部楼层
看下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-3-16 09:35:53 | 显示全部楼层
看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-3-16 09:53:46 | 显示全部楼层
支持一下!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-3-16 17:49:08 | 显示全部楼层
厉害
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-3-16 17:49:52 | 显示全部楼层
厉害
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-3-16 19:10:05 | 显示全部楼层
看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-3-16 21:12:07 | 显示全部楼层

学习怎么写出来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-3-16 21:13:46 | 显示全部楼层
学习怎么写出来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-3-16 21:15:05 | 显示全部楼层
我只是想看看是用什么写的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-3-16 22:30:42 | 显示全部楼层
看看先
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-3-16 22:33:25 | 显示全部楼层
看看先
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-3-17 00:48:24 | 显示全部楼层
飘过
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-3-17 06:59:49 | 显示全部楼层
不错,学习下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-3-17 07:46:41 | 显示全部楼层
学习怎么写出来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-3-17 09:34:59 | 显示全部楼层
到底是个啥东西 我看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-18 19:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表