Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Statki.cpp : Defines the entry point for the application.
- //
- #include "stdafx.h"
- #include "Statki.h"
- #include <Windows.h>
- #include "Resource.h"
- #include <ctime>
- #define liczba_zyc 2;
- struct Statek {
- POINT wsp;
- bool pocisk;
- int naboje;
- int hp;
- HBITMAP statek;
- HBITMAP statekMaska;
- };
- struct Pocisk {
- POINT wsp;
- HICON pocisk;
- };
- static Statek gracz; // Utworzenie 2 graczy
- static Statek przeciwnik; //
- static Statek kura; //
- static Pocisk pocisk;
- static Pocisk pocisk2;
- static HDC hdcMem;
- static HBITMAP hbmMem;
- static HBRUSH brush;
- static PAINTSTRUCT ps;
- static HBITMAP tlo;
- static RECT r;
- static bool kierunek;
- static char buff[50];
- static int licznik = 0;
- void UruchomGre(HWND hwnd) {
- GetClientRect(hwnd, &r);
- SetTimer(hwnd, 1, 16, NULL);
- SetTimer(hwnd, 2, 500, NULL);
- SetTimer(hwnd, 3, 500, NULL);
- brush = CreatePatternBrush(LoadBitmap(GetModuleHandle(NULL), MAKEINTRESOURCE(IDB_BITMAP8)));
- tlo = LoadBitmap(GetModuleHandle(NULL), MAKEINTRESOURCE(IDB_BITMAP8));
- 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));
- //Kura
- kura.statek = LoadBitmap(GetModuleHandle(NULL), MAKEINTRESOURCE(IDB_BITMAP4));
- kura.statekMaska = LoadBitmap(GetModuleHandle(NULL), MAKEINTRESOURCE(IDB_BITMAP5));
- pocisk.pocisk = LoadIcon(GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_ICON1));
- gracz.pocisk = false;
- //pocisk.wsp.x = 412;
- //pocisk.wsp.y = 475;
- gracz.wsp.x = r.right / 2 - 25; // ustawianie statku względem osi oX
- gracz.wsp.y = 490; // ustawienie na sztywno odległości od dolnej granicy
- przeciwnik.wsp.x = r.right / 2 - 25;
- przeciwnik.wsp.y = 30;
- przeciwnik.hp = liczba_zyc;
- }
- 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);
- }
- LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) {
- srand(time(NULL));
- switch (msg) {
- case WM_CREATE: {
- UruchomGre(hwnd);
- }break;
- case WM_TIMER: {
- switch (wParam){
- case 1: {
- //
- // RANDOMOWE RUSZANIE SIE STATKU PRZECIWNIKA
- //
- if (kierunek == true) {
- if(przeciwnik.wsp.x <= r.right - 60)
- przeciwnik.wsp.x += rand()%10;
- else {
- kierunek = false;
- }
- }
- if (kierunek == false) {
- if (przeciwnik.wsp.x > r.left + 5)
- przeciwnik.wsp.x -= rand()%10;
- else {
- kierunek = true;
- }
- }
- //
- // STEROWANIE STATKIEM
- //
- 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 = przeciwnik.wsp.x + 12; // bylo gracz
- pocisk.wsp.y = 45; // byo 475
- }
- gracz.pocisk = true; // Blokada wystrzału kolejnego pocisku
- }
- //
- // LOT POCISKU
- //
- if (gracz.pocisk == true) {
- if (pocisk.wsp.y <= 5) {
- przeciwnik.pocisk = false; // gracz
- }
- else if (pocisk.wsp.x >= gracz.wsp.x - 16 && pocisk.wsp.x <= gracz.wsp.x + 50 && pocisk.wsp.y <= gracz.wsp.y + 60) { // zamiast gracz było przeciwnik
- przeciwnik.hp += 1; // było minus równa sie
- gracz.pocisk = false;
- }
- pocisk.wsp.y += 5; //było pocisk.wsp.y -= 20;
- }
- InvalidateRect(hwnd, NULL, TRUE);
- }break;
- case 2: {
- //int liczba = ;
- if ((rand() % 100) % 2 == 0) {
- kierunek = true;
- }
- else {
- kierunek = false;
- }
- }break;
- case 3: { /// robienie kury
- licznik++;
- if ( licznik == 2) {
- kura.wsp.x = 0;//rand() % 800 + 40;
- kura.wsp.y = 0;//rand() % 400 + 80;
- }
- if (licznik == 5)
- {
- licznik = 0;
- kura.wsp.x = 2000;
- kura.wsp.y = 3000;
- // usun statek
- }
- }break;
- default: break;
- }
- }break;
- case WM_LBUTTONDOWN:
- {
- POINT klik;
- GetCursorPos( & klik );
- if (klik.x > kura.wsp.x )
- {
- //if (klik.y > kura.wsp.y && klik.y <= kura.wsp.y + 40)
- {
- przeciwnik.hp += 1;
- }
- }
- }
- 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(licznik==3) //jezli kura sie pojawia
- RysujStatek(hdcMem, kura);
- if (gracz.pocisk == true)
- DrawIcon(hdcMem, pocisk.wsp.x, pocisk.wsp.y, pocisk.pocisk);
- if (przeciwnik.hp == 0) {
- KillTimer(hwnd, 1);
- KillTimer(hwnd, 2);
- KillTimer(hwnd, 3);
- DeleteObject(tlo);
- tlo = LoadBitmap(GetModuleHandle(NULL), MAKEINTRESOURCE(IDB_BITMAP6));
- SelectObject(hdcMem, tlo);
- BitBlt(ps.hdc, 0, 0, 1000, 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_KEYDOWN:
- {
- switch ((int)wParam)
- {
- case VK_F1:
- {
- UruchomGre(hwnd);
- break;
- }
- default: break;
- }
- }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_CROSS);
- wndclass.hbrBackground = NULL;
- wndclass.lpszMenuName = NULL;
- wndclass.lpszClassName = TEXT("Wesołych !!");
- if (RegisterClass(&wndclass) == 0)
- return FALSE;
- hwnd = CreateWindow(TEXT("Wesołych !!"), NULL, WS_OVERLAPPEDWINDOW ^ (WS_THICKFRAME | WS_MAXIMIZEBOX) | WS_VISIBLE , CW_USEDEFAULT, CW_USEDEFAULT, 1000, 600, NULL, NULL, hInstance, NULL);
- if (hwnd == NULL)
- return FALSE;
- while (GetMessage(&msg, NULL, 0, 0))
- {
- TranslateMessage(&msg);
- DispatchMessage(&msg);
- }
- return msg.wParam;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement