Esempio n. 1
0
 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));
     }
 }
Esempio n. 2
0
 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]);
     }
 }
Esempio n. 3
0
 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();
 }
Esempio n. 4
0
    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();
    }