Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Windows.h>
- #include "resource.h"
- #include <ctime>
- struct Statek {
- POINT wsp;
- bool pocisk;
- int naboje;
- int hp;
- HBITMAP statek;
- HBITMAP statekMaska;
- };
- struct Pocisk {
- POINT wsp;
- HICON pocisk;
- };
- void RysujStatek(HDC hdc, Statek statek) {
- HDC hdcMem = CreateCompatibleDC(hdc);
- SelectObject(hdcMem, statek.statekMaska);
- BitBlt(hdc, statek.wsp.x, statek.wsp.y, 55, 60, hdcMem, 0, 0, SRCAND);
- SelectObject(hdcMem, statek.statek);
- BitBlt(hdc, statek.wsp.x, statek.wsp.y, 55, 60, hdcMem, 0, 0, SRCPAINT);
- DeleteDC(hdcMem);
- }
- void RysujPocisk(HDC hdc, Pocisk pocisk) {
- HDC hdcMem = CreateCompatibleDC(hdc);
- DrawIcon(hdcMem, pocisk.wsp.x, pocisk.wsp.y, pocisk.pocisk);
- DeleteDC(hdcMem);
- }
- LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) {
- srand(time(NULL));
- static Statek gracz;
- static Statek przeciwnik;
- static Pocisk pocisk;
- static HDC hdcMem;
- static HBITMAP hbmMem;
- static HBRUSH brush;
- static PAINTSTRUCT ps;
- static HBITMAP tlo;
- static RECT r;
- static bool kierunek;
- static bool flaga;
- static char buff[50];
- switch (msg) {
- case WM_CREATE: {
- GetClientRect(hwnd, &r);
- SetTimer(hwnd, 1, 16, NULL);
- SetTimer(hwnd, 3, 500, NULL);
- brush = CreatePatternBrush(LoadBitmap(GetModuleHandle(NULL), MAKEINTRESOURCE(IDB_BITMAP1)));
- tlo = LoadBitmap(GetModuleHandle(NULL), MAKEINTRESOURCE(IDB_BITMAP1));
- gracz.statek = LoadBitmap(GetModuleHandle(NULL), MAKEINTRESOURCE(IDB_BITMAP2));
- gracz.statekMaska = LoadBitmap(GetModuleHandle(NULL), MAKEINTRESOURCE(IDB_BITMAP3));
- przeciwnik.statek = LoadBitmap(GetModuleHandle(NULL), MAKEINTRESOURCE(IDB_BITMAP4));
- przeciwnik.statekMaska = LoadBitmap(GetModuleHandle(NULL), MAKEINTRESOURCE(IDB_BITMAP5));
- pocisk.pocisk = LoadIcon(GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_ICON1));
- gracz.pocisk = false;
- flaga = false;
- pocisk.wsp.x = 412;
- pocisk.wsp.y = 475;
- gracz.wsp.x = r.right/2 -25;
- gracz.wsp.y = 475;
- przeciwnik.wsp.x = r.right/2 -25;
- przeciwnik.wsp.y = 30;
- przeciwnik.hp = 10;
- }break;
- case WM_TIMER: {
- switch (wParam){
- case 1: {
- flaga = true;
- if (kierunek == true) {
- if(przeciwnik.wsp.x <= r.right - 60)
- przeciwnik.wsp.x += 4;
- else {
- kierunek = false;
- }
- }
- if (kierunek == false) {
- if (przeciwnik.wsp.x > r.left + 5)
- przeciwnik.wsp.x -= 4;
- else {
- kierunek = true;
- }
- }
- if (GetAsyncKeyState(VK_LEFT)) {
- if (gracz.wsp.x >= r.left + 5)
- gracz.wsp.x -= 10;
- }
- if (GetAsyncKeyState(VK_RIGHT)) {
- if(gracz.wsp.x <= r.right - 60)
- gracz.wsp.x += 10;
- }
- if (GetAsyncKeyState(VK_SPACE)) {
- if (gracz.pocisk == false) {
- pocisk.wsp.x = gracz.wsp.x + 12;
- pocisk.wsp.y = 475;
- }
- gracz.pocisk = true;
- }
- if (gracz.pocisk == true) {
- if (pocisk.wsp.y <= 5) {
- gracz.pocisk = false;
- }
- else if (pocisk.wsp.x >= przeciwnik.wsp.x - 16 && pocisk.wsp.x <= przeciwnik.wsp.x + 50 && pocisk.wsp.y <= przeciwnik.wsp.y + 60) {
- przeciwnik.hp -= 1;
- gracz.pocisk = false;
- }
- pocisk.wsp.y -= 20;
- }
- InvalidateRect(hwnd, NULL, TRUE);
- }break;
- case 3: {
- int liczba = rand() % 100;
- if (liczba % 2 == 0) {
- kierunek = true;
- }
- else {
- kierunek = false;
- }
- }break;
- default: break;
- }
- }break;
- case WM_PAINT: {
- BeginPaint(hwnd, &ps);
- wsprintfA(buff, "Przeciwnik ma %d żyć", przeciwnik.hp);
- SetWindowTextA(hwnd, buff);
- hdcMem = CreateCompatibleDC(ps.hdc);
- hbmMem = tlo;
- SelectObject(hdcMem, hbmMem);
- FillRect(hdcMem, &r, brush);
- RysujStatek(hdcMem, gracz);
- RysujStatek(hdcMem, przeciwnik);
- if (gracz.pocisk == true)
- DrawIcon(hdcMem, pocisk.wsp.x, pocisk.wsp.y, pocisk.pocisk);
- if (przeciwnik.hp == 0) {
- KillTimer(hwnd, 1);
- KillTimer(hwnd, 3);
- DeleteObject(tlo);
- tlo = LoadBitmap(GetModuleHandle(NULL), MAKEINTRESOURCE(IDB_BITMAP6));
- SelectObject(hdcMem, tlo);
- BitBlt(ps.hdc, 0, 0, 800, 600, hdcMem, 0, 0, SRCCOPY);
- DeleteObject(tlo);
- }
- BitBlt(ps.hdc, r.left, r.top, r.right, r.bottom, hdcMem, 0, 0, SRCCOPY);
- DeleteDC(hdcMem);
- EndPaint(hwnd, &ps);
- }break;
- case WM_CLOSE: {
- DeleteObject(przeciwnik.statek);
- DeleteObject(przeciwnik.statekMaska);
- DeleteObject(gracz.statekMaska);
- DeleteObject(gracz.statek);
- DeleteObject(pocisk.pocisk);
- DeleteObject(hbmMem);
- DestroyWindow(hwnd);
- PostQuitMessage(0);
- }break;
- default: return DefWindowProc(hwnd, msg, wParam, lParam);
- }
- };
- int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
- MSG msg;
- WNDCLASS wndclass;
- HWND hwnd;
- wndclass.style = CS_HREDRAW | CS_VREDRAW;
- wndclass.lpfnWndProc = WndProc;
- wndclass.cbClsExtra = 0;
- wndclass.cbWndExtra = 0;
- wndclass.hInstance = hInstance;
- wndclass.hIcon = NULL;
- wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
- wndclass.hbrBackground = NULL;
- wndclass.lpszMenuName = NULL;
- wndclass.lpszClassName = L"Wesołych !!";
- if (RegisterClass(&wndclass) == 0)
- return FALSE;
- hwnd = CreateWindow(L"Wesołych !!", NULL, WS_OVERLAPPEDWINDOW ^ (WS_THICKFRAME | WS_MAXIMIZEBOX) | WS_VISIBLE , CW_USEDEFAULT, CW_USEDEFAULT, 800, 600, NULL, NULL, hInstance, NULL);
- if (hwnd == NULL)
- return FALSE;
- while (GetMessage(&msg, NULL, 0, 0))
- {
- TranslateMessage(&msg);
- DispatchMessage(&msg);
- }
- return msg.wParam;
- }
- /////////////resource.h
- //{{NO_DEPENDENCIES}}
- // Microsoft Visual C++ generated include file.
- // Used by Wesołych !!.rc
- //
- #define IDB_BITMAP1 101
- #define IDB_BITMAP2 102
- #define IDB_BITMAP3 103
- #define IDI_ICON1 104
- #define IDB_BITMAP4 105
- #define IDB_BITMAP5 106
- #define IDB_BITMAP6 107
- // Next default values for new objects
- //
- #ifdef APSTUDIO_INVOKED
- #ifndef APSTUDIO_READONLY_SYMBOLS
- #define _APS_NEXT_RESOURCE_VALUE 108
- #define _APS_NEXT_COMMAND_VALUE 40001
- #define _APS_NEXT_CONTROL_VALUE 1001
- #define _APS_NEXT_SYMED_VALUE 101
- #endif
- #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement