示例#1
0
        /// <summary>Press a key and amount of quantity and with a given interval and then release it</summary>
        /// <param name="key">Secuence of character to write</param>
        /// <param name="quantity">A</param>
        /// <param name="interval">Interval between press and release </param>
        public static void Press(KEYCODE key, int quantity = 1, double interval = 0)
        {
            InputSimulator sim = new InputSimulator();

            for (int i = 0; i < quantity; i++)
            {
                sim.Keyboard.KeyDown((VirtualKeyCode)key);
                Thread.Sleep(Convert.ToInt32(interval * 1000));
                sim.Keyboard.KeyUp((VirtualKeyCode)key);
            }
        }
示例#2
0
 public void UpdateKeyBuffer(string buffer)
 {
     if (buffer == "BackSpace")
     {
         this.keyCode = KEYCODE.BACKSPACE;
     }
     if (buffer == "Space")
     {
         this.keyBuffer = " ";
     }
     else
     {
         this.keyBuffer += buffer;
     }
 }
示例#3
0
文件: Game.cs 项目: ariemiku/tetris
    // ブロックの移動
    bool MoveBlock(KEYCODE keyCode = KEYCODE.NONE)
    {
        int moveX = 0;
        int moveY = 0;

        switch (keyCode)
        {
        // 左が押された場合
        case KEYCODE.LEFT_ARROW:
            moveX = -1;
            break;

        // 右が押された場合
        case KEYCODE.RIGHT_ARROW:
            moveX = 1;
            break;

        // 落下
        case KEYCODE.NONE:
            moveY = 1;
            break;

        default:
            break;
        }

        // ブロックが出現し終わるまで左右移動や落下を制限する
        for (int i = 0; i < 4; i++)
        {
            int y = (int)(myBlock.blockPosition[i].y + myBlock.nowPosition.y);
            if (y < 0)
            {
                moveX = 0;
                break;
            }
            if (i == 3)
            {
                speedUp = true;
            }
        }

        // 移動できるか
        for (int i = 0; i < 4; i++)
        {
            int x = (int)(myBlock.blockPosition[i].x + myBlock.nowPosition.x + moveX);
            int y = (int)(myBlock.blockPosition[i].y + myBlock.nowPosition.y + moveY);
            if (x < 0 || x > 9)
            {
                return(false);
            }
            if (y > 19)
            {
                return(false);
            }
            if (y >= 0)
            {
                if (map[y, x] == BLOCKSTATE.USED)
                {
                    return(false);
                }
            }
        }
        // 移動
        myBlock.nowPosition.x += moveX;
        myBlock.nowPosition.y += moveY;
        for (int j = 0; j < 20; j++)
        {
            for (int i = 0; i < 10; i++)
            {
                if (map[j, i] == BLOCKSTATE.USING)
                {
                    map[j, i] = BLOCKSTATE.EMPTY;
                }
            }
        }
        for (int i = 0; i < 4; i++)
        {
            int x = (int)(myBlock.nowPosition.x + myBlock.blockPosition[i].x);
            int y = (int)(myBlock.nowPosition.y + myBlock.blockPosition[i].y);
            if (y < 0)
            {
                continue;
            }
            map[y, x] = BLOCKSTATE.USING;
        }

        moveNum     = 0;
        rightRotate = false;
        leftRotate  = false;

        return(true);
    }
示例#4
0
 public void CleanUp()
 {
     actionKeyBuffer.Clear();
     keyBuffer    = "";
     this.keyCode = KEYCODE.NONE;
 }
示例#5
0
        /// <summary>Press a secuence of keys with a given interval and then release them</summary>
        /// <param name="keyToHold">Key to hold</param>
        /// <param name="keyToPres">Key to press while the keyToHold is press, ej: CTRL + K </param>
        public static void HotKey(KEYCODE keyToHold, KEYCODE keyToPres)
        {
            InputSimulator sim = new InputSimulator();

            sim.Keyboard.ModifiedKeyStroke((VirtualKeyCode)keyToHold, (VirtualKeyCode)keyToPres);
        }