Ejemplo n.º 1
0
        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();
        }
Ejemplo n.º 2
0
        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();
            }
        }