private void moveBalls() { for (int index = 0; index < balls.Count; index++) { Collide.wall(balls[index], acc[index], leftBound, 'l'); Collide.wall(balls[index], acc[index], rightBound, 'r'); Collide.wall(balls[index], acc[index], topBound, 't'); double xmov = acc[index][0] * Math.Cos((acc[index][1] * Math.PI) / 180); double ymov = acc[index][0] * Math.Sin((acc[index][1] * Math.PI) / 180); balls[index].Margin = new Thickness(balls[index].Margin.Left + xmov, 0, 0, balls[index].Margin.Bottom + ymov); } }
private void dispatcherTimer_Tick(object sender, object e) { MovePaddles(); acceleration[0] = acceleration[0] < 0 ? 0 : acceleration[0]; acceleration[0] = acceleration[0] > 10 ? 10 : acceleration[0]; if (paused) { acceleration[0] = 0; } EnsurePaddleIsInBounds(BottomPaddle); hitBrickCheck(); if (power != null) { int rem = -1; for (int index = 0; index < power.Count; index++) { if (Collide.hit(power[index], poweracc[index], BottomPaddle)) { Grid.Children.Remove(power[index]); poweracc.RemoveAt(index); power.RemoveAt(index); powerCount.Add(10); BottomPaddle.Width = BottomPaddle.Width * 1.5; } else if (power[index].Margin.Bottom < paddleTop - 5) { Grid.Children.Remove(power[index]); poweracc.RemoveAt(index); power.RemoveAt(index); } else { double mov = poweracc[index][0] * Math.Sin((poweracc[index][1] * Math.PI) / 180); power[index].Margin = new Thickness(power[index].Margin.Left, 0, 0, power[index].Margin.Bottom + mov); } } for (int index = 0; index < powerCount.Count; index++) { if (powerCount[index] <= 0) { rem = index; } } if (rem != -1) { powerCount.RemoveAt(rem); BottomPaddle.Width = (BottomPaddle.Width * 2) / 3; } } if (count >= options_ballCount && add) { count = 0; addBall(paddleTop + 20, leftBound + 20, getRandomColor()); acc.Add(new List <int>() { 5, 40 + random.Next(-10, 10) }); } BallFall(); double bottom = Ball.Margin.Bottom; if (bottom < paddleTop - 5) { timer.Stop(); ElementSoundPlayer.Play(ElementSoundKind.GoBack); Frame.Navigate(typeof(Start), new Passing { color = getRandomColor(), text = "Game Over", size = 48 }); g_ply.Stop(); //end music } if (bricks.Count == 0) { timer.Stop(); ElementSoundPlayer.Play(ElementSoundKind.GoBack); Frame.Navigate(typeof(Start), new Passing { color = getRandomColor(), text = "Game Won", size = 48 }); } moveBalls(); for (int index = 0; index < balls.Count; index++) { Collide.hit(balls[index], acc[index], BottomPaddle); } Collide.wall(Ball, acceleration, leftBound, 'l'); Collide.wall(Ball, acceleration, rightBound, 'r'); Collide.wall(Ball, acceleration, topBound, 't'); Collide.hit(Ball, acceleration, BottomPaddle); // x left-right: cos y up-down: sin // !! remeber, 0 deg is --> NOT NORTH !! double xmov = acceleration[0] * Math.Cos((acceleration[1] * Math.PI) / 180); double ymov = acceleration[0] * Math.Sin((acceleration[1] * Math.PI) / 180); Ball.Margin = new Thickness(Ball.Margin.Left + xmov, 0, 0, Ball.Margin.Bottom + ymov); }