[ Parpil @ 27.01.2015. 02:58 ] @
Prvo da objasnim sta mislim pod poklapanjem: Kad kazem poklapanje mislim na odredjenu figuru napravljenu od pixela koju zelim da iskontrolisem i proverim da li se i jedan pixel te figure poklapa sa nekim pixelom druge figure. Eh sad ja sam to radio samo sa pixelima ali mi problem sad stvara kad sam ja ubacio linije radi lakseg crtanja. Pokusavao sam da primenim istu metodu kao i jos dosta kombinacija koje sam mislio da bi mogle da upale ali nisam uspeo jer ne kapiram bas to kod linija kako ide pa evo vam koda: Kod za crtanje linija: Code: void D3DGraphics::DrawLine( int x1, int y1, int x2, int y2, int r, int g, int bl ) { int dx = x2 - x1; int dy = y2 - y1; if( abs(dy) > abs(dx)) { if( y1 > y2) { int temp = y2; y2 = y1; y1 = temp; temp = x2; x2 = x1; x1 = temp; } float m = (float)dx / (float)dy; float b = x1 - m*y1; for( int y = y1; y <= y2; y++ ) { int x = m*y + b + 0.5f; PutPixel( x,y,r,g,bl ); } } else { if( x1 > x2) { int temp = y2; y2 = y1; y1 = temp; temp = x2; x2 = x1; x1 = temp; } float m = (float)dy / (float)dx; float b = y1 - m*x1; for( int x = x1; x <= x2; x++ ) { int y = m*x + b + 0.5f; PutPixel( x,y,r,g,bl ); } } } Kod za crtanje prvog i drugog objetka Code: void Game::DrawTank(int xT1, int xY1, int xT2, int xY2) { gfx.DrawLine(910 + xT1, 880 + xY1, 910 + xT2, 800 + xY2, 255, 255, 255); gfx.DrawLine(911 + xT1, 880 + xY1, 911 + xT2, 800 + xY2, 255, 255, 255); gfx.DrawLine(912 + xT1, 880 + xY1, 912 + xT2, 810 + xY2, 255, 255, 255); gfx.DrawLine(913 + xT1, 880 + xY1, 913 + xT2, 810 + xY2, 255, 255, 255); gfx.DrawLine(914 + xT1, 880 + xY1, 914 + xT2, 810 + xY2, 255, 255, 255); gfx.DrawLine(915 + xT1, 880 + xY1, 915 + xT2, 815 + xY2, 255, 255, 255); gfx.DrawLine(916 + xT1, 880 + xY1, 916 + xT2, 815 + xY2, 255, 255, 255); gfx.DrawLine(917 + xT1, 880 + xY1, 917 + xT2, 820 + xY2, 255, 255, 255); gfx.DrawLine(918 + xT1, 880 + xY1, 918 + xT2, 820 + xY2, 255, 255, 255); gfx.DrawLine(919 + xT1, 880 + xY1, 919 + xT2, 830 + xY2, 255, 255, 255); gfx.DrawLine(920 + xT1, 880 + xY1, 920 + xT2, 830 + xY2, 255, 255, 255); gfx.DrawLine(921 + xT1, 880 + xY1, 921 + xT2, 830 + xY2, 255, 255, 255); gfx.DrawLine(922 + xT1, 880 + xY1, 922 + xT2, 830 + xY2, 255, 255, 255); gfx.DrawLine(923 + xT1, 880 + xY1, 923 + xT2, 830 + xY2, 255, 255, 255); gfx.DrawLine(924 + xT1, 880 + xY1, 924 + xT2, 830 + xY2, 255, 255, 255); gfx.DrawLine(909 + xT1, 880 + xY1, 909 + xT2, 800 + xY2, 255, 255, 255); gfx.DrawLine(908 + xT1, 880 + xY1, 908 + xT2, 810 + xY2, 255, 255, 255); gfx.DrawLine(907 + xT1, 880 + xY1, 907 + xT2, 810 + xY2, 255, 255, 255); gfx.DrawLine(906 + xT1, 880 + xY1, 906 + xT2, 810 + xY2, 255, 255, 255); gfx.DrawLine(905 + xT1, 880 + xY1, 905 + xT2, 815 + xY2, 255, 255, 255); gfx.DrawLine(904 + xT1, 880 + xY1, 904 + xT2, 815 + xY2, 255, 255, 255); gfx.DrawLine(903 + xT1, 880 + xY1, 903 + xT2, 820 + xY2, 255, 255, 255); gfx.DrawLine(902 + xT1, 880 + xY1, 902 + xT2, 820 + xY2, 255, 255, 255); gfx.DrawLine(901 + xT1, 880 + xY1, 901 + xT2, 830 + xY2, 255, 255, 255); gfx.DrawLine(900 + xT1, 880 + xY1, 900 + xT2, 830 + xY2, 255, 255, 255); gfx.DrawLine(899 + xT1, 880 + xY1, 899 + xT2, 830 + xY2, 255, 255, 255); gfx.DrawLine(898 + xT1, 880 + xY1, 898 + xT2, 830 + xY2, 255, 255, 255); gfx.DrawLine(897 + xT1, 880 + xY1, 897 + xT2, 830 + xY2, 255, 255, 255); gfx.DrawLine(896 + xT1, 880 + xY1, 896 + xT2, 830 + xY2, 255, 255, 255); } void Game::DrawSpeedUp(int xSU, int ySU) { gfx.PutPixel(1 + xSU, 1 + ySU, 255, 255, 255); gfx.PutPixel(2 + xSU, 1 + ySU, 255, 255, 255); gfx.PutPixel(3 + xSU, 1 + ySU, 255, 255, 255); gfx.PutPixel(4 + xSU, 1 + ySU, 255, 255, 255); gfx.PutPixel(5 + xSU, 1 + ySU, 255, 255, 255); gfx.PutPixel(6 + xSU, 1 + ySU, 255, 255, 255); gfx.PutPixel(7 + xSU, 1 + ySU, 255, 255, 255); gfx.PutPixel(8 + xSU, 1 + ySU, 255, 255, 255); gfx.PutPixel(1 + xSU, 2 + ySU, 255, 255, 255); gfx.PutPixel(2 + xSU, 2 + ySU, 255, 255, 255); gfx.PutPixel(3 + xSU, 2 + ySU, 255, 255, 255); gfx.PutPixel(4 + xSU, 2 + ySU, 255, 255, 255); gfx.PutPixel(5 + xSU, 2 + ySU, 255, 255, 255); gfx.PutPixel(6 + xSU, 2 + ySU, 255, 255, 255); gfx.PutPixel(7 + xSU, 2 + ySU, 255, 255, 255); gfx.PutPixel(8 + xSU, 2 + ySU, 255, 255, 255); gfx.PutPixel(1 + xSU, 3 + ySU, 255, 255, 255); gfx.PutPixel(2 + xSU, 3 + ySU, 255, 255, 255); gfx.PutPixel(3 + xSU, 3 + ySU, 255, 255, 255); gfx.PutPixel(4 + xSU, 3 + ySU, 255, 255, 255); gfx.PutPixel(5 + xSU, 3 + ySU, 255, 255, 255); gfx.PutPixel(6 + xSU, 3 + ySU, 255, 255, 255); gfx.PutPixel(7 + xSU, 3 + ySU, 255, 255, 255); gfx.PutPixel(8 + xSU, 3 + ySU, 255, 255, 255); gfx.PutPixel(1 + xSU, 4 + ySU, 255, 255, 255); gfx.PutPixel(2 + xSU, 4 + ySU, 255, 255, 255); gfx.PutPixel(3 + xSU, 4 + ySU, 255, 255, 255); gfx.PutPixel(4 + xSU, 4 + ySU, 255, 255, 255); gfx.PutPixel(5 + xSU, 4 + ySU, 255, 255, 255); gfx.PutPixel(6 + xSU, 4 + ySU, 255, 255, 255); gfx.PutPixel(7 + xSU, 4 + ySU, 255, 255, 255); gfx.PutPixel(8 + xSU, 4 + ySU, 255, 255, 255); gfx.PutPixel(1 + xSU, 5 + ySU, 255, 255, 255); gfx.PutPixel(2 + xSU, 5 + ySU, 255, 255, 255); gfx.PutPixel(3 + xSU, 5 + ySU, 255, 255, 255); gfx.PutPixel(4 + xSU, 5 + ySU, 255, 255, 255); gfx.PutPixel(5 + xSU, 5 + ySU, 255, 255, 255); gfx.PutPixel(6 + xSU, 5 + ySU, 255, 255, 255); gfx.PutPixel(7 + xSU, 5 + ySU, 255, 255, 255); gfx.PutPixel(8 + xSU, 5 + ySU, 255, 255, 255); gfx.PutPixel(1 + xSU, 6 + ySU, 255, 255, 255); gfx.PutPixel(2 + xSU, 6 + ySU, 255, 255, 255); gfx.PutPixel(3 + xSU, 6 + ySU, 255, 255, 255); gfx.PutPixel(4 + xSU, 6 + ySU, 255, 255, 255); gfx.PutPixel(5 + xSU, 6 + ySU, 255, 255, 255); gfx.PutPixel(6 + xSU, 6 + ySU, 255, 255, 255); gfx.PutPixel(7 + xSU, 6 + ySU, 255, 255, 255); gfx.PutPixel(8 + xSU, 6 + ySU, 255, 255, 255); gfx.PutPixel(1 + xSU, 7 + ySU, 255, 255, 255); gfx.PutPixel(2 + xSU, 7 + ySU, 255, 255, 255); gfx.PutPixel(3 + xSU, 7 + ySU, 255, 255, 255); gfx.PutPixel(4 + xSU, 7 + ySU, 255, 255, 255); gfx.PutPixel(5 + xSU, 7 + ySU, 255, 255, 255); gfx.PutPixel(6 + xSU, 7 + ySU, 255, 255, 255); gfx.PutPixel(7 + xSU, 7 + ySU, 255, 255, 255); gfx.PutPixel(8 + xSU, 7 + ySU, 255, 255, 255); gfx.PutPixel(1 + xSU, 8 + ySU, 255, 255, 255); gfx.PutPixel(2 + xSU, 8 + ySU, 255, 255, 255); gfx.PutPixel(3 + xSU, 8 + ySU, 255, 255, 255); gfx.PutPixel(4 + xSU, 8 + ySU, 255, 255, 255); gfx.PutPixel(5 + xSU, 8 + ySU, 255, 255, 255); gfx.PutPixel(6 + xSU, 8 + ySU, 255, 255, 255); gfx.PutPixel(7 + xSU, 8 + ySU, 255, 255, 255); gfx.PutPixel(8 + xSU, 8 + ySU, 255, 255, 255); } Mesto gde treba da ide provera: Code: if(!PickedSU == true) { if( ovde treba provera za poklapanje) { PickedSU = false; } DrawSpeedUp(150, 500); } Ukoliko neko zna to da mi objasni ali mu trebaju jos neke informacije neka mi napise ovde da mu posaljem cele fajlove sa varijablama za ovo ovde (da vidi gde sam ih definisao) |