Ejemplo n.º 1
0
        public TankData(long ownerId, Tank tank)
        {
            OwnerId = ownerId;
            ServerId = (int)tank.ServerId;
            Transform = tank.GetTransform();
            WorldTransform = tank.WorldTransform;
            Velocity = tank.GetVelocity();
            WorldVelocity = tank.WorldVelocity;
            TurretTransform = tank.Turret.GetTransform();
            TurretWorldTransform = tank.Turret.GetWorldTransform();

            GunFiredTime = tank.GunFiredTime;
        }
Ejemplo n.º 2
0
        public void UpdateTank(Tank tank)
        {
            NetworkHelper.SetServerId(tank, ServerId);
            tank.SetTransform(Transform);
            tank.SetVelocity(Velocity);
            tank.WorldTransform = WorldTransform;
            tank.WorldVelocity = WorldVelocity;

            foreach (SceneNode node in tank.Children)
            {
                node.WorldTransform = WorldTransform;
                node.WorldVelocity = WorldVelocity;
            }

            tank.Turret.SetTransform(TurretTransform);
            tank.Turret.WorldTransform = TurretWorldTransform;

            tank.GunFiredTime = GunFiredTime;
        }
Ejemplo n.º 3
0
        protected override void Initialize()
        {
            this.Window.Title = "Tank Diggity";

            uiManager = new UIManager(this);
            Components.Add(uiManager);

            screenManager = new ScreenManager(this);
            Components.Add(screenManager);

            soundManager = new SoundManager(this);
            Components.Add(soundManager);
            
            tankPos = new Vector2(60, 785);
            turretPos = new Vector2(tankPos.X + 45, tankPos.Y + 25);
            player1Tank = new Tank(this, tankPos,(float)Math.PI / 2);
            Components.Add(player1Tank);

            tankPos2 = new Vector2(2048 - 140, 785);
            turretPos2 = new Vector2(tankPos2.X + 45, tankPos.Y + 10);
            player2Tank = new Tank(this, tankPos2,-(float)Math.PI / 2);
            Components.Add(player2Tank);

            currentTank = player1Tank;

            camera = new Camera2d(graphics.GraphicsDevice);

            background = new Background(this);
            Components.Add(background);          

            powerUpManager = new PowerUpManager(this);
            Components.Add(powerUpManager);

            power = 0;

            chargingShot = false;
            chargingShot2 = false;
            shotFired = false;
            shotCollided = false;
            turnOver = false;
            gameRunning = false;
            rightSwap = false;
            leftSwap = false;
            debugGame = false;

            controller = GamePad.GetState(PlayerIndex.One);

            base.Initialize();
        }
Ejemplo n.º 4
0
        private void tankCollision(Tank player1Tank, Tank player2Tank)
        {
            if (player1Tank.tankPosition.X <= player2Tank.tankPosition.X)
            {
                if (player1Tank.collisionRect.Intersects(player2Tank.collisionRect))
                {
                    player1Tank.collideRight = false;
                    player2Tank.collideLeft = false;
                }

                if (!(player1Tank.collisionRect.Intersects(player2Tank.collisionRect)))
                {
                    player1Tank.collideRight = true;
                    player2Tank.collideLeft = true;
                }
            }

            if (player1Tank.tankPosition.X >= player2Tank.tankPosition.X)
            {
                if (player1Tank.collisionRect.Intersects(player2Tank.collisionRect))
                {
                    player2Tank.collideRight = false;
                    player1Tank.collideLeft = false;
                }

                if (!(player1Tank.collisionRect.Intersects(player2Tank.collisionRect)))
                {
                    player1Tank.collideLeft = true;
                    player2Tank.collideRight = true;
                }
            }
        }
Ejemplo n.º 5
0
        public void endTurn(Tank currentTank)
        {
            if (currentTank.tankPosition.X < 600)
            {
                camera.lookAt(new Vector2(600, player1Tank.getTankPos().Y + FIELD_HEIGHT_OFFSET));
                camera.Origin.X = GraphicsDevice.Viewport.Width / 2.0f;
            }

            if (currentTank.tankPosition.X > 1400)
            {
                camera.lookAt(new Vector2(1400, player2Tank.getTankPos().Y + FIELD_HEIGHT_OFFSET));
                camera.Origin.X = 1400;
            }

            player1Tank.takingTurn = false;
            player2Tank.takingTurn = false;
        }
Ejemplo n.º 6
0
        public void changeTurn()
        {
            if (screenManager.currentState == ScreenManager.GameState.PLAYER1 || debugGame)
            {
                currentTank = player1Tank;
                controller = GamePad.GetState(PlayerIndex.One);

                if (debugGame)
                {
                    player1Tank.inventory.debugShot();
                }
            }
            else if (screenManager.currentState == ScreenManager.GameState.PLAYER2)
            {
                currentTank = player2Tank;
                controller = GamePad.GetState(PlayerIndex.Two);
            }

            endTurn(currentTank);
            currentTank.takingTurn = true;
            currentTank.controller = controller;
            if (debugGame)
            {
                currentTank.moveLimit = 99;
                currentTank.turnTime = 99;
            }
            else
            {
                currentTank.moveLimit = 3;
                currentTank.turnTime = 20;
            }
            shotPause = 0;
            uiManager.resetPowerBar();
            uiManager.resetMove();
            shotFired = false;
            shotCollided = false;
            turnOver = false;

            if (turnsTaken > 0)
            {
                lerpCamera = true;
            }

            if(!currentTank.firstShot)
            {
                currentTank.showPreviousShotLine = true;
            }

            gameRunning = true;
        }
Ejemplo n.º 7
0
        private void shieldLogic(Tank tank, Tank otherTank, PowerUp powerUp)
        {
            shieldHealthRect.X = (int)tank.getTankPos().X - 20;
            shieldHealthRect.Y = (int)tank.getTankPos().Y - 40;
            ShieldLayer.powerUpPosition = tank.getTankPos() - new Vector2(8, 20);
            if (powerUp.collisionRect.Intersects(otherTank.bullet.collisionRect))
            {
                otherTank.bullet.outOfBounds = true;
                if (otherTank.bullet.type == BulletType.TeleportShot)
                    otherTank.bullet.speed.X = -(otherTank.bullet.speed.X);

                shieldHealth -= otherTank.bullet.damage / 10;
                shieldHealthRect.Width = shieldHealth;
                game.soundManager.shieldHit.Play();

                if (shieldHealth <= 100)
                    ShieldLayer.powerUpPic = Game.Content.Load<Texture2D>(@"Images/BrokenShield");

                if (shieldHealth <= 0)
                {
                    game.soundManager.shieldBreaking.Play();
                    powerList.Remove(powerUp);
                    shieldActive = false;
                    play1HasShield = false;
                    play2HasShield = false;
                }
            }
        }
Ejemplo n.º 8
0
 public void PowerUpEffect(PowerUp powerUp, Tank tank)
 {
     if (powerUp == Health)
     {
         game.uiManager.floatingPowerUpText("+100 Health", tank.getTankPos());
         tank.healTank(100);
     }
     if (powerUp == HeavyShot)
     {
         game.uiManager.floatingPowerUpText("Heavy Shot +1", tank.getTankPos());
         tank.inventory.incrementShot(BulletType.HeavyShot);
     }
     if (powerUp == ScatterShot)
     {
         game.uiManager.floatingPowerUpText("ScatterShot +1", tank.getTankPos());
         tank.inventory.incrementShot(BulletType.ScatterShot);
     }
     if (powerUp == ExtraMovement)
     {
         game.uiManager.floatingPowerUpText("Move Limit +3", tank.getTankPos());
         tank.moveLimit += 3;
     }
     if (powerUp == ShieldPower)
     {
         game.uiManager.floatingPowerUpText("Shield", tank.getTankPos());
         updateShield(tank.getTankPos());
     }
 }
Ejemplo n.º 9
0
        public void PowerUpCollision(Tank tank, Tank otherTank)
        {
            for (int i = 0; i < powerList.Count; i++)
            {
                if (play1HasShield == true)
                {
                    shieldLogic(tank, otherTank, powerList[i]);
                }

                if (play2HasShield == true)
                {
                    shieldLogic(otherTank, tank, powerList[i]);
                }

                if (powerList.Count == 1)
                {
                    if (powerList[i].collisionRect.Intersects(tank.collisionRect) & (powerList[i] != ShieldLayer))
                    {
                        game.soundManager.powerUpPickUp.Play();
                        PowerUpEffect(powerList[i], tank);
                        powerList.RemoveAt(i);
                        if (shieldActive == true)
                            play1HasShield = true;
                    }
                }

                if (powerList.Count == 1)
                {
                    if (powerList[i].collisionRect.Intersects(otherTank.collisionRect) & (powerList[i] != ShieldLayer))
                    {
                        game.soundManager.powerUpPickUp.Play();
                        PowerUpEffect(powerList[i], otherTank);
                        powerList.RemoveAt(i);
                        if (shieldActive == true)
                            play2HasShield = true;
                    }
                }
            }
        }
Ejemplo n.º 10
0
 public void Shoot(ref Tank enemy) // метод стрельбы
 {
     enemy.health = enemy.health - damage + enemy.armor;
 }
Ejemplo n.º 11
0
        static void Main(string[] args)
        {
            Console.WriteLine("Игра Перестрелка ");
            Tank   player = new Tank("Танк игрока", 5, 100, 25);     // танк игрока
            Tank   ai     = new Tank("Танк противника", 5, 100, 25); // танк компьютера
            int    i      = 1;
            string key;
            int    amount = 10; // величина починки

            key = Console.ReadLine();
            Random rnd = new Random();

            while (player.GetHealth() > 0 && ai.GetHealth() > 0) // условие победы
            {
                Console.WriteLine($"Раунд {i}");                 // вывод номера раунда

                {
                    do                   // начало валидации пользовательского ввода
                    {
                        player.PrintInfo();
                        ai.PrintInfo();
                        Console.WriteLine();
                        Console.WriteLine("Выберите действие");
                        Console.WriteLine("1. Выстрелить");
                        Console.WriteLine("2. Починка");
                        Console.WriteLine();
                        key = Console.ReadLine();
                        if (key != "1" && key != "2")
                        {
                            Console.WriteLine("Неизвестное действие, введите номер действия из списка");
                        }
                    }while (key != "1" && key != "2"); // конец пользовательского ввода
                }
                if (key == "1")
                {
                    player.Shoot(ref ai);
                }
                else if (key == "2")
                {
                    player.Repair(amount);
                }
                if (ai.GetHealth() <= 0)
                {
                    break;
                }
                int aim = rnd.Next(1, 3);
                if (aim == 1)
                {
                    ai.Shoot(ref player);
                    Console.WriteLine("Противник стреляет");
                }
                else if (aim == 2)
                {
                    ai.Repair(amount);
                    Console.WriteLine("Противник чинится");
                }
                i++;
            }
            if (player.GetHealth() > 0 || ai.GetHealth() <= 0)
            {
                Console.WriteLine("Игрок победил");
            }
            else if (player.GetHealth() <= 0 || ai.GetHealth() > 0)
            {
                Console.WriteLine("Противник победил");
            }
            Console.ReadKey();
        }