public PlayerModel(FieldBounds bounds, List <Tile> bodyTiles) { this.bounds = bounds; direction = FieldVector2.zero; lastDirection = FieldVector2.zero; body = bodyTiles; }
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(); }
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)); }
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(); }
public int ScanInvalidTickets() { return(Tickets.SelectMany(t => t.Values) .Where(i => !FieldBounds.Any(fb => fb.IsValueValid(i))) .Sum()); }