Пример #1
0
 public PlayerModel(FieldBounds bounds, List <Tile> bodyTiles)
 {
     this.bounds   = bounds;
     direction     = FieldVector2.zero;
     lastDirection = FieldVector2.zero;
     body          = bodyTiles;
 }
Пример #2
0
            public void OrderTicketFields()
            {
                var validClasses = new List <KeyValuePair <string, int> >();
                var headerRows   = new Dictionary <string, int>();
                var valueCount   = ValidTickets.Max(v => v.Values.Count);

                for (var i = 0; i < valueCount; ++i)
                {
                    var columnValues = ValidTickets.Select(t => t.Values[i]);
                    validClasses.AddRange(FieldBounds.Where(fb => fb.IsRuleValidForValues(columnValues))
                                          .Select(fb => new KeyValuePair <string, int>(fb.ClassName, i)));
                }
                while (validClasses.Count > 0)
                {
                    validClasses.GroupBy(kvp => kvp.Key)
                    .Where(g => g.Count() == 1)
                    .SelectMany(g => g.Select(k => k))
                    .ToList().ForEach(kvp => headerRows.AddKvp(kvp));
                    validClasses.RemoveAll(kvp => headerRows.ContainsValue(kvp.Value));
                }

                var result = headerRows.Where(kv => kv.Key.StartsWith("departure"))
                             .Select(kv => MyTicket.Values[kv.Value])
                             .Aggregate(1L, (f, s) => f * s);
            }
        public ComponentController(PuzzleBooble3dGame puzzleGame, Floor floor, AimingArrow arrow, BallGrid grid, FieldBounds bounds)
            : base(puzzleGame)
        {
            Floor = floor;
            Arrow = arrow;
            Grid = grid;
            Bounds = bounds;

            SetCurrentBall(new Ball(PuzzleBooble3dGame, GetCurrentBallPosition(), Ball.BallColor.Blue));
            SetNextBall(new Ball(PuzzleBooble3dGame, Vector3.Zero, grid.GetRandomColor()));

            ThrowBallTimer = new Timer();
            ThrowBallTimer.AutoReset = false;
            ThrowBallTimer.Interval = 10000;
            ThrowBallTimerRemainingTime = (float)ThrowBallTimer.Interval;
            ResetTimer();
        }
Пример #4
0
        public BallGrid(PuzzleBooble3dGame puzzleGame, Floor floor, FieldBounds bounds, Score score)
            : base(puzzleGame)
        {
            Floor = floor;
            Bounds = bounds;
            Bounds.Observer = this;
            CurrentScore = score;

            DeletedBalls = new List<Ball>();
            Observer = new List<HangingBallsObserver>();

            Balls = new List<List<Ball>>(NUMBER_OF_ROWS);
            for (int i = 0; i < NUMBER_OF_ROWS; i++)
            {
                Balls.Insert(i, new List<Ball>(i % 2 == 0 ? NUMBER_OF_COLUMNS_EVEN : NUMBER_OF_COLUMNS_ODD));
                if (i % 2 == 0)
                {
                    for (int j = 0; j < NUMBER_OF_COLUMNS_EVEN; j++)
                    {
                        Balls.ElementAt(i).Add(null);
                    }
                }
                else
                {
                    for (int j = 0; j < NUMBER_OF_COLUMNS_ODD; j++)
                    {
                        Balls.ElementAt(i).Add(null);
                    }
                }
            }

            SetNewBallAtPosition(0, 0, new Ball(PuzzleBooble3dGame, Vector3.Zero, Ball.BallColor.Red));
            SetNewBallAtPosition(0, 1, new Ball(PuzzleBooble3dGame, Vector3.Zero, Ball.BallColor.Red));
            SetNewBallAtPosition(0, 2, new Ball(PuzzleBooble3dGame, Vector3.Zero, Ball.BallColor.Yellow));
            SetNewBallAtPosition(0, 3, new Ball(PuzzleBooble3dGame, Vector3.Zero, Ball.BallColor.Yellow));
            SetNewBallAtPosition(0, 4, new Ball(PuzzleBooble3dGame, Vector3.Zero, Ball.BallColor.Blue));
            SetNewBallAtPosition(0, 5, new Ball(PuzzleBooble3dGame, Vector3.Zero, Ball.BallColor.Blue));
            SetNewBallAtPosition(0, 6, new Ball(PuzzleBooble3dGame, Vector3.Zero, Ball.BallColor.Green));
            SetNewBallAtPosition(0, 7, new Ball(PuzzleBooble3dGame, Vector3.Zero, Ball.BallColor.Green));
            SetNewBallAtPosition(1, 0, new Ball(PuzzleBooble3dGame, Vector3.Zero, Ball.BallColor.Red));
            SetNewBallAtPosition(1, 1, new Ball(PuzzleBooble3dGame, Vector3.Zero, Ball.BallColor.Red));
            SetNewBallAtPosition(1, 2, new Ball(PuzzleBooble3dGame, Vector3.Zero, Ball.BallColor.Yellow));
            SetNewBallAtPosition(1, 3, new Ball(PuzzleBooble3dGame, Vector3.Zero, Ball.BallColor.Yellow));
            SetNewBallAtPosition(1, 4, new Ball(PuzzleBooble3dGame, Vector3.Zero, Ball.BallColor.Blue));
            SetNewBallAtPosition(1, 5, new Ball(PuzzleBooble3dGame, Vector3.Zero, Ball.BallColor.Blue));
            SetNewBallAtPosition(1, 6, new Ball(PuzzleBooble3dGame, Vector3.Zero, Ball.BallColor.Green));
            SetNewBallAtPosition(2, 0, new Ball(PuzzleBooble3dGame, Vector3.Zero, Ball.BallColor.Blue));
            SetNewBallAtPosition(2, 1, new Ball(PuzzleBooble3dGame, Vector3.Zero, Ball.BallColor.Blue));
            SetNewBallAtPosition(2, 2, new Ball(PuzzleBooble3dGame, Vector3.Zero, Ball.BallColor.Green));
            SetNewBallAtPosition(2, 3, new Ball(PuzzleBooble3dGame, Vector3.Zero, Ball.BallColor.Green));
            SetNewBallAtPosition(2, 4, new Ball(PuzzleBooble3dGame, Vector3.Zero, Ball.BallColor.Red));
            SetNewBallAtPosition(2, 5, new Ball(PuzzleBooble3dGame, Vector3.Zero, Ball.BallColor.Red));
            SetNewBallAtPosition(2, 6, new Ball(PuzzleBooble3dGame, Vector3.Zero, Ball.BallColor.Yellow));
            SetNewBallAtPosition(2, 7, new Ball(PuzzleBooble3dGame, Vector3.Zero, Ball.BallColor.Yellow));
            SetNewBallAtPosition(3, 0, new Ball(PuzzleBooble3dGame, Vector3.Zero, Ball.BallColor.Blue));
            SetNewBallAtPosition(3, 1, new Ball(PuzzleBooble3dGame, Vector3.Zero, Ball.BallColor.Green));
            SetNewBallAtPosition(3, 2, new Ball(PuzzleBooble3dGame, Vector3.Zero, Ball.BallColor.Green));
            SetNewBallAtPosition(3, 3, new Ball(PuzzleBooble3dGame, Vector3.Zero, Ball.BallColor.Red));
            SetNewBallAtPosition(3, 4, new Ball(PuzzleBooble3dGame, Vector3.Zero, Ball.BallColor.Red));
            SetNewBallAtPosition(3, 5, new Ball(PuzzleBooble3dGame, Vector3.Zero, Ball.BallColor.Yellow));
            SetNewBallAtPosition(3, 6, new Ball(PuzzleBooble3dGame, Vector3.Zero, Ball.BallColor.Yellow));

            SetNewBallAtPosition(0, 8, new Ball(PuzzleBooble3dGame, Vector3.Zero, Ball.BallColor.Silver));
            SetNewBallAtPosition(0, 9, new Ball(PuzzleBooble3dGame, Vector3.Zero, Ball.BallColor.Silver));
            SetNewBallAtPosition(0, 10, new Ball(PuzzleBooble3dGame, Vector3.Zero, Ball.BallColor.DarkGrey));
            SetNewBallAtPosition(0, 11, new Ball(PuzzleBooble3dGame, Vector3.Zero, Ball.BallColor.DarkGrey));
            SetNewBallAtPosition(1, 7, new Ball(PuzzleBooble3dGame, Vector3.Zero, Ball.BallColor.Silver));
            SetNewBallAtPosition(1, 8, new Ball(PuzzleBooble3dGame, Vector3.Zero, Ball.BallColor.Silver));
            SetNewBallAtPosition(1, 9, new Ball(PuzzleBooble3dGame, Vector3.Zero, Ball.BallColor.Silver));
            SetNewBallAtPosition(1, 10, new Ball(PuzzleBooble3dGame, Vector3.Zero, Ball.BallColor.DarkGrey));
            SetNewBallAtPosition(2, 8, new Ball(PuzzleBooble3dGame, Vector3.Zero, Ball.BallColor.Orange));
            SetNewBallAtPosition(2, 9, new Ball(PuzzleBooble3dGame, Vector3.Zero, Ball.BallColor.Orange));
            SetNewBallAtPosition(2, 10, new Ball(PuzzleBooble3dGame, Vector3.Zero, Ball.BallColor.Purple));
            SetNewBallAtPosition(2, 11, new Ball(PuzzleBooble3dGame, Vector3.Zero, Ball.BallColor.Purple));
            SetNewBallAtPosition(3, 7, new Ball(PuzzleBooble3dGame, Vector3.Zero, Ball.BallColor.Orange));
            SetNewBallAtPosition(3, 8, new Ball(PuzzleBooble3dGame, Vector3.Zero, Ball.BallColor.Orange));
            SetNewBallAtPosition(3, 9, new Ball(PuzzleBooble3dGame, Vector3.Zero, Ball.BallColor.Purple));
            SetNewBallAtPosition(3, 10, new Ball(PuzzleBooble3dGame, Vector3.Zero, Ball.BallColor.Purple));
        }
Пример #5
0
        public void OnOneRowRemoved(FieldBounds bound)
        {
            // Reposition All Rows
            for (int i = 0; i < NUMBER_OF_ROWS; i++)
            {
                for (int j = 0; j < GetNumberOfColumnForRow(i); j++)
                {
                    Ball ball = GetBallAtSlot(i, j);
                    if (ball != null)
                    {
                        RefreshBallPosition(i, j, ball);
                    }
                }
            }

            CheckIfPlayerLost();
        }
Пример #6
0
 public int ScanInvalidTickets()
 {
     return(Tickets.SelectMany(t => t.Values)
            .Where(i => !FieldBounds.Any(fb => fb.IsValueValid(i)))
            .Sum());
 }