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 );
}
}
}
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);
}
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);
}
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)