public override void Step(IList <IStepable> oldWorld, IList <IStepable> newWorld) { if (_actions.Last().Type == ActionType.BallConsumed) { return; } var ball = Clone() as Ball; Debug.Assert(ball != null, "ball != null"); while (Count > 0) { ball.GetActions().Add(new StepAction(ActionType.Nope, null, ball.GetPosition(), ball.Color)); Count--; } var otherBlock = Game.GetByPos(ball.GetPosition(), oldWorld) as IInteract; if (otherBlock != null) { ball.GetActions().Add(new StepAction(ActionType.BallInteract, otherBlock, ball.GetPosition(), ball.Color)); otherBlock.Interact(ball); } else { ball.Move(0, 1); ball.GetActions().Add(new StepAction(ActionType.BallMove, null, ball.GetPosition(), ball.Color)); } BallHistory.GetInstance().AddBall(ball); newWorld.Add(ball); }
public static BallHistory GetInstance() { if (_instance == null) { _instance = new BallHistory(); } return(_instance); }
/// <summary> /// Произвести заполнение внутренего хранилища шариками /// в случайном порядке. /// </summary> private void _generateBalls() { int ballsCount = 0; foreach (var pair in _ballsSettings) { for (var i = 0; i < pair.Value; i++) { var ball = new Ball(ballsCount) { Color = pair.Key }; ball.SetPosition(GetPosition()); _genBalls.Add(ball); BallHistory.GetInstance().AddBall(ball); ballsCount++; } } Shuffle(_genBalls); }
void Start() { balls = new Dictionary <e.Color, int> { { e.Color.Red, redBallsCount }, { e.Color.Green, greenBallsCount }, { e.Color.Blue, blueBallsCount }, { e.Color.Purple, purpleBallsCount }, { e.Color.Yellow, yellowBallsCount } }; ballHistory = e.BallHistory.GetInstance(); ballHistory.Clear(); var basket = new e.Bascket(e.Color.Green, 3, 7); var basket2 = new e.Bascket(e.Color.Green, 1, 7); var basket3 = new e.Bascket(e.Color.Green, 2, 7); var dog = new e.Dog(2, 1); this.game = new e.Game(); game.AddObject(basket); game.AddObject(basket2); game.AddObject(basket3); game.AddObject(dog); }