Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Windows.h>
- #include <time.h>
- #include <stdlib.h>
- #include <stdio.h>
- #include <vector>
- #include <iostream>
- TCHAR MYCL[]=TEXT("MojaKlasa");
- TCHAR APPNAME[]=TEXT("kury");
- #define TIMERT 15 //Frame time in ms
- #define KURTIME 500
- struct Kura{
- POINT pos;
- double stime;
- bool hidden;
- };
- LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam){
- static HDC hobiekt;
- static HDC hdcm;
- static HBITMAP mem;
- static HBITMAP mold;
- static HBITMAP old;
- static HBITMAP tlo;
- static HBITMAP kura;
- static HBITMAP mkura;
- static HBITMAP celownik;
- static BITMAP itlo;
- static BITMAP ikura;
- static BITMAP icelownik;
- static POINT cp;
- static POINT vcp;
- static POINT ocp;
- static POINT oldkp;
- static Kura K;
- static UINT punkty;
- static RECT cr;
- static double ltime;
- static double ftime;
- static bool fstscan;
- static bool strzal;
- switch(msg){
- case WM_CLOSE:{
- DestroyWindow(hwnd);
- }break;
- case WM_DESTROY:{
- SelectObject(hobiekt,old);
- SelectObject(hdcm,mold);
- DeleteDC(hdcm);
- DeleteDC(hobiekt);
- DeleteObject(kura);
- DeleteObject(celownik);
- DeleteObject(mkura);
- DeleteObject(tlo);
- PostQuitMessage(0);
- }break;
- case WM_SETFOCUS:{
- ShowCursor(FALSE);
- }break;
- case WM_KILLFOCUS:{
- ShowCursor(TRUE);
- }break;
- case WM_CREATE:{
- ftime=0.0;
- ltime=0.0;
- punkty=0;
- fstscan=true;
- HDC hdc=GetDC(hwnd);
- GetClientRect(hwnd,&cr);
- hobiekt=CreateCompatibleDC(hdc);
- hdcm=CreateCompatibleDC(hdc);
- mem=CreateCompatibleBitmap(hdc,cr.right, cr.bottom);
- ReleaseDC(hwnd,hdc);
- mold=(HBITMAP)SelectObject(hdcm,mem);
- tlo=(HBITMAP)LoadImage(GetModuleHandle(0),TEXT("back.bmp"),IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
- kura=(HBITMAP)LoadImage(GetModuleHandle(0),TEXT("k.bmp"),IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
- mkura=(HBITMAP)LoadImage(GetModuleHandle(0),TEXT("km.bmp"),IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
- celownik=(HBITMAP)LoadImage(GetModuleHandle(0),TEXT("cel.bmp"),IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
- if(!kura || !mkura|| !celownik|| !tlo){
- MessageBox(hwnd,TEXT("Problem z wczytaniem tekstur"),TEXT("Error"),MB_OK|MB_ICONERROR);
- PostQuitMessage(1);
- }
- GetObject(tlo,sizeof(BITMAP),&itlo);
- GetObject(kura,sizeof(BITMAP),&ikura);
- GetObject(celownik,sizeof(BITMAP),&icelownik);
- old=(HBITMAP)SelectObject(hobiekt,tlo);
- SetTimer(hwnd,0,TIMERT,0); //main loop
- SetTimer(hwnd,1,500,0); //fps update
- SetTimer(hwnd,2,KURTIME,0); //chicken reposition
- }break;
- case WM_MOUSEMOVE:{
- POINT ncp;
- ocp=cp;
- ncp.x=LOWORD(lparam);
- ncp.y=HIWORD(lparam);
- vcp.x=cp.x-ncp.x;
- vcp.y=cp.y-ncp.y;
- cp=ncp;
- }break;
- case WM_LBUTTONDOWN:{
- strzal=true;
- //std::cout<<"AA"<<std::endl;
- }break;
- case WM_TIMER:{
- RECT r;
- switch(LOWORD(wparam)){
- case 3:{
- KillTimer(hwnd,3);
- K.hidden=true;
- SetTimer(hwnd,2,KURTIME,0);
- }break;
- case 2:{
- KillTimer(hwnd,2);
- SetTimer(hwnd,3,KURTIME,0);
- K.hidden=false;
- oldkp.x=K.pos.x;
- oldkp.y=K.pos.y;
- K.pos.x=rand()%(cr.right-icelownik.bmWidth);
- K.pos.y=rand()%(cr.bottom-icelownik.bmHeight);
- }break;
- case 1:{
- char buf[16];
- r.left=0;
- r.top=0;
- r.bottom=20;
- r.right=80;
- sprintf(buf,"FPS:%.2f",1.0/ftime);
- TextOutA(hdcm,0,0,buf,strlen(buf));
- InvalidateRect(hwnd,&r,false);
- }break;
- case 0:{
- double rtime=time(NULL);
- SYSTEMTIME st;
- GetLocalTime(&st);
- rtime+=0.001*st.wMilliseconds;
- ftime=rtime-ltime;
- SelectObject(hobiekt,tlo);
- BitBlt(hdcm,0,0,itlo.bmWidth,itlo.bmHeight,hobiekt,0,0,SRCCOPY);
- if(fstscan){
- InvalidateRect(hwnd,0,0);
- fstscan=false;
- }
- char buf[32];
- r.left=cr.right-80;
- r.top=0;
- r.bottom=20;
- r.right=cr.right;
- sprintf(buf,"Punkty:%d",punkty);
- TextOutA(hdcm,r.left,r.top,buf,strlen(buf));
- InvalidateRect(hwnd,&r,false);
- if(!K.hidden){
- SelectObject(hobiekt,mkura);
- BitBlt(hdcm,K.pos.x,K.pos.y,ikura.bmWidth,ikura.bmHeight,hobiekt,0,0,SRCAND);
- SelectObject(hobiekt,kura);
- BitBlt(hdcm,K.pos.x,K.pos.y,ikura.bmWidth,ikura.bmHeight,hobiekt,0,0,SRCPAINT);
- if(strzal){
- SelectObject(hobiekt,mkura);
- POINT p;
- p.x=cp.x-K.pos.x;
- p.y=cp.y-K.pos.y;
- if(GetPixel(hobiekt,p.x,p.y)==0x000000){
- K.hidden=true;
- punkty++;
- }
- }
- }
- r.left=K.pos.x;
- r.right=K.pos.x+ikura.bmWidth;
- r.top=K.pos.y;
- r.bottom=K.pos.y+ikura.bmHeight;
- InvalidateRect(hwnd, &r,0);
- r.left=oldkp.x;
- r.right=r.left+ikura.bmWidth;
- r.top=oldkp.y;
- r.bottom=oldkp.y+ikura.bmHeight;
- InvalidateRect(hwnd, &r, 0);
- SelectObject(hobiekt,celownik);
- BitBlt(hdcm,cp.x-icelownik.bmWidth/2,cp.y-icelownik.bmHeight/2,icelownik.bmWidth,icelownik.bmHeight,hobiekt,0,0,SRCAND);
- r.left=cp.x-icelownik.bmWidth/2;
- r.top=cp.y-icelownik.bmHeight/2;
- r.right=r.left+icelownik.bmWidth;
- r.bottom=r.top+icelownik.bmHeight;
- r.left-=16;
- r.right+=16;
- r.top-=16;
- r.bottom+=16;
- if(vcp.x > 0){
- r.right+=2*(vcp.x*vcp.x+8);
- }else{
- r.left-=2*(vcp.x*vcp.x+8);
- }
- if(vcp.y > 0){
- r.bottom+=2*(vcp.y*vcp.y+8);
- }else{
- r.top-=2*(vcp.y*vcp.y+8);
- }
- InvalidateRect(hwnd,&r,0);
- r.left=ocp.x;
- r.right=ocp.x+icelownik.bmWidth;
- r.top=ocp.y;
- r.bottom=ocp.y+icelownik.bmHeight;
- InvalidateRect(hwnd,&r,0);
- SelectObject(hdcm,GetStockObject(NULL_BRUSH));
- ltime=rtime;
- strzal=false;
- }break;
- }
- }break;
- case WM_ERASEBKGND:{
- return 1;
- }break;
- case WM_PAINT:{
- PAINTSTRUCT ps;
- BeginPaint(hwnd,&ps);
- BitBlt(ps.hdc,0,0,cr.right,cr.bottom,hdcm,0,0,SRCCOPY);
- EndPaint(hwnd,&ps);
- }break;
- default:{return DefWindowProc(hwnd, msg, wparam, lparam);}break;
- }
- return 0;
- }
- int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow){
- srand(time(NULL));
- WNDCLASSEX wc;
- wc.cbClsExtra=0;
- wc.cbSize=sizeof(WNDCLASSEX);
- wc.cbWndExtra=0;
- wc.hbrBackground=(HBRUSH)(1);
- wc.hCursor=LoadCursor(0,IDC_ARROW);
- wc.hIcon=LoadIcon(0,IDI_APPLICATION);
- wc.hIconSm=LoadIcon(0, IDI_APPLICATION);
- wc.hInstance=hInstance;
- wc.lpfnWndProc=WndProc;
- wc.lpszClassName=MYCL;
- wc.lpszMenuName=NULL;
- wc.style=CS_VREDRAW|CS_HREDRAW;
- if(!RegisterClassEx(&wc)){
- MessageBox(0,TEXT("Nie zarejestrowac klasy glownej okienka!"),TEXT("Error"),MB_OK+MB_ICONERROR);
- return 1;
- }
- HWND hwnd;
- hwnd=CreateWindowEx(WS_EX_CLIENTEDGE,MYCL,APPNAME,WS_SYSMENU,CW_USEDEFAULT,CW_USEDEFAULT,640,480,NULL,NULL,hInstance,NULL);
- if(hwnd==NULL){
- MessageBox(0,TEXT("Nie mozna stworzyc okienka!"),TEXT("Error"),MB_OK+MB_ICONEXCLAMATION);
- UnregisterClass(MYCL,hInstance);
- return 1;
- }
- ShowWindow(hwnd,nCmdShow);
- UpdateWindow(hwnd);
- MSG msg;
- while(GetMessage(&msg,NULL,0,0)>0){
- TranslateMessage(&msg);
- DispatchMessage(&msg);
- }
- UnregisterClass(MYCL,hInstance);
- return msg.wParam;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement