Beispiel #1
0
        public override bool ProcessKeyboard(KeyboardInfo info)
        {
            if (info.IsKeyDown(Keyboard.Key.Down))
            {
                State = Tetris.DoMoveDown(State);
            }
            else if (info.IsKeyDown(Keyboard.Key.Left))
            {
                State = Tetris.DoMoveLeft(State);
            }
            else if (info.IsKeyDown(Keyboard.Key.Right))
            {
                State = Tetris.DoMoveRight(State);
            }
            else if (info.IsKeyDown(Keyboard.Key.Up))
            {
                State = Tetris.DoRotate(State);
            }

            return(false);
        }
Beispiel #2
0
        public bool ProcessKeyboard(CellData[,] _map, int x, int y, KeyboardInfo info)
        {
            bool  _pressed = false;
            Point _dir     = new Point();

            if (info.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.NumPad9))
            {
                _dir.X   = 1;
                _dir.Y   = -1;
                _pressed = true;
            }
            else if (info.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.NumPad8))
            {
                _dir.X   = 0;
                _dir.Y   = -1;
                _pressed = true;
            }
            else if (info.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.NumPad7))
            {
                _dir.X   = -1;
                _dir.Y   = -1;
                _pressed = true;
            }
            else if (info.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.NumPad4))
            {
                _dir.X   = -1;
                _dir.Y   = 0;
                _pressed = true;
            }
            else if (info.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.NumPad1))
            {
                _dir.X   = -1;
                _dir.Y   = 1;
                _pressed = true;
            }
            else if (info.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.NumPad2))
            {
                _dir.X   = 0;
                _dir.Y   = 1;
                _pressed = true;
            }
            else if (info.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.NumPad3))
            {
                _dir.X   = 1;
                _dir.Y   = 1;
                _pressed = true;
            }
            else if (info.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.NumPad6))
            {
                _dir.X   = 1;
                _dir.Y   = 0;
                _pressed = true;
            }

            if (_pressed)
            {
                // REF: copy this for open-ness for pathing
                int _x = X + _dir.X;
                int _Y = Y + _dir.Y;

                // TODO: try catch is horror, this is lazy, why do I do this?
                //       probably only triggers on map borders
                try {
                    if (_map[X + _dir.X, Y + _dir.Y].Pathable && (_map[X + _dir.X, Y + _dir.Y].Contains == null))
                    {
                        _map[X + _dir.X, Y + _dir.Y].Contains = this;
                        _map[X, Y].Contains = null;

                        X += _dir.X;
                        Y += _dir.Y;

                        return(true);
                    }
                }
                catch
                {
                    return(false);
                }
            }

            return(false);
        }