Advertisement
Guest User

statek1

a guest
Dec 18th, 2017
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.12 KB | None | 0 0
  1. #include <Windows.h>
  2. #include "resource.h"
  3. #include <ctime>
  4.  
  5. struct Statek {
  6. POINT wsp;
  7. bool pocisk;
  8. int naboje;
  9. int hp;
  10. HBITMAP statek;
  11. HBITMAP statekMaska;
  12. };
  13. struct Pocisk {
  14. POINT wsp;
  15. HICON pocisk;
  16. };
  17. void RysujStatek(HDC hdc, Statek statek) {
  18. HDC hdcMem = CreateCompatibleDC(hdc);
  19. SelectObject(hdcMem, statek.statekMaska);
  20. BitBlt(hdc, statek.wsp.x, statek.wsp.y, 55, 60, hdcMem, 0, 0, SRCAND);
  21. SelectObject(hdcMem, statek.statek);
  22. BitBlt(hdc, statek.wsp.x, statek.wsp.y, 55, 60, hdcMem, 0, 0, SRCPAINT);
  23. DeleteDC(hdcMem);
  24. }
  25. void RysujPocisk(HDC hdc, Pocisk pocisk) {
  26. HDC hdcMem = CreateCompatibleDC(hdc);
  27. DrawIcon(hdcMem, pocisk.wsp.x, pocisk.wsp.y, pocisk.pocisk);
  28. DeleteDC(hdcMem);
  29. }
  30.  
  31. LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) {
  32. srand(time(NULL));
  33. static Statek gracz;
  34. static Statek przeciwnik;
  35. static Pocisk pocisk;
  36. static HDC hdcMem;
  37. static HBITMAP hbmMem;
  38. static HBRUSH brush;
  39. static PAINTSTRUCT ps;
  40. static HBITMAP tlo;
  41. static RECT r;
  42. static bool kierunek;
  43. static bool flaga;
  44. static char buff[50];
  45. switch (msg) {
  46.  
  47. case WM_CREATE: {
  48. GetClientRect(hwnd, &r);
  49. SetTimer(hwnd, 1, 16, NULL);
  50. SetTimer(hwnd, 3, 500, NULL);
  51. brush = CreatePatternBrush(LoadBitmap(GetModuleHandle(NULL), MAKEINTRESOURCE(IDB_BITMAP1)));
  52. tlo = LoadBitmap(GetModuleHandle(NULL), MAKEINTRESOURCE(IDB_BITMAP1));
  53. gracz.statek = LoadBitmap(GetModuleHandle(NULL), MAKEINTRESOURCE(IDB_BITMAP2));
  54. gracz.statekMaska = LoadBitmap(GetModuleHandle(NULL), MAKEINTRESOURCE(IDB_BITMAP3));
  55.  
  56. przeciwnik.statek = LoadBitmap(GetModuleHandle(NULL), MAKEINTRESOURCE(IDB_BITMAP4));
  57. przeciwnik.statekMaska = LoadBitmap(GetModuleHandle(NULL), MAKEINTRESOURCE(IDB_BITMAP5));
  58.  
  59. pocisk.pocisk = LoadIcon(GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_ICON1));
  60.  
  61. gracz.pocisk = false;
  62. flaga = false;
  63. pocisk.wsp.x = 412;
  64. pocisk.wsp.y = 475;
  65. gracz.wsp.x = r.right/2 -25;
  66. gracz.wsp.y = 475;
  67. przeciwnik.wsp.x = r.right/2 -25;
  68. przeciwnik.wsp.y = 30;
  69. przeciwnik.hp = 10;
  70.  
  71. }break;
  72.  
  73. case WM_TIMER: {
  74. switch (wParam){
  75. case 1: {
  76. flaga = true;
  77. if (kierunek == true) {
  78. if(przeciwnik.wsp.x <= r.right - 60)
  79. przeciwnik.wsp.x += 4;
  80. else {
  81. kierunek = false;
  82. }
  83. }
  84. if (kierunek == false) {
  85. if (przeciwnik.wsp.x > r.left + 5)
  86. przeciwnik.wsp.x -= 4;
  87. else {
  88. kierunek = true;
  89. }
  90. }
  91. if (GetAsyncKeyState(VK_LEFT)) {
  92. if (gracz.wsp.x >= r.left + 5)
  93. gracz.wsp.x -= 10;
  94. }
  95. if (GetAsyncKeyState(VK_RIGHT)) {
  96. if(gracz.wsp.x <= r.right - 60)
  97. gracz.wsp.x += 10;
  98. }
  99. if (GetAsyncKeyState(VK_SPACE)) {
  100. if (gracz.pocisk == false) {
  101. pocisk.wsp.x = gracz.wsp.x + 12;
  102. pocisk.wsp.y = 475;
  103. }
  104. gracz.pocisk = true;
  105.  
  106. }
  107. if (gracz.pocisk == true) {
  108. if (pocisk.wsp.y <= 5) {
  109. gracz.pocisk = false;
  110. }
  111. else if (pocisk.wsp.x >= przeciwnik.wsp.x - 16 && pocisk.wsp.x <= przeciwnik.wsp.x + 50 && pocisk.wsp.y <= przeciwnik.wsp.y + 60) {
  112. przeciwnik.hp -= 1;
  113. gracz.pocisk = false;
  114. }
  115. pocisk.wsp.y -= 20;
  116. }
  117. InvalidateRect(hwnd, NULL, TRUE);
  118.  
  119. }break;
  120. case 3: {
  121. int liczba = rand() % 100;
  122. if (liczba % 2 == 0) {
  123. kierunek = true;
  124. }
  125. else {
  126. kierunek = false;
  127. }
  128. }break;
  129. default: break;
  130. }
  131. }break;
  132.  
  133. case WM_PAINT: {
  134. BeginPaint(hwnd, &ps);
  135. wsprintfA(buff, "Przeciwnik ma %d żyć", przeciwnik.hp);
  136. SetWindowTextA(hwnd, buff);
  137. hdcMem = CreateCompatibleDC(ps.hdc);
  138. hbmMem = tlo;
  139. SelectObject(hdcMem, hbmMem);
  140. FillRect(hdcMem, &r, brush);
  141. RysujStatek(hdcMem, gracz);
  142. RysujStatek(hdcMem, przeciwnik);
  143. if (gracz.pocisk == true)
  144. DrawIcon(hdcMem, pocisk.wsp.x, pocisk.wsp.y, pocisk.pocisk);
  145. if (przeciwnik.hp == 0) {
  146. KillTimer(hwnd, 1);
  147. KillTimer(hwnd, 3);
  148. DeleteObject(tlo);
  149. tlo = LoadBitmap(GetModuleHandle(NULL), MAKEINTRESOURCE(IDB_BITMAP6));
  150. SelectObject(hdcMem, tlo);
  151. BitBlt(ps.hdc, 0, 0, 800, 600, hdcMem, 0, 0, SRCCOPY);
  152. DeleteObject(tlo);
  153. }
  154. BitBlt(ps.hdc, r.left, r.top, r.right, r.bottom, hdcMem, 0, 0, SRCCOPY);
  155. DeleteDC(hdcMem);
  156. EndPaint(hwnd, &ps);
  157. }break;
  158.  
  159. case WM_CLOSE: {
  160. DeleteObject(przeciwnik.statek);
  161. DeleteObject(przeciwnik.statekMaska);
  162. DeleteObject(gracz.statekMaska);
  163. DeleteObject(gracz.statek);
  164. DeleteObject(pocisk.pocisk);
  165. DeleteObject(hbmMem);
  166. DestroyWindow(hwnd);
  167. PostQuitMessage(0);
  168. }break;
  169.  
  170. default: return DefWindowProc(hwnd, msg, wParam, lParam);
  171.  
  172. }
  173. };
  174. int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
  175. MSG msg;
  176. WNDCLASS wndclass;
  177. HWND hwnd;
  178.  
  179. wndclass.style = CS_HREDRAW | CS_VREDRAW;
  180. wndclass.lpfnWndProc = WndProc;
  181. wndclass.cbClsExtra = 0;
  182. wndclass.cbWndExtra = 0;
  183. wndclass.hInstance = hInstance;
  184. wndclass.hIcon = NULL;
  185. wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
  186. wndclass.hbrBackground = NULL;
  187. wndclass.lpszMenuName = NULL;
  188. wndclass.lpszClassName = L"Wesołych !!";
  189.  
  190. if (RegisterClass(&wndclass) == 0)
  191. return FALSE;
  192.  
  193. hwnd = CreateWindow(L"Wesołych !!", NULL, WS_OVERLAPPEDWINDOW ^ (WS_THICKFRAME | WS_MAXIMIZEBOX) | WS_VISIBLE , CW_USEDEFAULT, CW_USEDEFAULT, 800, 600, NULL, NULL, hInstance, NULL);
  194.  
  195. if (hwnd == NULL)
  196. return FALSE;
  197.  
  198. while (GetMessage(&msg, NULL, 0, 0))
  199. {
  200. TranslateMessage(&msg);
  201. DispatchMessage(&msg);
  202. }
  203.  
  204. return msg.wParam;
  205. }
  206.  
  207. /////////////resource.h
  208.  
  209. //{{NO_DEPENDENCIES}}
  210. // Microsoft Visual C++ generated include file.
  211. // Used by Wesołych !!.rc
  212. //
  213. #define IDB_BITMAP1 101
  214. #define IDB_BITMAP2 102
  215. #define IDB_BITMAP3 103
  216. #define IDI_ICON1 104
  217. #define IDB_BITMAP4 105
  218. #define IDB_BITMAP5 106
  219. #define IDB_BITMAP6 107
  220.  
  221. // Next default values for new objects
  222. //
  223. #ifdef APSTUDIO_INVOKED
  224. #ifndef APSTUDIO_READONLY_SYMBOLS
  225. #define _APS_NEXT_RESOURCE_VALUE 108
  226. #define _APS_NEXT_COMMAND_VALUE 40001
  227. #define _APS_NEXT_CONTROL_VALUE 1001
  228. #define _APS_NEXT_SYMED_VALUE 101
  229. #endif
  230. #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement