Inheritance: AI_Main_02
示例#1
0
        public void MarioLuigiCollisionTest(Mario mario, Luigi luigi, SoundEffects sound)
        {
            Rectangle marioRectangle = myMario.GetRectangle();
            Rectangle luigiRectangle = luigi.GetRectangle();
            Rectangle intersectionRectangle;

            intersectionRectangle = Rectangle.Intersect(marioRectangle, luigiRectangle);

            if (!intersectionRectangle.IsEmpty)
            {
                if (intersectionRectangle.Width > intersectionRectangle.Height)
                {
                    if (marioRectangle.Y > luigiRectangle.Y)
                    {
                        luigi.BoostJump();
                        sound.Bump();

                    }
                    else if (luigiRectangle.Y > marioRectangle.Y)
                    {
                        mario.BoostJump();
                        sound.Bump();
                    }
                }
            }
        }
示例#2
0
        public Tuple<int, bool> EnemyCollisionTest(Luigi luigi, HUD hud, IList<IEnemy> enemies, int x, SoundEffects sound)
        {
            Rectangle luigiRectangle = myLuigi.GetRectangle();
            Rectangle enemyRectangle;
            bool enemyKilled = false;
            bool invincible = myLuigi.Invincible();
            int xpos = x;
            Rectangle intersectionRectangle;
            Queue<IEnemy> doomedEnemies = new Queue<IEnemy>();

            foreach (IEnemy enemy in enemies)
            {

                enemyRectangle = enemy.GetRectangle();
                intersectionRectangle = Rectangle.Intersect(luigiRectangle, enemyRectangle);

                if (!intersectionRectangle.IsEmpty)
                {

                    if (intersectionRectangle.Width >= intersectionRectangle.Height)
                    {
                        sound.Bump();
                        doomedEnemies.Enqueue(enemy);
                        hud.luigiEnemyKill(luigi);
                        enemyKilled = true;
                    }
                    else if (invincible)
                    {
                        doomedEnemies.Enqueue(enemy);
                    }
                    else
                    {
                        myLuigi.Hit();
                        if (luigiRectangle.X < enemyRectangle.X)
                        {
                            xpos = xpos - intersectionRectangle.Width;
                        }
                        else
                        {
                            xpos = xpos + intersectionRectangle.Width;

                        }
                        if (myLuigi.IsDead())
                        {
                            hud.lifeLostLuigi();
                        }
                    }

                }
            }

            while (doomedEnemies.Count() > 0)
            {
                IEnemy enemie = doomedEnemies.Dequeue();
                enemies.Remove(enemie);
            }

            return new Tuple<int,bool>(xpos, enemyKilled);
        }
示例#3
0
 public Level(Difficulty difficulty, List <Map> _map, int time, string title, int number)
 {
     this.difficulty = difficulty;
     _Maps           = _map;
     Time            = time;
     _Mario          = Mario.GetMario();
     _Luigi          = Luigi.GetLuigi();
     Title           = title;
     Number          = number;
     currentMap      = 0;
 }
示例#4
0
        protected override void Draw(GameTime gameTime)
        {
            GraphicsDevice.Clear(backgroundColor);
            spriteBatch.Begin();
            foreach (BackgroundSprite backgroundSprite in backgroundList)
            {
                backgroundSprite.Draw(spriteBatch);
            }
            if (!levelSelected)
            {
                menu.Draw(spriteBatch);
            }
            else
            {
                List <IGameObject> notItemList = new List <IGameObject>();
                foreach (IGameObject gameObj in gameObjects)
                {
                    if (gameObj is IItem)
                    {
                        gameObj.Draw(spriteBatch, Color.White);
                    }
                    else
                    {
                        notItemList.Add(gameObj);
                    }
                }
                foreach (IGameObject miscObj in notItemList)
                {
                    if (!(miscObj is Mario))
                    {
                        miscObj.Draw(spriteBatch, Color.White);
                    }
                }
                Mario.Draw(spriteBatch, Color.White);

                if (isPkMode)
                {
                    Luigi.Draw(spriteBatch, Color.Green);
                    marioHealthBar.Draw(spriteBatch, Mario.health);
                    luigiHealthBar.Draw(spriteBatch, Luigi.health);
                }
                HUD.Draw(spriteBatch);
            }

            spriteBatch.End();
            base.Draw(gameTime);
        }
        public static void SerializeMap()
        {
            int            width = 5000;
            var            map1  = new Map(650, width, @"../../Views/Source/Images/Background/01.png");
            List <MapUnit> temp  = new List <MapUnit>();

            for (int i = 0; i * 100 < width; i++)
            {
                temp.Add(new GeneralWithImageRef(new PointF(i * 100, 570), @"../../Views/Source/Images/Blocks/ground_grass_block.png", 70, 200, "Gound"));
            }
            temp.Add(new GeneralWithImageRef(new PointF(100, 100), @"../../Views/Source/Images/Blocks/brick.png", 50, 50, "Brick"));
            map1.Blocks = temp;
            map1.Coins  = new List <MapUnit>()
            {
                new CoinOrdinary(40, new PointF(100, 200), @"../../Views/Source/Images/Items/Coins/Coin_1.png", new  PointF(30, 30)),
                new CoinOrdinary(60, new PointF(300, 300), @"../../Views/Source/Images/Items/Coins/Coin_1.png", new  PointF(30, 30)),
                new CoinOrdinary(50, new PointF(200, 200), @"../../Views/Source/Images/Items/Coins/Coin_1.png", new  PointF(30, 30))
            };
            map1.Enemies = new List <MapUnit>()
            {
                new GeneralEnemy(new PointF(400, 150), new PointF(50, 50), @"../../Views/Source/Images/Enemies/Koopa/Koopa_Red_Right_1.png"),
                new GeneralEnemy(new PointF(300, 350), new PointF(50, 50), @"../../Views/Source/Images/Enemies/Goomba/Goomba_Normal_1.png")
            };
            map1.Pipes = new List <MapUnit>()
            {
                new PipeGreen(new PointF(400, 150), 200, 100),
                new PipeGreen(new PointF(500, 150), 300, 100)
            };
            //Using Singleton

            var level = new Level(Difficulty.Easy, new List <Map>()
            {
                map1
            }, 200, "Test level", 1);

            level._Mario = Mario.GetMario(new PointF(10, 300), new PointF(50, 50));
            level._Luigi = Luigi.GetLuigi(new PointF(100, 300), new PointF(50, 50));
            Serializer.Serialize("Levels.dat", level);
        }
示例#6
0
 public LuigiEnemyCollision(Luigi luigi)
 {
     myLuigi = luigi;
 }
示例#7
0
 public LuigiItemCollision(Luigi luigi)
 {
     myLuigi = luigi;
 }
示例#8
0
 public LuigiBlockCollision(Luigi luigi)
 {
     myLuigi = luigi;
 }
示例#9
0
        public bool FillMap(Canvas gameCanvas, Image background, StackPanel panel, Mario _Mario, Luigi _Luigi, Difficulty difficulty)
        {
            gameCanvas.Width  = Wigth;
            background.Source = UnitImagesFactory.GetImageSource(BackgrounImageSource);
            GeneralObject.MainFacade.PlayStopSound(GeneralObject._backgroundPlayer, Facade.playingCommand.play, SoundSource, Facade.PlayingType.loop);
            FillingBackground(panel, gameCanvas, background);
            foreach (Coin coin in Coins)
            {
                coin.ImageController         = new Image();
                coin.ImageController.Source  = UnitImagesFactory.GetImageSource(coin.Image);
                coin.ImageController.Width   = coin.ImageSize.X;
                coin.ImageController.Height  = coin.ImageSize.Y;
                coin.ImageController.Stretch = Stretch.Fill;
                Canvas.SetTop(coin.ImageController, coin.Position.Y);
                Canvas.SetLeft(coin.ImageController, coin.Position.X);
                gameCanvas.Children.Add(coin.ImageController);
            }
            foreach (Block block in Blocks)
            {
                block.ImageController         = new Image();
                block.ImageController.Source  = UnitImagesFactory.GetImageSource(block.Image);
                block.ImageController.Width   = block.ImageSize.X;
                block.ImageController.Height  = block.ImageSize.Y;
                block.ImageController.Stretch = Stretch.Fill;
                Canvas.SetTop(block.ImageController, block.Position.Y);
                Canvas.SetLeft(block.ImageController, block.Position.X);
                gameCanvas.Children.Add(block.ImageController);
            }
            foreach (Pipe pipe in Pipes)
            {
                pipe.ImageController         = new Image();
                pipe.ImageController.Source  = UnitImagesFactory.GetImageSource(pipe.Image);
                pipe.ImageController.Width   = pipe.ImageSize.X;
                pipe.ImageController.Height  = pipe.ImageSize.Y;
                pipe.ImageController.Stretch = Stretch.Fill;
                Canvas.SetTop(pipe.ImageController, pipe.Position.Y);
                Canvas.SetLeft(pipe.ImageController, pipe.Position.X);
                gameCanvas.Children.Add(pipe.ImageController);
            }
            foreach (Bonus bonus in Bonuses)
            {
                bonus.ImageController         = new Image();
                bonus.ImageController.Source  = UnitImagesFactory.GetImageSource(bonus.Image);
                bonus.ImageController.Width   = bonus.ImageSize.X;
                bonus.ImageController.Height  = bonus.ImageSize.Y;
                bonus.ImageController.Stretch = Stretch.Fill;
                Canvas.SetTop(bonus.ImageController, bonus.Position.Y);
                Canvas.SetLeft(bonus.ImageController, bonus.Position.X);
                gameCanvas.Children.Add(bonus.ImageController);
            }
            List <MapUnit> enemy_additional = new List <MapUnit>();

            foreach (Enemy enemy in Enemies)
            {
                int quantity = 0;
                if (difficulty.Equals(Difficulty.Middle))
                {
                    quantity = 1;
                }
                if (difficulty.Equals(Difficulty.Hard))
                {
                    quantity = 2;
                }
                enemy.ImageController         = new Image();
                enemy.ImageController.Source  = UnitImagesFactory.GetImageSource(enemy.Image);
                enemy.ImageController.Width   = enemy.ImageSize.X;
                enemy.ImageController.Height  = enemy.ImageSize.Y;
                enemy.ImageController.Stretch = Stretch.Fill;
                Canvas.SetTop(enemy.ImageController, enemy.Position.Y);
                Canvas.SetLeft(enemy.ImageController, enemy.Position.X);
                gameCanvas.Children.Add(enemy.ImageController);
                for (int i = 0; i < quantity; i++)
                {
                    var new_enemy = enemy.Clone();
                    var temp      = MapUnit.CheckOut(new_enemy.Position.X + GeneralObject.cellSize.X, new_enemy.Position.Y, GeneralObject._gameModel.CurrentLevel, null);
                    if (temp == null)
                    {
                        new_enemy.Position = UnitImagesFactory.GetPosition(new_enemy.Position.X + GeneralObject.cellSize.X, new_enemy.Position.Y);
                    }
                    else
                    {
                        temp = MapUnit.CheckOut(new_enemy.Position.X, new_enemy.Position.Y + GeneralObject.cellSize.Y, GeneralObject._gameModel.CurrentLevel, null);
                        if (temp == null)
                        {
                            new_enemy.Position = UnitImagesFactory.GetPosition(new_enemy.Position.X, new_enemy.Position.Y + GeneralObject.cellSize.Y);
                        }
                        else
                        {
                            temp = MapUnit.CheckOut(new_enemy.Position.X, new_enemy.Position.Y - GeneralObject.cellSize.Y, GeneralObject._gameModel.CurrentLevel, null);
                            if (temp == null)
                            {
                                new_enemy.Position = UnitImagesFactory.GetPosition(new_enemy.Position.X, new_enemy.Position.Y - GeneralObject.cellSize.Y);
                            }
                            else
                            {
                                temp = MapUnit.CheckOut(new_enemy.Position.X - GeneralObject.cellSize.X, new_enemy.Position.Y, GeneralObject._gameModel.CurrentLevel, null);
                                if (temp == null)
                                {
                                    new_enemy.Position = UnitImagesFactory.GetPosition(new_enemy.Position.X - GeneralObject.cellSize.X, new_enemy.Position.Y);
                                }
                            }
                        }
                    }
                    if (!new_enemy.Position.Equals(enemy.Position))
                    {
                        new_enemy.ImageController.Width   = new_enemy.ImageSize.X;
                        new_enemy.ImageController.Height  = new_enemy.ImageSize.Y;
                        new_enemy.ImageController.Stretch = Stretch.Fill;
                        Canvas.SetTop(new_enemy.ImageController, new_enemy.Position.Y);
                        Canvas.SetLeft(new_enemy.ImageController, new_enemy.Position.X);
                        enemy_additional.Add(new_enemy);
                        gameCanvas.Children.Add(new_enemy.ImageController);
                    }
                }
            }
            foreach (var enemy in enemy_additional)
            {
                Enemies.Add(enemy);
            }
            if (_Mario != null)
            {
                _Mario.ImageController         = new Image();
                _Mario.ImageController.Source  = UnitImagesFactory.GetImageSource(_Mario.Image);
                _Mario.ImageController.Width   = _Mario.ImageSize.X;
                _Mario.ImageController.Height  = _Mario.ImageSize.Y;
                _Mario.ImageController.Stretch = Stretch.Fill;
                Canvas.SetTop(_Mario.ImageController, _Mario.Position.Y);
                Canvas.SetLeft(_Mario.ImageController, _Mario.Position.X);
                Panel.SetZIndex(_Mario.ImageController, 5);
                gameCanvas.Children.Add(_Mario.ImageController);
            }
            if (_Luigi != null && (GeneralObject._gameViewModel._quantity.Equals("Two") || GeneralObject.OnMap))
            {
                _Luigi.ImageController         = new Image();
                _Luigi.ImageController.Source  = UnitImagesFactory.GetImageSource(_Luigi.Image);
                _Luigi.ImageController.Width   = _Luigi.ImageSize.X;
                _Luigi.ImageController.Height  = _Luigi.ImageSize.Y;
                _Luigi.ImageController.Stretch = Stretch.Fill;
                Canvas.SetTop(_Luigi.ImageController, _Luigi.Position.Y);
                Canvas.SetLeft(_Luigi.ImageController, _Luigi.Position.X);
                Panel.SetZIndex(_Luigi.ImageController, 5);
                gameCanvas.Children.Add(_Luigi.ImageController);
            }
            return(true);
        }