Advertisement
Mihao

Pong

Jan 18th, 2017
196
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.78 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include <Windows.h>
  3. #include "stdio.h"
  4.  
  5. TCHAR Class_Name[] = TEXT("OKNO_TEST");
  6. MSG Komunikat;
  7. int zmienna = 0;
  8. char ilosc[128];
  9. HINSTANCE *hInst;
  10. HWND okno1;
  11.  
  12. const WORD ID_TIMER = 1;
  13.  
  14. RECT Kula, Old, OldA,OldB;
  15. WORD KulkaX = 100, KulkaY = 100;
  16. POINT wps;
  17.  
  18. RECT WymiaryOkna;
  19.  
  20. RECT A, B;
  21.  
  22. bool LeciPrawo = true;
  23. bool wDol = true;
  24.  
  25. HBRUSH brush_gracz, brush_kulka;
  26. HPEN pen_gracz, pen_pilka;
  27. RECT start;
  28.  
  29.  
  30. void RysujKulke()
  31. {
  32.     // wylicz nowe parametry kulki
  33.     //  if (KulkaX <= 0 || KulkaX >= ptOkno.x) SpeedX = -SpeedX;
  34.  
  35.     //if (KulkaY <= 0 || KulkaY >= ptOkno.y) SpeedY = -SpeedY;
  36.  
  37.     //KulkaX += SpeedX;
  38.     //  KulkaY += SpeedY;
  39.     // narysuj na nowej pozycji
  40.     HDC hdc = GetDC(okno1);
  41.     //  BitBlt(hdc, KulkaX, KulkaY, bmKulka.bmWidth, bmKulka.bmHeight, hdcMem, 0, 0, SRCCOPY);
  42.     //Ellipse(hdc, Kula.left, 60, 40, 40);
  43.    
  44.  
  45.  
  46.  
  47.     FillRect(hdc, &WymiaryOkna, (HBRUSH)GetStockObject(COLOR_WINDOW + 1));
  48.     FillRect(hdc, &OldA, (HBRUSH)GetStockObject(COLOR_WINDOW + 1));
  49.     FillRect(hdc, &Old, (HBRUSH)GetStockObject(COLOR_WINDOW + 1));
  50.  
  51.     SelectObject(hdc, brush_kulka);
  52.     SelectObject(hdc, pen_pilka);
  53.     Ellipse(hdc, Kula.left, Kula.top, Kula.right, Kula.bottom);
  54.    
  55.     SelectObject(hdc, brush_gracz);
  56.     SelectObject(hdc, pen_gracz);
  57.     Rectangle(hdc, A.left, A.top, A.right, A.bottom);
  58.     Rectangle(hdc, B.left, B.top, B.right, B.bottom);
  59.     //Ellipse(hdc, 100, 100, 120, 120);
  60. //  Ellipse(hdc, 120, 60, 40, 40);
  61.  
  62.     ReleaseDC(okno1, hdc);
  63. }
  64.  
  65. LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
  66. {
  67.     GetClientRect(hwnd, &WymiaryOkna);
  68.  
  69.  
  70.     switch (msg) {
  71.     case WM_CREATE:
  72.     {
  73.         SetTimer(hwnd, 1, 16, NULL);
  74.        
  75.         Kula.left = 490;//30
  76.         Kula.top = 200;//30
  77.         Kula.right = 510;//10
  78.         Kula.bottom = 220;//10
  79.         wps.x = 50;
  80.         wps.y = 60;
  81.        
  82.         A.left = 10;
  83.         A.top = 210;
  84.         A.right = 30;
  85.         A.bottom = 290;
  86.  
  87.         B.left = 950;
  88.         B.top = 210;
  89.         B.right = 970;
  90.         B.bottom = 290;
  91.  
  92.         start = Kula;
  93.  
  94.         brush_gracz = CreateSolidBrush(RGB(255, 128, 36));
  95.         brush_kulka = CreateSolidBrush(RGB(255, 0, 0));
  96.         pen_gracz = CreatePen(PS_SOLID, 3, RGB(0, 20, 222));
  97.         pen_pilka = CreatePen(PS_SOLID, 3, RGB(0, 20, 222));
  98.    
  99.     }
  100.     break;
  101.     case WM_TIMER:
  102.         Old = Kula;
  103.  
  104.  
  105.         /////////////////////////////////////////////////
  106.         if (wDol == true && LeciPrawo == true)
  107.         {
  108.             Kula.left += 8;
  109.             Kula.top -= 4;
  110.             Kula.right += 8;
  111.             Kula.bottom -= 4;
  112.             if (Kula.top < WymiaryOkna.top+50)
  113.             {
  114.                 wDol = false;
  115.             }
  116.             if (Kula.right > B.left)
  117.             {
  118.                 if (!(Kula.top > B.top && Kula.bottom < B.bottom) )
  119.                 {
  120.                     LeciPrawo = false;
  121.                     wDol = rand() % 2;
  122.                     Kula = start;
  123.                 }
  124.                 else
  125.                 {
  126.  
  127.                     LeciPrawo = false;
  128.                     wDol = rand() % 2;
  129.                 }
  130.             }
  131.         }
  132.         ////////////////////////////////////////////////
  133.         if (wDol == false && LeciPrawo == true)
  134.         {
  135.             Kula.left += 8;
  136.             Kula.top += 4;
  137.             Kula.right += 8;
  138.             Kula.bottom += 4;
  139.  
  140.             if (Kula.bottom > WymiaryOkna.bottom -30)
  141.             {
  142.                 wDol = true;
  143.             }
  144.             if (Kula.right > B.left)
  145.             {
  146.                 if (!(Kula.top > B.top && Kula.bottom < B.bottom))
  147.                 {
  148.                     LeciPrawo = false;
  149.                     wDol = rand() % 2;
  150.                     Kula = start;
  151.                 }
  152.                 else
  153.                 {
  154.                     LeciPrawo = false;
  155.                     wDol = rand() % 2;
  156.                 }
  157.             }
  158.         }
  159.     ///////////////////////////////////////////////
  160.         if (wDol == true && LeciPrawo == false)
  161.         {
  162.             Kula.left -= 8;
  163.             Kula.top += 4;
  164.             Kula.right -= 8;
  165.             Kula.bottom += 4;
  166.  
  167.             if (Kula.bottom > WymiaryOkna.bottom-50)
  168.             {
  169.                 wDol = false;
  170.             }
  171.  
  172.             if (Kula.right < A.right)
  173.             {
  174.                 if (!(Kula.top > A.top && Kula.bottom < A.bottom))
  175.                 {
  176.                     LeciPrawo = true;
  177.                     wDol = rand() % 2;
  178.                     Kula = start;
  179.                 }
  180.                 else
  181.                 {
  182.  
  183.                     LeciPrawo = true;
  184.                     wDol = rand() % 2;
  185.                 }
  186.  
  187. /*
  188. static char buff[50];
  189. wsprintfA(buff, "Przeciwnik ma %d żyć", przeciwnik.hp);
  190. SetWindowTextA(hwnd, buff);
  191.  
  192.  
  193.  
  194.  
  195.                 LeciPrawo = true;
  196.                 wDol = rand() % 2;*/
  197.             }
  198.         }
  199.         /////////////////////////////////////////////
  200.         if (wDol == false && LeciPrawo == false)
  201.         {
  202.             Kula.left -= 8;
  203.             Kula.top -= 4;
  204.             Kula.right -= 8;
  205.             Kula.bottom -= 4;
  206.        
  207.             if (Kula.top < WymiaryOkna.top + 50)
  208.             {
  209.                 wDol = true;
  210.             }
  211.  
  212.             if (Kula.right < A.right)
  213.             {
  214.                 if (!(Kula.top > A.top && Kula.bottom < A.bottom))
  215.                 {
  216.                     LeciPrawo = true;
  217.                     wDol = rand() % 2;
  218.                     Kula = start;
  219.                 }
  220.                 else
  221.                 {
  222.  
  223.                     LeciPrawo = true;
  224.                     wDol = rand() % 2;
  225.                 }
  226.  
  227.  
  228.                 /*
  229.  
  230.                 LeciPrawo = true;
  231.                 wDol = rand() % 2;*/
  232.             }
  233.         }
  234.  
  235.         RysujKulke();
  236.  
  237.         if (GetAsyncKeyState(VK_NUMPAD4)) {             // gracz a do gory
  238.             if (A.top > 0)
  239.             {
  240.                 OldA = A;
  241.                 A.top -= 8;
  242.                 A.bottom -= 8;
  243.             }
  244.  
  245.         }
  246.         if (GetAsyncKeyState(VK_NUMPAD1)) {             // gracz a do dół
  247.             if (A.bottom < 465)
  248.             {
  249.                 OldA = A;
  250.                 A.top += 8;
  251.                 A.bottom += 8;
  252.             }
  253.         }
  254.  
  255.         if (GetAsyncKeyState(VK_NUMPAD6)) {             // gracz B do gory
  256.             if (B.top > 0)
  257.             {
  258.                 OldB = B;
  259.                 B.top -= 8;
  260.                 B.bottom -= 8;
  261.             }
  262.         }
  263.         if (GetAsyncKeyState(VK_NUMPAD3)) {             // gracz B do dół
  264.             if (B.bottom < 465)
  265.             {
  266.                 OldB = B;
  267.                 B.top += 8;
  268.                 B.bottom += 8;
  269.             }
  270.        
  271.         }
  272.  
  273.  
  274.         break;
  275.     case WM_LBUTTONDOWN:
  276.         zmienna++;
  277.         sprintf_s(ilosc, "%d", zmienna);
  278.         SetWindowTextA(hwnd, ilosc);
  279.         break;
  280.     case WM_CLOSE:
  281.         if ((MessageBox(hwnd, TEXT("Czy chcesz wyłączyć okno ?"), TEXT("Pytanie"), MB_OKCANCEL)) == IDOK)
  282.             DestroyWindow(hwnd);
  283.         else break;
  284.     case WM_DESTROY:
  285.         KillTimer(hwnd, ID_TIMER);
  286.         PostQuitMessage(0);
  287.         break;
  288.     default:
  289.         return DefWindowProcW(hwnd, msg, wParam, lParam);
  290.     }
  291.     return 0;
  292. }
  293.  
  294.  
  295.  
  296.  
  297.  
  298.  
  299.  
  300. int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
  301. {
  302.     hInst = &hInstance;
  303.     WNDCLASSEX window;
  304.     window.cbClsExtra = NULL;
  305.     window.cbSize = sizeof(WNDCLASSEX);
  306.     window.cbWndExtra = NULL;
  307.     window.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
  308.     window.hCursor = LoadCursor(*hInst, IDC_ARROW);
  309.     window.hIcon = LoadIcon(*hInst, IDI_APPLICATION);
  310.     window.hIconSm = NULL;
  311.     window.hInstance = *hInst;
  312.     window.lpfnWndProc = WndProc;
  313.     window.lpszClassName = Class_Name;
  314.     window.lpszMenuName = 0;
  315.     window.style = NULL;
  316.  
  317.     if (!RegisterClassEx(&window)) {
  318.         MessageBox(NULL, TEXT("Zarejestrowanie klasy nieudane! =("), TEXT("WARNING"), MB_OK | MB_ICONWARNING);
  319.         return 1;
  320.     }
  321.  
  322.  
  323.     okno1 = CreateWindowEx(WS_EX_WINDOWEDGE, Class_Name, TEXT("Okno 1"), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 1000, 500, NULL, NULL, *hInst, NULL);
  324.  
  325.     if (okno1 == NULL) {
  326.         MessageBox(NULL, TEXT("Stworzenie okna nieudane! =("), TEXT("WARNING"), MB_OK | MB_ICONWARNING);
  327.         return 2;
  328.     }
  329.  
  330.     ShowWindow(okno1, nCmdShow);
  331.     UpdateWindow(okno1);
  332.  
  333.     while (GetMessage(&Komunikat, NULL, 0, 0)) {
  334.  
  335.         TranslateMessage(&Komunikat);
  336.         DispatchMessage(&Komunikat);
  337.     }
  338.     UnregisterClass(Class_Name, *hInst);
  339.     return Komunikat.wParam;
  340. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement