Esempio n. 1
0
 protected BaseFloodItAI(TurnMadeComponent turn, PlayerSwitcherComponent switcher)
 {
     this.turn     = turn;
     this.switcher = switcher;
     this.startX   = this.turn.PlayerX;
     this.startY   = this.turn.PlayerY;
 }
Esempio n. 2
0
        private void InitPlayer(
            LocomotorECS.Entity player,
            TurnMadeComponent playerTurn,
            PlayerSwitcherComponent switcher,
            string selectedValue,
            int[,] fieldMap)
        {
            player.RemoveComponent <AIComponent>();
            player.RemoveComponent <InputMouseComponent>();
            player.RemoveComponent <InputTouchComponent>();
            switch (selectedValue)
            {
            case "User":
                player.AddComponent <InputMouseComponent>();
                player.AddComponent <InputTouchComponent>();
                break;

            case "Easy":
                player.AddComponent <AIComponent>().AIBot = new StateMachine <int[, ]>(fieldMap, new RandomFloodItAI(playerTurn, switcher));
                break;

            case "Med.":
                player.AddComponent <AIComponent>().AIBot = new StateMachine <int[, ]>(fieldMap, new LineFloodItAI(playerTurn, switcher));
                break;

            case "Hard":
                player.AddComponent <AIComponent>().AIBot = new StateMachine <int[, ]>(fieldMap, new GreedyFloodItAI(playerTurn, switcher));
                break;
            }
        }
Esempio n. 3
0
        private bool TryMakeTurn(
            int[,] fieldMap,
            PlayerSwitcherComponent switcher,
            Entity fieldEntity,
            Vector2 cursorPosition,
            TurnMadeComponent turn)
        {
            var position = fieldEntity.GetComponent <PositionComponent>();
            var field    = fieldEntity.GetComponent <FieldComponent>();
            var map      = field.Map;

            var location = (cursorPosition - position.Position) / (field.BlockSize + field.BlockInterval);
            var x        = (int)Math.Floor(location.X);
            var y        = (int)Math.Floor(location.Y);

            if (!this.IsInMap(map, x, y))
            {
                return(false);
            }

            for (var index = 0; index < switcher.Players.Count; index++)
            {
                var otherTurns = switcher.Players[index];
                if (map[x, y] == field.Map[otherTurns.PlayerX, otherTurns.PlayerY])
                {
                    var common = this.scene.FindEntity("Common");
                    common.GetComponent <CameraShakeComponent>().Shake();
                    return(true);
                }
            }

            turn.Color    = map[x, y];
            turn.TurnMade = true;
            return(true);
        }
Esempio n. 4
0
 public GreedyFloodItAI(TurnMadeComponent turn, PlayerSwitcherComponent switcher)
     : base(turn, switcher)
 {
 }