Advertisement
Mihao

Puzzle 16

Nov 30th, 2016
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.05 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include <Windows.h>
  3. #include "stdio.h"
  4. #include <ctime>
  5. #include <cstdlib>
  6. #include <algorithm>
  7. #include <iostream>
  8.  
  9. TCHAR Class_Name[] = TEXT("OKNO_TEST");
  10. MSG Komunikat;
  11. int zmienna = 0;
  12. char ilosc[128];
  13. HINSTANCE *hInst;
  14.  
  15. HWND przyciski[4][4];
  16. int tablica[15];
  17.  
  18. int r_a, r_b, r_c, r_d;
  19.  
  20. char a[3];
  21. char b[3];
  22. char c[3];
  23. char d[3];
  24.  
  25. char klikniety_button[3];
  26. char pusto[3] = "  ";
  27.  
  28.  
  29. void sprawdz(int x, int y) { //2 3
  30.  
  31.  
  32.     GetWindowTextA(przyciski[x][y], klikniety_button, 3);
  33.  
  34.     strcpy_s(a, klikniety_button);
  35.     strcpy_s(b, klikniety_button);
  36.     strcpy_s(c, klikniety_button);
  37.     strcpy_s(d, klikniety_button);
  38.  
  39.     if( x > 0)  GetWindowTextA(przyciski[x-1][y], a, 3); // nad
  40.     if (x < 3)  GetWindowTextA(przyciski[x+1][y], b, 3); // pod
  41.     if (y < 3)  GetWindowTextA(przyciski[x][y+1], c, 3); //prawo
  42.     if (y > 0)  GetWindowTextA(przyciski[x][y-1], d, 3); // lewo
  43.    
  44.     if (strcmp(a,pusto) == 0)
  45.     {
  46.         SetWindowTextA(przyciski[x-1][y], klikniety_button);
  47.         SetWindowTextA(przyciski[x][y], pusto);
  48.     }
  49.    
  50.     if (strcmp(b, pusto) == 0)
  51.     {      
  52.         SetWindowTextA(przyciski[x + 1][y], klikniety_button);
  53.         SetWindowTextA(przyciski[x][y], pusto);
  54.     }
  55.     if (strcmp(c, pusto) == 0)
  56.     {
  57.         SetWindowTextA(przyciski[x][y+1], klikniety_button);
  58.         SetWindowTextA(przyciski[x][y], pusto);
  59.     }
  60.     if (strcmp(d, pusto) == 0)
  61.     {
  62.         SetWindowTextA(przyciski[x ][y-1], klikniety_button);
  63.         SetWindowTextA(przyciski[x][y], pusto);
  64.     }
  65. };
  66.  
  67. LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
  68. {
  69.    
  70.     srand(time(0));
  71.  
  72.     switch (msg) {
  73.     case WM_CREATE:
  74.     {
  75.         for (int k = 0; k < 16; k++)
  76.         {
  77.             tablica[k] = k + 1;
  78.         }
  79.  
  80.         for (int k = 0; k < 16; k++)
  81.         {
  82.         //  r_a = rand() % 15;
  83.         //  r_b = rand() % 15;
  84.         //  r_c = rand() % 15;
  85.         //  r_d = rand() % 15;
  86.  
  87.             if (tablica)
  88.             std::swap(tablica[rand() % 15], tablica[rand() % 15]);
  89.         }
  90.        
  91.  
  92.  
  93.         int count = 0;
  94.         for (int i = 0; i < 4; i++)
  95.         {
  96.             for (int j = 0; j < 4; j++)
  97.             {
  98.                 przyciski[i][j] = CreateWindowEx(WS_EX_CLIENTEDGE, TEXT("BUTTON"), TEXT("Pierwszy"), WS_CHILD | WS_VISIBLE | WS_BORDER, 20 + j * 65, 20 + i * 65, 60, 60, hwnd, (HMENU)count, *hInst, NULL);
  99.                 if (tablica[count] > 0 && tablica[count] < 16)
  100.                     sprintf_s(ilosc, "%d", tablica[count]);
  101.                 else
  102.                     sprintf_s(ilosc, "  ");
  103.  
  104.                 SetWindowTextA(przyciski[i][j], ilosc);
  105.                 count++;
  106.             }
  107.  
  108.         }
  109.  
  110.     }
  111.     case WM_LBUTTONDOWN:
  112.         zmienna++;
  113.         sprintf_s(ilosc, "%d", zmienna);
  114.         SetWindowTextA(hwnd, ilosc);
  115.         break;
  116.     case WM_CLOSE:
  117.         if ((MessageBox(hwnd, TEXT("Czy chcesz wyłączyć okno ?"), TEXT("Pytanie"), MB_OKCANCEL)) == IDOK)
  118.             DestroyWindow(hwnd);
  119.         else break;
  120.  
  121.     case WM_COMMAND:
  122.     {
  123.         if ((HWND)lParam == przyciski[0][0]) {
  124.             sprawdz(0, 0);
  125.         }
  126.    
  127.     if ((HWND)lParam == przyciski[0][1]) {
  128.         sprawdz(0, 1);
  129.     }
  130.     if ((HWND)lParam == przyciski[0][2]) {
  131.         sprawdz(0, 2);
  132.     }
  133.     if ((HWND)lParam == przyciski[0][3]) {
  134.         sprawdz(0, 3);
  135.     }
  136.     if ((HWND)lParam == przyciski[1][0]) {
  137.         sprawdz(1, 0);
  138.     }
  139.     if ((HWND)lParam == przyciski[1][1]) {
  140.         sprawdz(1, 1);
  141.     }
  142.     if ((HWND)lParam == przyciski[1][2]) {
  143.         sprawdz(1, 2);
  144.     }
  145.     if ((HWND)lParam == przyciski[1][3]) {
  146.         sprawdz(1, 3);
  147.     }
  148.     if ((HWND)lParam == przyciski[2][0]) {
  149.         sprawdz(2, 0);
  150.     }
  151.     if ((HWND)lParam == przyciski[2][1]) {
  152.         sprawdz(2, 1);
  153.     }
  154.     if ((HWND)lParam == przyciski[2][2]) {
  155.         sprawdz(2, 2);
  156.     }
  157.     if ((HWND)lParam == przyciski[2][3]) {
  158.         sprawdz(2, 3);
  159.     }
  160.     if ((HWND)lParam == przyciski[3][0]) {
  161.         sprawdz(3, 0);
  162.     }
  163.     if ((HWND)lParam == przyciski[3][1]) {
  164.         sprawdz(3, 1);
  165.     }
  166.     if ((HWND)lParam == przyciski[3][2]) {
  167.         sprawdz(3, 2);
  168.     }
  169.     if ((HWND)lParam == przyciski[3][3]) {
  170.         sprawdz(3, 3);
  171.     }
  172.     break;
  173.     }
  174.     case WM_DESTROY:
  175.         PostQuitMessage(0);
  176.         break;
  177.     default:
  178.         return DefWindowProcW(hwnd, msg, wParam, lParam);
  179.     }
  180.     return 0;
  181. }
  182.  
  183. int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
  184. {
  185.     hInst = &hInstance;
  186.     WNDCLASSEX window;
  187.     window.cbClsExtra = NULL;
  188.     window.cbSize = sizeof(WNDCLASSEX);
  189.     window.cbWndExtra = NULL;
  190.     window.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
  191.     window.hCursor = LoadCursor(*hInst, IDC_ARROW);
  192.     window.hIcon = LoadIcon(*hInst, IDI_APPLICATION);
  193.     window.hIconSm = NULL;
  194.     window.hInstance = *hInst;
  195.     window.lpfnWndProc = WndProc;
  196.     window.lpszClassName = Class_Name;
  197.     window.lpszMenuName = 0;
  198.     window.style = NULL;
  199.  
  200.     if (!RegisterClassEx(&window)) {
  201.         MessageBox(NULL, TEXT("Zarejestrowanie klasy nieudane! =("), TEXT("WARNING"), MB_OK | MB_ICONWARNING);
  202.         return 1;
  203.     }
  204.  
  205.     HWND okno1, okno2;
  206.     okno1 = CreateWindowEx(WS_EX_WINDOWEDGE, Class_Name, TEXT("Okno 1"), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 400, 400, NULL, NULL, *hInst, NULL);
  207.  
  208.     if (okno1 == NULL) {
  209.         MessageBox(NULL, TEXT("Stworzenie okna nieudane! =("), TEXT("WARNING"), MB_OK | MB_ICONWARNING);
  210.         return 2;
  211.     }
  212.  
  213.     ShowWindow(okno1, nCmdShow);
  214.     UpdateWindow(okno1);
  215.  
  216.     while (GetMessage(&Komunikat, NULL, 0, 0)) {
  217.  
  218.         TranslateMessage(&Komunikat);
  219.         DispatchMessage(&Komunikat);
  220.     }
  221.     UnregisterClass(Class_Name, *hInst);
  222.     return Komunikat.wParam;
  223. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement