private void RemoveTetrimino(TetrisState state, TetrisWell well) { foreach (Point segment in state.Set[state.Orientation]) { well.RemoveBlock(new Point(state.X + segment.X, state.Y + segment.Y)); } }
private void AddTetrimino(TetrisState state, TetrisWell well) { foreach (Point segment in state.Set[state.Orientation]) { well.AddBlock(new Point(state.X + segment.X, state.Y + segment.Y), colors[state.Index]); } }
public TetrisEngine( Game game, InputHelper input, TetrisWell preview, TetrisWell well, TetrisGrid grid, Text scoreText) : base(game) { this.input = input; this.preview = preview; this.well = well; this.grid = grid; this.scoreText = scoreText; Initialize(); }
protected override void Initialize() { Viewport viewport = GraphicsDevice.Viewport; // Create input helper input = new InputHelper(100); // Create scene scene = new Scene(this); // MARK: Menu elements // Create container for the menu elements menuContainer = new Node(this); scene.rootNode.AddChild(menuContainer); // Create background Sprite menuBackground = new Sprite(this, 0, 0, viewport.Width, viewport.Height) { texture = CreateLinearGradient( new Color(6, 36, 55), new Color(20, 12, 51), new Color(4, 2, 22), new Color(14, 2, 22)) }; menuContainer.AddChild(menuBackground); // Create menu pointer graphic menuHighlight = new Sprite(this, 3 * grid.cell.Width, 7 * grid.cell.Height, 6 * grid.cell.Width, 3 * grid.cell.Height) { Opacity = 0.1f }; menuContainer.AddChild(menuHighlight); // Create menu items Text start = new Text(this, "monospace", "START", viewport.Width / 2, 8 * grid.cell.Height, "Center"); menuContainer.AddChild(start); Text mode = new Text(this, "monospace", "MODE", viewport.Width / 2, 11 * grid.cell.Height, "Center"); menuContainer.AddChild(mode); Text quit = new Text(this, "monospace", "QUIT", viewport.Width / 2, 14 * grid.cell.Height, "Center"); menuContainer.AddChild(quit); // MARK: Tetris elements // Create container for the game elements tetrisContainer = new Node(this); tetrisContainer.active = false; scene.rootNode.AddChild(tetrisContainer); // Create backgrounds Sprite tetrisBackground = new Sprite(this, 0, 0, viewport.Width, viewport.Height) { texture = CreateLinearGradient( new Color(6, 36, 55), new Color(20, 12, 51), new Color(4, 2, 22), new Color(14, 2, 22)) }; tetrisContainer.AddChild(tetrisBackground); Sprite tetrisHeaderBackground = new Sprite(this, 0, 0, viewport.Width, 4 * grid.cell.Height) { Opacity = 0.1f }; tetrisContainer.AddChild(tetrisHeaderBackground); // Create score section Text scoreLabel = new Text(this, "regular", "Score", 6 * grid.cell.Width, grid.cell.Height); tetrisContainer.AddChild(scoreLabel); Text score = new Text(this, "monospace", "0000000", 6 * grid.cell.Width, 2 * grid.cell.Height); tetrisContainer.AddChild(score); // Create preview well TetrisWell preview = new TetrisWell(this, new TetrisGrid(4, 3, grid.cell.Width, grid.cell.Height)); tetrisContainer.AddChild(preview); // Create playing field well TetrisWell playfield = new TetrisWell(this, 0, 4 * grid.cell.Width, grid); tetrisContainer.AddChild(playfield); // Create tetris game engine tetrisEngine = new TetrisEngine(this, input, preview, playfield, grid, score); tetrisContainer.AddChild(tetrisEngine); base.Initialize(); }