Ładny brzuch
Witam,
wlasnie po kilkunastu godzinach przed monitorem stwierdzilem ze ide spac, bo to na nic, ale najpierw spytam o pomoc kompetentbych ludzi
jesli ktos widzi dlaczego to nie chce hulac, to proszony jest o podanie przyczyny ew. podanie rozwiazania
jestem poczatkujacy(2 tygodnie winapi) wiec kod moze byc ciezki do strawienia
problemy takie: fire.gif leci nie w te manke co trzeba
bledy (chyba)przy obliczniu kolizji
i cos tam jeszcze pewnie
plus pytanie bonusowe: jaki jest odpowiednik system("pause") w winapi?
grafiki znajduja sie tu: http://s000.wyslijto...218038049579660
tylko sie nie smiac, tak naprawde sa piekne ; )
#include < windows.h > #include < gdiplus.h > using namespace Gdiplus; static TCHAR nazwa[]=TEXT("OKIENKO"); HDC hdc, ekran, hDC, pomocniczy ; int x=500, y=670, elo; HBITMAP hbitmap, snap; ULONG_PTR gdiplustoken; GdiplusStartupInput gdiplusstartupinput; bool prawo, lewo, gora, dol; void wyswietl(HWND); void ruchomy(HWND); void czolg(HWND); void ognia(HWND); void wystrzal(HWND); void strzal(); bool kolizja(int q, int s, int dlg, int szer); class tlo { public: int x, y; HBITMAP snap; }; class tlo tab[10]; class tank: public tlo { public: int zycie; HBITMAP snap; }; class tank tabl[5]; class fire: public tlo { public: HBITMAP snap; }; class fire ta[16]; LRESULT CALLBACK ProcOkna(HWND uchwyt,UINT komunikat,WPARAM wParam,LPARAM lParam) { switch (komunikat) { case WM_CREATE: SetTimer( uchwyt, 1, 100, NULL ); SetTimer( uchwyt, 2, 2000, NULL ); SetTimer( uchwyt, 3, 3000, NULL ); break; case WM_TIMER: { if(wParam == 1) { czolg(uchwyt); ruchomy(uchwyt); break; } if(wParam == 2) { for(int ala=0; ala<5;ala++) { if(tabl[ala].y>70) strzal(); } break; } else ognia(uchwyt); break; } case WM_DESTROY: PostQuitMessage(0); break; case WM_KEYDOWN: switch (wParam) { case VK_ESCAPE: PostQuitMessage(0); break; case VK_UP: { gora=1; wyswietl(uchwyt); break; } case VK_DOWN: { dol=1; wyswietl(uchwyt); break; } case VK_RIGHT: { prawo=1; wyswietl(uchwyt); break; } case VK_LEFT: { lewo=1; wyswietl(uchwyt); break; } } default: return (DefWindowProc(uchwyt,komunikat,wParam,lParam)); } return (0); } int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow) { HBITMAP hbitmap = (HBITMAP)LoadImage(NULL, "panele2.bmp", IMAGE_BITMAP, 0,0, LR_LOADFROMFILE|LR_CREATEDIBSECTION ); if(hbitmap==NULL) MessageBox(NULL,"Panele!","Mule!",MB_OK|MB_ICONEXCLAMATION); HBRUSH hbrush = CreatePatternBrush (hbitmap); GdiplusStartup (& gdiplustoken, & gdiplusstartupinput, 0); for(int zyc=0;zyc<5;zyc++) { tabl[zyc].x = zyc*180; tabl[zyc].y= (-500)*zyc-(3*zyc); tabl[zyc].zycie=3; } tab[0].y=-180; for(int yy=1;yy<5;yy++) { tab[yy].y=yy*(-605); tab[yy].x=yy*190; } for(int aa=9;aa!=4;aa--) { tab[aa].y=(aa-4)*(-632); tab[aa].x=(rand()%10)*192; } WNDCLASS klasaokna; HWND uchwyt; klasaokna.style=CS_HREDRAW | CS_VREDRAW; klasaokna.lpfnWndProc=ProcOkna; klasaokna.cbClsExtra = 0; klasaokna.cbWndExtra = 0; klasaokna.hInstance = hInstance; klasaokna.hIcon = NULL; klasaokna.hCursor = LoadCursor(NULL, IDC_ARROW); klasaokna.hbrBackground = hbrush; klasaokna.lpszMenuName = NULL; klasaokna.lpszClassName = nazwa; if(RegisterClass(&klasaokna)==0) return FALSE; uchwyt=CreateWindow(nazwa,"Ace of Planes",WS_OVERLAPPEDWINDOW, 100, 100, 400, 300,NULL, NULL, hInstance, NULL); hdc=GetDC(uchwyt); if(uchwyt==NULL) return FALSE; ShowWindow(uchwyt,SW_SHOWMAXIMIZED); UpdateWindow(uchwyt); wyswietl(uchwyt); MSG komunikat; while(GetMessage(&komunikat, NULL, 0, 0)) { TranslateMessage(&komunikat); DispatchMessage(&komunikat); } GdiplusShutdown (gdiplustoken); return komunikat.wParam; } /////////****************************************************** ///////////************************************************** /////////////********************************************** ///////////////****************************************** void wyswietl(HWND uchwyt) { //przywraca tlo hdc=GetDC(uchwyt); pomocniczy = CreateCompatibleDC(hdc); SelectObject(pomocniczy, snap); BitBlt(hdc, x, y, 52, 51, pomocniczy, 0, 0, SRCCOPY); ReleaseDC(uchwyt,hdc); DeleteObject(pomocniczy); DeleteObject(snap);// zwalnia pamiec if(lewo==1) x-=6,lewo=0; else if(gora==1) y-=6, gora=0; else if(dol==1) y+=6, dol=0; else if(prawo==1) x+=6, prawo=0; if(x<0) x+=6; if(y<0) y+=6; if(x>977) x-=6; if(y>670) y-=6; ////////////////////////////zapisuje stan ekran = CreateDC("DISPLAY", NULL, NULL, NULL); pomocniczy = CreateCompatibleDC(ekran); snap = CreateCompatibleBitmap(ekran, GetDeviceCaps(ekran, HORZRES),GetDeviceCaps(ekran, VERTRES)); SelectObject(pomocniczy, snap); BitBlt(pomocniczy, 0,0, 52,51, ekran, x, y+=19, SRCCOPY); ReleaseDC(uchwyt, ekran); DeleteDC(pomocniczy); y-=19; /////////////////////////////////////////// //wyswietla rakiete :D Image image (L"grafa.gif"); hDC = GetDC(uchwyt); Graphics graphics(hDC); graphics.DrawImage(&image, x, y, 52, 51); ReleaseDC(uchwyt, hDC); } void czolg(HWND uchwyt) { for (int zz=0;zz<5;zz++) { if(kolizja(tabl[zz].x, tabl[zz].y, 52,52) ) { elo++; hdc=GetDC(uchwyt); pomocniczy = CreateCompatibleDC(hdc); SelectObject(pomocniczy, snap); BitBlt(hdc, x, y, 52, 51, pomocniczy, 0, 0, SRCCOPY); ReleaseDC(uchwyt,hdc); DeleteObject(pomocniczy); } //przywraca tlo hdc=GetDC(uchwyt); pomocniczy = CreateCompatibleDC(hdc); SelectObject(pomocniczy, tabl[zz].snap ); BitBlt(hdc, tabl[zz].x, tabl[zz].y, 52,52, pomocniczy, 0, 0, SRCCOPY); ReleaseDC(uchwyt,hdc); DeleteObject(pomocniczy); DeleteObject(tabl[zz].snap);// zwalnia pamiec bool helpa=0; if(tabl[zz].y<70) {helpa=0; tabl[zz].y+=5;} if(tabl[zz].y>=70&&helpa==0&&tabl[zz].y<=260) {tabl[zz].y+=5;tabl[zz].x+=2;} if(tabl[zz].y>260&&helpa==0) {helpa=1;} if(helpa==1) {tabl[zz].y-=5;tabl[zz].x-=2;} ////////////////////////////zapisuje stan ekran = CreateDC("DISPLAY", NULL, NULL, NULL); pomocniczy = CreateCompatibleDC(ekran); tabl[zz].snap = CreateCompatibleBitmap(ekran, GetDeviceCaps(ekran, HORZRES),GetDeviceCaps(ekran, VERTRES)); SelectObject(pomocniczy, tabl[zz].snap); BitBlt(pomocniczy, 0,0, 52,52, ekran, tabl[zz].x, tabl[zz].y+=19, SRCCOPY); ReleaseDC(uchwyt, ekran); DeleteDC(pomocniczy); tabl[zz].y-=19; /////////////////////////////////////////// //wyswietla krzaka :D Image image (L"tank.gif"); hDC = GetDC(uchwyt); Graphics graphics(hDC); graphics.DrawImage(&image, tabl[zz].x, tabl[zz].y, 52,52); ReleaseDC(uchwyt, hDC); if(elo) { Image image (L"grafa.gif"); hDC = GetDC(uchwyt); Graphics graphics(hDC); graphics.DrawImage(&image, x, y, 52, 51); ReleaseDC(uchwyt, hDC); elo--; } } } /////////****************************************************** ///////////************************************************** /////////////********************************************** ///////////////****************************************** void ruchomy(HWND uchwyt) { for (int zz=0;zz<10;zz++) { if(tab[zz].y>=900) tab[zz].y; if(kolizja(tab[zz].x, tab[zz].y, 183, 168) ) { elo++; hdc=GetDC(uchwyt); pomocniczy = CreateCompatibleDC(hdc); SelectObject(pomocniczy, snap); BitBlt(hdc, x, y, 52, 51, pomocniczy, 0, 0, SRCCOPY); ReleaseDC(uchwyt,hdc); DeleteObject(pomocniczy); } //przywraca tlo hdc=GetDC(uchwyt); pomocniczy = CreateCompatibleDC(hdc); SelectObject(pomocniczy, tab[zz].snap ); BitBlt(hdc, tab[zz].x, tab[zz].y, 183,168, pomocniczy, 0, 0, SRCCOPY); ReleaseDC(uchwyt,hdc); DeleteObject(pomocniczy); DeleteObject(tab[zz].snap);// zwalnia pamiec tab[zz].y+=4; ////////////////////////////zapisuje stan ekran = CreateDC("DISPLAY", NULL, NULL, NULL); pomocniczy = CreateCompatibleDC(ekran); tab[zz].snap = CreateCompatibleBitmap(ekran, GetDeviceCaps(ekran, HORZRES),GetDeviceCaps(ekran, VERTRES)); SelectObject(pomocniczy, tab[zz].snap); BitBlt(pomocniczy, 0,0, 183,168, ekran, tab[zz].x, tab[zz].y+=19, SRCCOPY); ReleaseDC(uchwyt, ekran); DeleteDC(pomocniczy); tab[zz].y-=19; /////////////////////////////////////////// //wyswietla krzaka :D Image image (L"krzak.gif"); hDC = GetDC(uchwyt); Graphics graphics(hDC); graphics.DrawImage(&image, tab[zz].x, tab[zz].y, 183, 168); ReleaseDC(uchwyt, hDC); if(elo) { Image image (L"grafa.gif"); hDC = GetDC(uchwyt); Graphics graphics(hDC); graphics.DrawImage(&image, x, y, 52, 51); ReleaseDC(uchwyt, hDC); elo--; } } } void ognia(HWND uchwyt) { for (int zz=0;zz<15;zz++) { if(kolizja(ta[zz].x, ta[zz].y, 10,10)&& ta[zz].y>0) { Image image (L"blast.gif"); hDC = GetDC(uchwyt); Graphics graphics(hDC); graphics.DrawImage(&image, x-20, y-20, 92,88); ReleaseDC(uchwyt, hDC); //EnableWindow(uchwyt, false); MessageBox(uchwyt,"Zabili cie zolniezu", "DEAD", MB_OK|MB_ICONEXCLAMATION/*|MB_APPLMODAL*/); //PostQuitMessage(0); } //przywraca tlo hdc=GetDC(uchwyt); pomocniczy = CreateCompatibleDC(hdc); SelectObject(pomocniczy, ta[zz].snap ); BitBlt(hdc, ta[zz].x, ta[zz].y, 11,11, pomocniczy, 0, 0, SRCCOPY); ReleaseDC(uchwyt,hdc); DeleteObject(pomocniczy); DeleteObject(ta[zz].snap);// zwalnia pamiec strzal(); wystrzal(uchwyt); ////////////////////////////zapisuje stan ekran = CreateDC("DISPLAY", NULL, NULL, NULL); pomocniczy = CreateCompatibleDC(ekran); ta[zz].snap = CreateCompatibleBitmap(ekran, GetDeviceCaps(ekran, HORZRES),GetDeviceCaps(ekran, VERTRES)); SelectObject(pomocniczy, ta[zz].snap); BitBlt(pomocniczy, 0,0, 11,11, ekran, ta[zz].x, ta[zz].y+=19, SRCCOPY); ReleaseDC(uchwyt, ekran); DeleteDC(pomocniczy); ta[zz].y-=19; /////////////////////////////////////////// //wyswietla krzaka :D Image image (L"fire.gif"); hDC = GetDC(uchwyt); Graphics graphics(hDC); graphics.DrawImage(&image, ta[zz].x, ta[zz].y, 11,11); ReleaseDC(uchwyt, hDC); } } /////////****************************************************** ///////////************************************************** /////////////********************************************** ///////////////****************************************** bool kolizja(int q, int s, int dlg, int szer) { if(x>=q&&x<=q+dlg||x+52>=q&&x+52<=q+dlg) { if(y>=s&&y<=s+szer||y+51>=s&&y+51<=s+szer) { return true; } } else if(y>=s&&y<=s+szer||y+51>=s&&y+51<=s+szer) { if(x>=q&&x<=q+dlg||x+52>=q&&x+52<=q+dlg) { return true; } } else { return false; } } void strzal() {int szyb =0; for( int jol=0;jol<5;jol++) { if(tabl[jol].y>70) { for(;szyb<15;szyb+=3) { ta[szyb].x=tabl[jol].x; ta[szyb].y=tabl[jol].y; ta[szyb+1].x=tabl[jol].x; ta[szyb+1].y=tabl[jol].y; ta[szyb+2].x=tabl[jol].x; ta[szyb+2].y=tabl[jol].y; break; } } } } void wystrzal(HWND uchwyt) { for(int liczba=0;liczba<5;liczba+=3) { ta[liczba].x+=2; ta[liczba].y+=2; ta[liczba+1].x-=2; ta[liczba+1].y+=2; ta[liczba+2].y+=2; } }
wszelki sugestie (np jak poprawic wyswitlanie grafiki) mile widziane
i sory jesli naruszylem jakis punkt regulaminu
prosze raczej o upomnienie i poprawke niz usuniecie postu
Uytkownik outsider edytowa ten post 13 stycze 2007, 01:08
sory za nabijam sobie posty, ale troche poprawilem kod, nie ma juz tego co nie potrzebne, i... dalej nie wiem co jest nie tak : /
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
wlasnie po kilkunastu godzinach przed monitorem stwierdzilem ze ide spac, bo to na nic, ale najpierw spytam o pomoc kompetentbych ludzi
jesli ktos widzi dlaczego to nie chce hulac, to proszony jest o podanie przyczyny ew. podanie rozwiazania
jestem poczatkujacy(2 tygodnie winapi) wiec kod moze byc ciezki do strawienia
problemy takie: fire.gif leci nie w te manke co trzeba
bledy (chyba)przy obliczniu kolizji
i cos tam jeszcze pewnie
plus pytanie bonusowe: jaki jest odpowiednik system("pause") w winapi?
grafiki znajduja sie tu: http://s000.wyslijto...218038049579660
tylko sie nie smiac, tak naprawde sa piekne ; )
#include < windows.h > #include < gdiplus.h > using namespace Gdiplus; static TCHAR nazwa[]=TEXT("OKIENKO"); HDC hdc, ekran, hDC, pomocniczy ; int x=500, y=670, elo; HBITMAP hbitmap, snap; ULONG_PTR gdiplustoken; GdiplusStartupInput gdiplusstartupinput; bool prawo, lewo, gora, dol; void wyswietl(HWND); void ruchomy(HWND); void czolg(HWND); void ognia(HWND); void wystrzal(HWND); void strzal(); bool kolizja(int q, int s, int dlg, int szer); class tlo { public: int x, y; HBITMAP snap; }; class tlo tab[10]; class tank: public tlo { public: int zycie; HBITMAP snap; }; class tank tabl[5]; class fire: public tlo { public: HBITMAP snap; }; class fire ta[16]; LRESULT CALLBACK ProcOkna(HWND uchwyt,UINT komunikat,WPARAM wParam,LPARAM lParam) { switch (komunikat) { case WM_CREATE: SetTimer( uchwyt, 1, 100, NULL ); SetTimer( uchwyt, 2, 2000, NULL ); SetTimer( uchwyt, 3, 3000, NULL ); break; case WM_TIMER: { if(wParam == 1) { czolg(uchwyt); ruchomy(uchwyt); break; } if(wParam == 2) { for(int ala=0; ala<5;ala++) { if(tabl[ala].y>70) strzal(); } break; } else ognia(uchwyt); break; } case WM_DESTROY: PostQuitMessage(0); break; case WM_KEYDOWN: switch (wParam) { case VK_ESCAPE: PostQuitMessage(0); break; case VK_UP: { gora=1; wyswietl(uchwyt); break; } case VK_DOWN: { dol=1; wyswietl(uchwyt); break; } case VK_RIGHT: { prawo=1; wyswietl(uchwyt); break; } case VK_LEFT: { lewo=1; wyswietl(uchwyt); break; } } default: return (DefWindowProc(uchwyt,komunikat,wParam,lParam)); } return (0); } int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow) { HBITMAP hbitmap = (HBITMAP)LoadImage(NULL, "panele2.bmp", IMAGE_BITMAP, 0,0, LR_LOADFROMFILE|LR_CREATEDIBSECTION ); if(hbitmap==NULL) MessageBox(NULL,"Panele!","Mule!",MB_OK|MB_ICONEXCLAMATION); HBRUSH hbrush = CreatePatternBrush (hbitmap); GdiplusStartup (& gdiplustoken, & gdiplusstartupinput, 0); for(int zyc=0;zyc<5;zyc++) { tabl[zyc].x = zyc*180; tabl[zyc].y= (-500)*zyc-(3*zyc); tabl[zyc].zycie=3; } tab[0].y=-180; for(int yy=1;yy<5;yy++) { tab[yy].y=yy*(-605); tab[yy].x=yy*190; } for(int aa=9;aa!=4;aa--) { tab[aa].y=(aa-4)*(-632); tab[aa].x=(rand()%10)*192; } WNDCLASS klasaokna; HWND uchwyt; klasaokna.style=CS_HREDRAW | CS_VREDRAW; klasaokna.lpfnWndProc=ProcOkna; klasaokna.cbClsExtra = 0; klasaokna.cbWndExtra = 0; klasaokna.hInstance = hInstance; klasaokna.hIcon = NULL; klasaokna.hCursor = LoadCursor(NULL, IDC_ARROW); klasaokna.hbrBackground = hbrush; klasaokna.lpszMenuName = NULL; klasaokna.lpszClassName = nazwa; if(RegisterClass(&klasaokna)==0) return FALSE; uchwyt=CreateWindow(nazwa,"Ace of Planes",WS_OVERLAPPEDWINDOW, 100, 100, 400, 300,NULL, NULL, hInstance, NULL); hdc=GetDC(uchwyt); if(uchwyt==NULL) return FALSE; ShowWindow(uchwyt,SW_SHOWMAXIMIZED); UpdateWindow(uchwyt); wyswietl(uchwyt); MSG komunikat; while(GetMessage(&komunikat, NULL, 0, 0)) { TranslateMessage(&komunikat); DispatchMessage(&komunikat); } GdiplusShutdown (gdiplustoken); return komunikat.wParam; } /////////****************************************************** ///////////************************************************** /////////////********************************************** ///////////////****************************************** void wyswietl(HWND uchwyt) { //przywraca tlo hdc=GetDC(uchwyt); pomocniczy = CreateCompatibleDC(hdc); SelectObject(pomocniczy, snap); BitBlt(hdc, x, y, 52, 51, pomocniczy, 0, 0, SRCCOPY); ReleaseDC(uchwyt,hdc); DeleteObject(pomocniczy); DeleteObject(snap);// zwalnia pamiec if(lewo==1) x-=6,lewo=0; else if(gora==1) y-=6, gora=0; else if(dol==1) y+=6, dol=0; else if(prawo==1) x+=6, prawo=0; if(x<0) x+=6; if(y<0) y+=6; if(x>977) x-=6; if(y>670) y-=6; ////////////////////////////zapisuje stan ekran = CreateDC("DISPLAY", NULL, NULL, NULL); pomocniczy = CreateCompatibleDC(ekran); snap = CreateCompatibleBitmap(ekran, GetDeviceCaps(ekran, HORZRES),GetDeviceCaps(ekran, VERTRES)); SelectObject(pomocniczy, snap); BitBlt(pomocniczy, 0,0, 52,51, ekran, x, y+=19, SRCCOPY); ReleaseDC(uchwyt, ekran); DeleteDC(pomocniczy); y-=19; /////////////////////////////////////////// //wyswietla rakiete :D Image image (L"grafa.gif"); hDC = GetDC(uchwyt); Graphics graphics(hDC); graphics.DrawImage(&image, x, y, 52, 51); ReleaseDC(uchwyt, hDC); } void czolg(HWND uchwyt) { for (int zz=0;zz<5;zz++) { if(kolizja(tabl[zz].x, tabl[zz].y, 52,52) ) { elo++; hdc=GetDC(uchwyt); pomocniczy = CreateCompatibleDC(hdc); SelectObject(pomocniczy, snap); BitBlt(hdc, x, y, 52, 51, pomocniczy, 0, 0, SRCCOPY); ReleaseDC(uchwyt,hdc); DeleteObject(pomocniczy); } //przywraca tlo hdc=GetDC(uchwyt); pomocniczy = CreateCompatibleDC(hdc); SelectObject(pomocniczy, tabl[zz].snap ); BitBlt(hdc, tabl[zz].x, tabl[zz].y, 52,52, pomocniczy, 0, 0, SRCCOPY); ReleaseDC(uchwyt,hdc); DeleteObject(pomocniczy); DeleteObject(tabl[zz].snap);// zwalnia pamiec bool helpa=0; if(tabl[zz].y<70) {helpa=0; tabl[zz].y+=5;} if(tabl[zz].y>=70&&helpa==0&&tabl[zz].y<=260) {tabl[zz].y+=5;tabl[zz].x+=2;} if(tabl[zz].y>260&&helpa==0) {helpa=1;} if(helpa==1) {tabl[zz].y-=5;tabl[zz].x-=2;} ////////////////////////////zapisuje stan ekran = CreateDC("DISPLAY", NULL, NULL, NULL); pomocniczy = CreateCompatibleDC(ekran); tabl[zz].snap = CreateCompatibleBitmap(ekran, GetDeviceCaps(ekran, HORZRES),GetDeviceCaps(ekran, VERTRES)); SelectObject(pomocniczy, tabl[zz].snap); BitBlt(pomocniczy, 0,0, 52,52, ekran, tabl[zz].x, tabl[zz].y+=19, SRCCOPY); ReleaseDC(uchwyt, ekran); DeleteDC(pomocniczy); tabl[zz].y-=19; /////////////////////////////////////////// //wyswietla krzaka :D Image image (L"tank.gif"); hDC = GetDC(uchwyt); Graphics graphics(hDC); graphics.DrawImage(&image, tabl[zz].x, tabl[zz].y, 52,52); ReleaseDC(uchwyt, hDC); if(elo) { Image image (L"grafa.gif"); hDC = GetDC(uchwyt); Graphics graphics(hDC); graphics.DrawImage(&image, x, y, 52, 51); ReleaseDC(uchwyt, hDC); elo--; } } } /////////****************************************************** ///////////************************************************** /////////////********************************************** ///////////////****************************************** void ruchomy(HWND uchwyt) { for (int zz=0;zz<10;zz++) { if(tab[zz].y>=900) tab[zz].y; if(kolizja(tab[zz].x, tab[zz].y, 183, 168) ) { elo++; hdc=GetDC(uchwyt); pomocniczy = CreateCompatibleDC(hdc); SelectObject(pomocniczy, snap); BitBlt(hdc, x, y, 52, 51, pomocniczy, 0, 0, SRCCOPY); ReleaseDC(uchwyt,hdc); DeleteObject(pomocniczy); } //przywraca tlo hdc=GetDC(uchwyt); pomocniczy = CreateCompatibleDC(hdc); SelectObject(pomocniczy, tab[zz].snap ); BitBlt(hdc, tab[zz].x, tab[zz].y, 183,168, pomocniczy, 0, 0, SRCCOPY); ReleaseDC(uchwyt,hdc); DeleteObject(pomocniczy); DeleteObject(tab[zz].snap);// zwalnia pamiec tab[zz].y+=4; ////////////////////////////zapisuje stan ekran = CreateDC("DISPLAY", NULL, NULL, NULL); pomocniczy = CreateCompatibleDC(ekran); tab[zz].snap = CreateCompatibleBitmap(ekran, GetDeviceCaps(ekran, HORZRES),GetDeviceCaps(ekran, VERTRES)); SelectObject(pomocniczy, tab[zz].snap); BitBlt(pomocniczy, 0,0, 183,168, ekran, tab[zz].x, tab[zz].y+=19, SRCCOPY); ReleaseDC(uchwyt, ekran); DeleteDC(pomocniczy); tab[zz].y-=19; /////////////////////////////////////////// //wyswietla krzaka :D Image image (L"krzak.gif"); hDC = GetDC(uchwyt); Graphics graphics(hDC); graphics.DrawImage(&image, tab[zz].x, tab[zz].y, 183, 168); ReleaseDC(uchwyt, hDC); if(elo) { Image image (L"grafa.gif"); hDC = GetDC(uchwyt); Graphics graphics(hDC); graphics.DrawImage(&image, x, y, 52, 51); ReleaseDC(uchwyt, hDC); elo--; } } } void ognia(HWND uchwyt) { for (int zz=0;zz<15;zz++) { if(kolizja(ta[zz].x, ta[zz].y, 10,10)&& ta[zz].y>0) { Image image (L"blast.gif"); hDC = GetDC(uchwyt); Graphics graphics(hDC); graphics.DrawImage(&image, x-20, y-20, 92,88); ReleaseDC(uchwyt, hDC); //EnableWindow(uchwyt, false); MessageBox(uchwyt,"Zabili cie zolniezu", "DEAD", MB_OK|MB_ICONEXCLAMATION/*|MB_APPLMODAL*/); //PostQuitMessage(0); } //przywraca tlo hdc=GetDC(uchwyt); pomocniczy = CreateCompatibleDC(hdc); SelectObject(pomocniczy, ta[zz].snap ); BitBlt(hdc, ta[zz].x, ta[zz].y, 11,11, pomocniczy, 0, 0, SRCCOPY); ReleaseDC(uchwyt,hdc); DeleteObject(pomocniczy); DeleteObject(ta[zz].snap);// zwalnia pamiec strzal(); wystrzal(uchwyt); ////////////////////////////zapisuje stan ekran = CreateDC("DISPLAY", NULL, NULL, NULL); pomocniczy = CreateCompatibleDC(ekran); ta[zz].snap = CreateCompatibleBitmap(ekran, GetDeviceCaps(ekran, HORZRES),GetDeviceCaps(ekran, VERTRES)); SelectObject(pomocniczy, ta[zz].snap); BitBlt(pomocniczy, 0,0, 11,11, ekran, ta[zz].x, ta[zz].y+=19, SRCCOPY); ReleaseDC(uchwyt, ekran); DeleteDC(pomocniczy); ta[zz].y-=19; /////////////////////////////////////////// //wyswietla krzaka :D Image image (L"fire.gif"); hDC = GetDC(uchwyt); Graphics graphics(hDC); graphics.DrawImage(&image, ta[zz].x, ta[zz].y, 11,11); ReleaseDC(uchwyt, hDC); } } /////////****************************************************** ///////////************************************************** /////////////********************************************** ///////////////****************************************** bool kolizja(int q, int s, int dlg, int szer) { if(x>=q&&x<=q+dlg||x+52>=q&&x+52<=q+dlg) { if(y>=s&&y<=s+szer||y+51>=s&&y+51<=s+szer) { return true; } } else if(y>=s&&y<=s+szer||y+51>=s&&y+51<=s+szer) { if(x>=q&&x<=q+dlg||x+52>=q&&x+52<=q+dlg) { return true; } } else { return false; } } void strzal() {int szyb =0; for( int jol=0;jol<5;jol++) { if(tabl[jol].y>70) { for(;szyb<15;szyb+=3) { ta[szyb].x=tabl[jol].x; ta[szyb].y=tabl[jol].y; ta[szyb+1].x=tabl[jol].x; ta[szyb+1].y=tabl[jol].y; ta[szyb+2].x=tabl[jol].x; ta[szyb+2].y=tabl[jol].y; break; } } } } void wystrzal(HWND uchwyt) { for(int liczba=0;liczba<5;liczba+=3) { ta[liczba].x+=2; ta[liczba].y+=2; ta[liczba+1].x-=2; ta[liczba+1].y+=2; ta[liczba+2].y+=2; } }
wszelki sugestie (np jak poprawic wyswitlanie grafiki) mile widziane
i sory jesli naruszylem jakis punkt regulaminu
prosze raczej o upomnienie i poprawke niz usuniecie postu
Uytkownik outsider edytowa ten post 13 stycze 2007, 01:08
sory za nabijam sobie posty, ale troche poprawilem kod, nie ma juz tego co nie potrzebne, i... dalej nie wiem co jest nie tak : /