bing华容道键盘控件

数字华容道的键盘控件还是没有推出。给微软写一个好了(笑)

// ==UserScript==
// @name        bing华容道键盘控件
// @namespace   Violentmonkey Scripts
// @match       https://cn.bing.com/spotlight/imagepuzzle*
// @grant       none
// @version     1.0
// @author      FourthDing
// @description 数字华容道的键盘控件还是没有推出。给微软写一个好了(笑)
// @license     GPL3.0
// ==/UserScript==
document.querySelector(".insText2text").textContent = "键盘控件: 现已推出!";
var position = [0, 0]; //空格位置
var matrix = //二维3*3元素网格
  [
    [
      document.getElementById("00"),
      document.getElementById("10"),
      document.getElementById("20"),
    ],
    [
      document.getElementById("01"),
      document.getElementById("11"),
      document.getElementById("21"),
    ],
    [
      document.getElementById("02"),
      document.getElementById("12"),
      document.getElementById("22"),
    ],
  ];
getEmpty();
function getEmpty() {//获得空块的位置,好像可以优化一下
  for (let x in matrix) {
    for (let y in matrix[x]) {
      if (matrix[x][y].childNodes.length == 0) {
        position = [Number(x), Number(y)];
        console.log(position);
      }
    }
  }
}
document.addEventListener("keydown", puzzleKeyEvent);//监听按键

function puzzleKeyEvent(event) {//判断按键
  if (0 <= position[0] - 1 <= 2 && event.key === "ArrowRight") {
    //console.log("Left");
    var clickPos = posAdd(position, [-1, 0]);
    moveTile(clickPos);
  } else if (0 <= position[0] + 1 <= 2 && event.key === "ArrowLeft") {
    //console.log("Right");
    var clickPos = posAdd(position, [1, 0]);
    moveTile(clickPos);
  } else if (0 <= position[1] - 1 <= 2 && event.key === "ArrowDown") {
    //console.log("Up");
    var clickPos = posAdd(position, [0, -1]);
    moveTile(clickPos);
  } else if (0 <= position[1] + 1 <= 2 && event.key === "ArrowUp") {
    //console.log("Down");
    var clickPos = posAdd(position, [0, 1]);
    moveTile(clickPos);
  } else {
    return;
  }
}
function moveTile(pos) {//挪动块
  //console.log(pos);
  matrix[pos[0]][pos[1]].click();
  getEmpty();
}
function posAdd(pos1, pos2) {//位置运算
  //debugger;
  return [Number(pos1[0] + pos2[0]), Number(pos1[1] + pos2[1])];
}