示例#1
0
 public void Update(long delta)
 {
     if (Keyboard.IsKeyDown(Key.Escape))
     {
         _game.BackScreen();
     }
 }
示例#2
0
        public void Update(long delta)
        {
            _ellapsed += delta;

            _ellapsedFigure += delta;

            if (Keyboard.IsKeyDown(Key.Right))
            {
                var screen = new SnakeMenu(_canvas, _menu);
                _menu.Push(screen);
            }

            if (_ellapsed >= UpdateTime)
            {
                _dx += _inc;
                if (_dx >= 14 || _dx < 0)
                {
                    _inc = -_inc;
                    _dx += 2 * _inc;
                }
                _ellapsed = 0;
                Redraw();
            }
            if (_ellapsedFigure >= UpdateTimeFigure)
            {
                _dxFigure += 1;
                if (_dxFigure >= 9)
                {
                    _dxFigure = 0;
                }
                _ellapsedFigure = 0;
                Redraw();
            }
        }
示例#3
0
文件: Logo.cs 项目: Sanyco007/Tetris
        public void Update(long delta)
        {
            _ellapsed += delta;

            if (Keyboard.IsKeyDown(Key.Enter))
            {
                Keyboard.KeyUp(Key.Enter);
                Game.Instance.SetScreen();
            }

            if (_ellapsed >= UpdateTime)
            {
                for (var i = 0; i < _logo.Count; i++)
                {
                    _logo[i] = new Point(_logo[i].X - 1, _logo[i].Y);
                }
                _ellapsed -= UpdateTime;
                _steps++;
                Redraw();
                if (_steps >= 38)
                {
                    Game.Instance.SetScreen();
                }
            }
        }
示例#4
0
        public void Update(long delta)
        {
            _ellapsed       += delta;
            _ellapsedFigure += delta;

            if (Keyboard.IsKeyDown(Key.Left))
            {
                _menu.Back();
            }

            if (_ellapsed >= UpdateTime)
            {
                _dx += _inc;
                if (_dx >= 13 || _dx < 0)
                {
                    _inc = -_inc;
                    _dx += 2 * _inc;
                }
                _ellapsed = 0;
                Redraw();
            }

            if (_ellapsedFigure >= UpdateTimeFigure)
            {
                _steps++;
                if (_steps >= 11)
                {
                    _list = new List <Point>
                    {
                        new Point(1, 16), new Point(2, 16), new Point(3, 16)
                    };
                    _steps = 0;
                }
                else
                {
                    var head = new Point
                    {
                        X = _list[_list.Count - 1].X + (_steps <= 5 ? 1 : 0),
                        Y = _list[_list.Count - 1].Y + (_steps <= 5 ? 0 : -1)
                    };
                    if (_steps == 10)
                    {
                        _list.Add(head);
                    }
                    else
                    {
                        for (int i = 0; i < _list.Count - 1; i++)
                        {
                            _list[i] = _list[i + 1];
                        }
                        _list[_list.Count - 1] = head;
                    }
                }
                _ellapsedFigure = 0;
                Redraw();
            }
        }
示例#5
0
文件: Menu.cs 项目: Sanyco007/Tetris
        public void Update(long delta)
        {
            var screen = _menus.Peek();

            if (Keyboard.IsKeyDown(Key.Enter))
            {
                if (screen.GetType() == typeof(TetrisMenu))
                {
                    var tetris = new TetrisGame(_canvas, _next, _lines, _game);
                    _game.PushScreen(tetris);
                }
                if (screen.GetType() == typeof(SnakeMenu))
                {
                    var snake = new SnakeGame(_canvas, _game);
                    _game.PushScreen(snake);
                }
            }
            screen.Update(delta);
        }
示例#6
0
        public void Update(long delta)
        {
            //Увеличение прошедшего времени
            _ellapsed         += delta;
            _keyboardEllapsed += delta;

            if (Keyboard.IsKeyDown(Key.P))
            {
                _pause = !_pause;
                AudioPlayer.Pause(_pause);
                Keyboard.KeyUp(Key.P);
                Redraw();
            }

            if (_pause)
            {
                return;
            }

            _updateTime = Keyboard.IsKeyDown(Key.Space) ? 50L : _levelTime;

            //Обработка нажатых клавиш
            if (_keyboardEllapsed >= KeyboardUpdate)
            {
                if (Keyboard.IsKeyDown(Key.Down))
                {
                    if (_wayDelta.Y != -1)
                    {
                        _wayDelta = new Point(0, 1);
                        AudioPlayer.PlayEffect(AudioPlayer.EffectDirection);
                        Keyboard.KeyUp(Key.Down);
                    }
                }
                else if (Keyboard.IsKeyDown(Key.Up))
                {
                    if (_wayDelta.Y != 1)
                    {
                        _wayDelta = new Point(0, -1);
                        AudioPlayer.PlayEffect(AudioPlayer.EffectDirection);
                        Keyboard.KeyUp(Key.Up);
                    }
                }
                else if (Keyboard.IsKeyDown(Key.Left))
                {
                    if (_wayDelta.X != 1)
                    {
                        _wayDelta = new Point(-1, 0);
                        AudioPlayer.PlayEffect(AudioPlayer.EffectDirection);
                        Keyboard.KeyUp(Key.Left);
                    }
                }
                else if (Keyboard.IsKeyDown(Key.Right))
                {
                    if (_wayDelta.X != -1)
                    {
                        _wayDelta = new Point(1, 0);
                        AudioPlayer.PlayEffect(AudioPlayer.EffectDirection);
                        Keyboard.KeyUp(Key.Right);
                    }
                }
            }

            //Падение фигуры
            if (_ellapsed >= _updateTime)
            {
                var head = new Point
                {
                    X = _snake[_snake.Count - 1].X + _wayDelta.X,
                    Y = _snake[_snake.Count - 1].Y + _wayDelta.Y
                };
                if (head.X == _newBlock.X && head.Y == _newBlock.Y)
                {
                    _snake.Add(head);
                    AudioPlayer.PlayEffect(AudioPlayer.EffectBite);
                    GenerateNewBlock();
                }
                else if (Intersects(head))
                {
                    AudioPlayer.Pause(false);
                    var gameOver = new GameOver(_canvas, _buffer, _game, this);
                    _game.PushScreen(gameOver);
                    return;
                }
                else
                {
                    for (int i = 0; i < _snake.Count - 1; i++)
                    {
                        _snake[i] = _snake[i + 1];
                    }
                    _snake[_snake.Count - 1] = head;
                }
                _ellapsed = 0;
                Redraw();
            }
        }
示例#7
0
        public void Update(long delta)
        {
            if (_repeat)
            {
                Start();
                _repeat = false;
            }

            //Увеличение прошедшего времени
            _ellapsed         += delta;
            _keyboardEllapsed += delta;

            //Ускорение падения при нажатии ВНИЗ
            _updateTime = Keyboard.IsKeyDown(Key.Down) ? 10L : 1000L;

            if (Keyboard.IsKeyDown(Key.P))
            {
                _pause = !_pause;
                AudioPlayer.Pause(_pause);
                Keyboard.KeyUp(Key.P);
                Redraw();
            }

            if (_pause)
            {
                return;
            }

            if (_animate)
            {
                Redraw();
                return;
            }

            //Обработка нажатых клавиш
            if (_keyboardEllapsed >= KeyboardUpdate)
            {
                if (Keyboard.IsKeyDown(Key.Left))
                {
                    _block.MoveLeft(_field);
                    Redraw();
                }
                if (Keyboard.IsKeyDown(Key.Right))
                {
                    _block.MoveRight(_field);
                    Redraw();
                }
                if (Keyboard.IsKeyDown(Key.F))
                {
                    _drawFeature = !_drawFeature;
                    Keyboard.KeyUp(Key.F);
                    Redraw();
                }
                if (Keyboard.IsKeyDown(Key.Space))
                {
                    while (!CheckCollisins())
                    {
                        _block.MoveDown();
                    }
                    AudioPlayer.PlayEffect(AudioPlayer.EffectDrop);
                    Keyboard.KeyUp(Key.Space);
                    _block.MoveDown();
                    Redraw();
                }
                if (Keyboard.IsKeyDown(Key.Enter) || Keyboard.IsKeyDown(Key.Up))
                {
                    _block.Rotate(_field);
                    AudioPlayer.PlayEffect(AudioPlayer.EffectRotate);
                    Keyboard.KeyUp(Key.Enter);
                    Keyboard.KeyUp(Key.Up);
                    Redraw();
                }
                _keyboardEllapsed = 0;
            }

            //Падение фигуры
            if (_ellapsed >= _updateTime)
            {
                CheckCollisins();
                _block.MoveDown();
                Redraw();
                _ellapsed = 0;
            }
        }