private bool Cosak(Loptica ball, int i, int j) { Rectangle blok = bricks[i, j].Blok; Ellipse lopta = ball.Ell; double levo_blok = Canvas.GetLeft(bricks[i, j].Blok); double gore_blok = Canvas.GetTop(bricks[i, j].Blok); double levo_lopta = Canvas.GetLeft(ball.Ell); double gore_lopta = Canvas.GetTop(ball.Ell); if ((levo_blok + blok.Width <= levo_lopta + lopta.Width && (gore_lopta + lopta.Height > gore_blok || gore_lopta < gore_blok)) || (levo_blok <= levo_lopta + lopta.Width && (gore_lopta + lopta.Height > gore_blok || gore_lopta < gore_blok))) { if (ball.Ugao >= 0) { if (levo_blok + blok.Width <= levo_lopta + lopta.Width) { ball.Odbij_Gore_Dole(); } if (levo_blok <= levo_lopta + lopta.Width) { ball.Ugao = 180 + ball.Ugao; } } else { if (levo_blok + blok.Width <= levo_lopta + lopta.Width) { ball.Ugao = 180 + ball.Ugao; } if (levo_blok <= levo_lopta + lopta.Width) { ball.Odbij_Gore_Dole(); } } return(true); } return(false); }
public bool Pogodjen(Loptica ball, Igrac igrac, ref int score, Label lb, ref bool rad) { for (int i = 0; i < bricks.GetLength(0); i++) { for (int j = 0; j < bricks.GetLength(1); j++) { if (bricks[i, j] == null) { continue; } Rectangle blok = bricks[i, j].Blok; Ellipse lopta = ball.Ell; double circleR = lopta.Width / 2; double levo_blok = Canvas.GetLeft(bricks[i, j].Blok); double gore_blok = Canvas.GetTop(bricks[i, j].Blok); double levo_lopta = Canvas.GetLeft(ball.Ell); double gore_lopta = Canvas.GetTop(ball.Ell); double halfX = blok.Width / 2; double halfY = blok.Height / 2; double lopta_centarX = levo_lopta + lopta.Width / 2; double lopta_centarY = gore_lopta + lopta.Height / 2; double centerX = lopta_centarX - (levo_blok + halfX); double centerY = lopta_centarY - (gore_blok + halfY); double sideX = Math.Abs(centerX) - halfX; double sideY = Math.Abs(centerY) - halfY; if (sideX < 0 || sideY < 0) { if (Math.Abs(sideX) < circleR && sideY < 0) { ball.Odbij_Desno_Levo(); if (bricks[i, j].Pogodjen(ref score, lb)) { cnv.Children.Remove(bricks[i, j].Blok); bricks[i, j] = null; } bool p = false; ball.Pomeraj(cnv.Width, cnv.Height, igrac, ref p); return(LevelUp_Myb(ball, ref rad)); } else if (Math.Abs(sideY) < circleR && sideX < 0) { ball.Odbij_Gore_Dole(); if (bricks[i, j].Pogodjen(ref score, lb)) { cnv.Children.Remove(bricks[i, j].Blok); bricks[i, j] = null; } bool p = false; ball.Pomeraj(cnv.Width, cnv.Height, igrac, ref p); return(LevelUp_Myb(ball, ref rad)); } } if (sideX * sideX + sideY * sideY < circleR * circleR) { ball.Odbij_Gore_Dole(); ball.Odbij_Desno_Levo(); if (bricks[i, j].Pogodjen(ref score, lb)) { cnv.Children.Remove(bricks[i, j].Blok); bricks[i, j] = null; } bool p = false; ball.Pomeraj(cnv.Width, cnv.Height, igrac, ref p); return(LevelUp_Myb(ball, ref rad)); } /*if (gore_blok + blok.Height >= gore_lopta && gore_blok <= gore_lopta + lopta.Height) * { * //MessageBox.Show("cao"); * if (levo_blok + blok.Width >= levo_lopta && levo_blok <= levo_lopta + lopta.Width) * { * //if (!Cosak(ball, i, j)) * { * if (levo_blok + blok.Width <= levo_lopta + lopta.Width || levo_lopta < levo_blok) * ball.Odbij_Desno_Levo(); * if (gore_lopta + lopta.Height > gore_blok || gore_lopta < gore_blok) * ball.Odbij_Gore_Dole(); * } * * double dy = gore_blok - gore_lopta; * dy = Math.Abs(dy); * if(dy<blok.Height-3) * { * ball.Odbij_Desno_Levo(); * } * else * { * if (gore_lopta + lopta.Height > gore_blok || gore_lopta < gore_blok) * ball.Odbij_Gore_Dole(); * } * * //if (gore_lopta + lopta.Height > gore_blok || gore_lopta < gore_blok) * ball.Odbij_Gore_Dole(); * else * if (levo_blok + blok.Width <= levo_lopta + lopta.Width || levo_lopta < levo_blok) * ball.Odbij_Desno_Levo(); * * * * if (bricks[i, j].Pogodjen()) * { * cnv.Children.Remove(bricks[i, j].Blok); * bricks[i, j] = null; * } * bool p = false; * ball.Pomeraj(cnv.Width,cnv.Height,igrac,ref p); * return; * } * }*/ } } return(false); }