public object Clone() { var clone = new TetriBricksGame(); foreach (BrickColumn bc in Columns) { var bcClone = new BrickColumn(); foreach (Brick b in bc.Bricks) { var bClone = new Brick(b.Row, b.Column, b.Color); bcClone.Bricks.Add(bClone); } clone.Columns.Add(bcClone); } return clone; }
public void CreateNewGame(int rows, int columns) { _moveHistory.Clear(); var game = new TetriBricksGame(); for (int i = 0; i < rows; i++) { var bc = new BrickColumn(); //bc.Game = game; for (int j = 0; j < columns; j++) { bc.Bricks.Add(new Brick(i, j, GetRandomColor())); } game.Columns.Add(bc); } _moveHistory.Add((TetriBricksGame) game.Clone()); _currentMove = 0; }
private void DisplayGame(TetriBricksGame game) { _currentScore = game.Score; gridPuzzle.RenderTransform = null; gridPuzzle.Children.Clear(); game.Columns.ForEach(brickColumn => { var stackPanel = new StackPanel {Orientation = Orientation.Vertical}; brickColumn.Bricks.ForEach(brick => { var lbl = new Rectangle { Margin = new Thickness(2), MinHeight = 20, MinWidth = 20, Opacity = 0.8, Tag = brick, Fill = new SolidColorBrush( brick.Color) }; lbl.MouseEnter += lbl_MouseEnter; lbl.MouseLeave += lbl_MouseLeave; lbl.MouseLeftButtonDown += lbl_MouseLeftButtonDown; stackPanel.Children.Add(lbl); } ); gridPuzzle.Children.Add(stackPanel); } ); var rotate = new RotateTransform {Angle = (-180)}; gridPuzzle.RenderTransformOrigin = new Point(0.5, 0.5); gridPuzzle.RenderTransform = rotate; UpdateScores(); }