public MainWindow() { InitializeComponent(); gameTimer.Interval = TimeSpan.FromMilliseconds(15); gameTimer.Tick += GameLoop; gameTimer.Start(); MyCanvas.Focus(); MyCanvas.Background = SpriteFactory.getSprite("background").getImageBrush(); player.Fill = SpriteFactory.getSprite("player").getImageBrush(); }
private void GameLoop(object sender, EventArgs e) { Menu menu = Owner as Menu; if (menu != null && dificultSet == false) { SetDificultLevel(menu.dificultLevel); dificultSet = true; } playerHitBox = new Rect(Canvas.GetLeft(player), Canvas.GetTop(player), player.Width, player.Height); enemyCounter -= 1; scoreText.Content = "Score: " + score; damageText.Content = "Damage: " + damage; if (enemyCounter < 0) { MyCanvas.Children.Add(SpriteFactory.getSprite("enemy").getRectangle()); enemyCounter = limit; } #region Move player sprite if (moveLeft == true && Canvas.GetLeft(player) > 0) { Canvas.SetLeft(player, Canvas.GetLeft(player) - playerSpeed); } if (moveRight == true && Canvas.GetLeft(player) + 90 < Application.Current.MainWindow.Width) { Canvas.SetLeft(player, Canvas.GetLeft(player) + playerSpeed); } #endregion #region Damage and Score updates foreach (var x in MyCanvas.Children.OfType <Rectangle>()) { if (x is Rectangle && (string)x.Tag == "bullet") { Canvas.SetTop(x, Canvas.GetTop(x) - 20); Rect bulletHitBox = new Rect(Canvas.GetLeft(x), Canvas.GetTop(x), x.Width, x.Height); if (Canvas.GetTop(x) < 40) { itemRemover.Add(x); } foreach (var y in MyCanvas.Children.OfType <Rectangle>()) { if (y is Rectangle && (string)y.Tag == "enemy") { Rect enemyHit = new Rect(Canvas.GetLeft(y), Canvas.GetTop(y), y.Width, y.Height); if (bulletHitBox.IntersectsWith(enemyHit)) { itemRemover.Add(x); itemRemover.Add(y); score++; scoreFlag = true; } } } } if (x is Rectangle && (string)x.Tag == "enemy") { Canvas.SetTop(x, Canvas.GetTop(x) + enemySpeed); if (Canvas.GetTop(x) > 750) { itemRemover.Add(x); damage += 10; } Rect enemyHitBox = new Rect(Canvas.GetLeft(x), Canvas.GetTop(x), x.Width, x.Height); if (playerHitBox.IntersectsWith(enemyHitBox)) { itemRemover.Add(x); damage += 5; } } } #endregion foreach (Rectangle i in itemRemover) { MyCanvas.Children.Remove(i); } if (score % 20 == 0 && scoreFlag) { limit = limit - 5; playerSpeed = playerSpeed + 1; enemySpeed = enemySpeed + 1; scoreFlag = false; } if (overheating && persentage > 0) { shootsText.Content = "Coll it down..." + persentage; shootsText.Foreground = Brushes.Blue; persentage -= 1; } if (persentage <= 0) { persentage = maxPersentage; overheating = false; shoots = 0; shootsText.Foreground = Brushes.Black; shootsText.Content = "Overgeating: 0%"; } if (damage > 99) { gameTimer.Stop(); damageText.Content = "Damage: 100"; damageText.Foreground = Brushes.Red; MessageBox.Show("You have destroyed " + score + " enemies!" + Environment.NewLine + "Press OK to play again", "Game over"); System.Diagnostics.Process.Start(Application.ResourceAssembly.Location); Application.Current.Shutdown(); } }