コード例 #1
0
ファイル: ShipViewModel.Movement.cs プロジェクト: hnjm/flight
        public void TrackTarget()
        {
            Direction dir = Direction.Directions[0];

            if (this.TargetShip.CurrentPosition.X > this.CurrentPosition.X)
            {
                dir = Universal.GetRandomItem(Direction.Directions.Where(d => d.Id.Contains('E')).ToList());
            }

            if (this.TargetShip.CurrentPosition.X < this.CurrentPosition.X)
            {
                dir = Universal.GetRandomItem(Direction.Directions.Where(d => d.Id.Contains('W')).ToList());
            }

            if (this.TargetShip.CurrentPosition.Y > this.CurrentPosition.Y)
            {
                dir = Universal.GetRandomItem(Direction.Directions.Where(d => d.Id.Contains('N')).ToList());
            }

            if (this.TargetShip.CurrentPosition.Y < this.CurrentPosition.Y)
            {
                dir = Universal.GetRandomItem(Direction.Directions.Where(d => d.Id.Contains('S')).ToList());
            }

            if (this.TargetShip.CurrentPosition.X > this.CurrentPosition.X && this.TargetShip.CurrentPosition.Y > this.CurrentPosition.Y)
            {
                dir = Universal.GetRandomItem(Direction.Directions.Where(d => d.Id.Contains('E') && d.Id.Contains('N')).ToList());
            }

            if (this.TargetShip.CurrentPosition.X > this.CurrentPosition.X && this.TargetShip.CurrentPosition.Y < this.CurrentPosition.Y)
            {
                dir = Universal.GetRandomItem(Direction.Directions.Where(d => d.Id.Contains('E') && d.Id.Contains('S')).ToList());
            }

            if (this.TargetShip.CurrentPosition.X < this.CurrentPosition.X && this.TargetShip.CurrentPosition.Y > this.CurrentPosition.Y)
            {
                dir = Universal.GetRandomItem(Direction.Directions.Where(d => d.Id.Contains('W') && d.Id.Contains('N')).ToList());
            }

            if (this.TargetShip.CurrentPosition.X < this.CurrentPosition.X && this.TargetShip.CurrentPosition.Y < this.CurrentPosition.Y)
            {
                dir = Universal.GetRandomItem(Direction.Directions.Where(d => d.Id.Contains('W') && d.Id.Contains('S')).ToList());
            }

            this.ApplyMovement(dir);
        }
コード例 #2
0
ファイル: Direction.cs プロジェクト: hnjm/flight
        public Direction GetOppositeDirection()
        {
            List <Direction> oppositeDirections = Directions.Where(d => !d.Id.Any(id => this.Id.Contains(id))).ToList();

            return(Universal.GetRandomItem(oppositeDirections));
        }