/// <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); } }
public void UpdateKeyBuffer(string buffer) { if (buffer == "BackSpace") { this.keyCode = KEYCODE.BACKSPACE; } if (buffer == "Space") { this.keyBuffer = " "; } else { this.keyBuffer += buffer; } }
// ブロックの移動 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); }
public void CleanUp() { actionKeyBuffer.Clear(); keyBuffer = ""; this.keyCode = KEYCODE.NONE; }
/// <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); }