Beispiel #1
0
        private void NewGame()
        {
            var randomSeed         = new Random().Next();
            var tetrominoGenerator =
                new PeekableTetrominoGenerator(
                    new RandomBagTetrominoGenerator(randomSeed));
            var game = new Game.Game(FieldWidth, FieldHeight,
                                     tetrominoGenerator);

            screenView.Game             = game;
            screenView.GetNextTetromino = tetrominoGenerator.Peek;

            var gameController = new GameController(game, scheduler);

            gameController.Update   += screenView.Invalidate;
            gameController.GameOver += HandleGameOver;

            var keyboard = new Keyboard(gameController, scheduler);

            keyMap = new Dictionary <Keys, Key>();
            Bind(Keys.Up, rotateButton, keyboard.Rotate);
            Bind(Keys.Left, shiftLeftButton, keyboard.ShiftLeft);
            Bind(Keys.Right, shiftRightButton, keyboard.ShiftRight);
            Bind(Keys.Down, softDropButton, keyboard.SoftDrop);
            Bind(Keys.Space, hardDropButton, keyboard.HardDrop);

            var levelUpKey = new Key();

            keyMap[Keys.U]       = levelUpKey;
            levelUpKey.KeyPress += gameController.HandleForceLevelUp;

            Invalidate(true);
        }
        public void CanPeek()
        {
            var generator = new PeekableTetrominoGenerator(
                new MockTetrominoGenerator
            {
                Tetromino.I,
                Tetromino.T
            });

            Assert.Equal(Tetromino.I, generator.Peek());
            generator.Next();
            Assert.Equal(Tetromino.T, generator.Peek());
        }
Beispiel #3
0
            public override void Initialize(IComponent component)
            {
                base.Initialize(component);
                var gameView           = (ScreenView)component;
                var tetrominoGenerator =
                    new PeekableTetrominoGenerator(
                        new RandomTetrominoGenerator(0));

                gameView.Game             = new Game.Game(10, 20, tetrominoGenerator);
                gameView.GetNextTetromino = tetrominoGenerator.Peek;
                gameView.Game.ApplyGravity();
                gameView.Game.ApplyGravity();
                gameView.Game.ApplyGravity();
                gameView.Game.ApplyGravity();
                gameView.Game.ApplyGravity();
                gameView.Game.Rotate();
            }
        public void ProxiesOutput()
        {
            var expectedOutput = new[]
            {
                Tetromino.I, Tetromino.J, Tetromino.L, Tetromino.O, Tetromino.S,
                Tetromino.S, Tetromino.O, Tetromino.T, Tetromino.Z, Tetromino.T,
                Tetromino.L, Tetromino.Z, Tetromino.T, Tetromino.I, Tetromino.J
            };
            var generator =
                new PeekableTetrominoGenerator(
                    new MockTetrominoGenerator(expectedOutput));
            var output = new List <Tetromino>();

            for (var i = 0; i < expectedOutput.Length; ++i)
            {
                output.Add(generator.Next());
            }
            Assert.Equal(expectedOutput, output);
        }