Exemple #1
0
    public FieldModel()
    {
        Length = GameSettings.FieldLength;
        Width  = GameSettings.FieldWidth;

        DefenseRodHost  = new RodModel(PlayerType.Host, RodType.Defense, GameSettings.DefenseRodHostTag, GameSettings.DefenseRodHostColumn);
        OffenseRodHost  = new RodModel(PlayerType.Host, RodType.Offense, GameSettings.OffenseRodHostTag, GameSettings.OffenseRodHostColumn);
        DefenseRodGuest = new RodModel(PlayerType.Guest, RodType.Defense, GameSettings.DefenseRodGuestTag, GameSettings.DefenseRodGuestColumn);
        OffenseRodGuest = new RodModel(PlayerType.Guest, RodType.Offense, GameSettings.OffenseRodGuestTag, GameSettings.OffenseRodGuestColumn);

        Ball = new BallModel(Width / 2, Length / 2);
    }
Exemple #2
0
 public RodModelVM(RodModel model, SKCanvasView surface)
 {
     this.model   = model;
     this.surface = new ModelViewSurface(this, surface);
 }
    private static void ControlRod(PlayerType Player, FieldModel Field, RodModel Rod, Command Decision)
    {
        Anticipate Anticipated = Field.Ball.getRowIntersection(Rod.Column);
        int        Coeff       = Player == PlayerType.Host ? 1 : -1;

        if (Anticipated.Row == -1)
        {
            if (Rod.Position == RodPosition.Top)
            {
                Decision.MoveDown(Rod.Type);
            }
            else if (Rod.Position == RodPosition.Bottom)
            {
                Decision.MoveUp(Rod.Type);
            }
            else
            {
                Decision.NoAction(Rod.Type);
            }
            return;
        }

        if (!Rod.RowInPlayerReach(Anticipated.Row))
        {
            // move to AnticipateDefend.Row
            if (Rod.Position == RodPosition.Middle && Anticipated.Row >= 6)
            {
                Decision.MoveDown(Rod.Type);
            }
            else if (Rod.Position == RodPosition.Middle)
            {
                Decision.MoveUp(Rod.Type);
            }
            else if (Rod.Position == RodPosition.Top)
            {
                Decision.MoveDown(Rod.Type);
            }
            else
            {
                Decision.MoveUp(Rod.Type);
            }
            return;
        }

        if (!Anticipated.Near)
        {
            Decision.NoAction(Rod.Type);
            return;
        }

        //Check here
        // Here the ball is in reach and the rod is in position and ready to shoot
        if (Anticipated.Column == (-1 * Coeff) && !(Player == PlayerType.Guest && Field.Ball.Column == 5))
        {
            Decision.Kick(Rod.Type, DIRECTION.FORWARD, 1);
            return;
        }

        if (Anticipated.Column == 0)
        {
            Decision.Kick(Rod.Type, getKickDirection(Player, Anticipated.Row, 1), 1);
        }

        if (Anticipated.Column == (1 * Coeff))
        {
            if (Rod.Type == RodType.Defense)
            {
                Decision.Kick(Rod.Type, getKickDirection(Player, Anticipated.Row, 5), 5);
            }
            else
            {
                Decision.Kick(Rod.Type, getGoalDirection(Player, Anticipated.Row), 5);
            }
        }
    }