jQuery选择棋子路径中的所有s
我有一个8秒的表,每个表有8秒,每个表的数据-x值和数据-y值介于1和8之间,即棋盘的8x8网格 考虑到主教只能沿对角线移动,并且我有开始和结束方块的坐标,找到“路径”中所有元素的最有效方法是什么 例如:jQuery选择棋子路径中的所有s,jquery,css-selectors,Jquery,Css Selectors,我有一个8秒的表,每个表有8秒,每个表的数据-x值和数据-y值介于1和8之间,即棋盘的8x8网格 考虑到主教只能沿对角线移动,并且我有开始和结束方块的坐标,找到“路径”中所有元素的最有效方法是什么 例如: // coordinates representing a bishop move from d6 (4, 6) to h2 (8, 2) var from = { x: 4, y: 6 }, to = { x: 8, y: 2 } // code to se
// coordinates representing a bishop move from d6 (4, 6) to h2 (8, 2)
var from = {
x: 4,
y: 6
},
to = {
x: 8,
y: 2
}
// code to select squares e5 (5,5), f4 (6,4) and g3 (7,3)
如何选择这些元素:
td[data-x="5"][data-y="5"],
td[data-x="6"][data-y="4"],
td[data-x="7"][data-y="3"]
以最有效的方式,记住from和to是动态设置的
作为参考,我在别处编写了一个函数,用于检查bishop是否以对角线方向移动:
function is_valid_bishop_move(from, to){
var tan_theta = (to.y - from.y) / (to.x - from.x);
if( tan_theta === 1 || tan_theta === -1 ){
return true;
}else{
return false;
}
}
我只能这样想:
var from = {
x: 4,
y: 6
},
to = {
x: 8,
y: 2
}
var delta_x = (to.x - from.x > 0 ? 1 : -1),
delta_y = (to.y - from.y > 0 ? 1 : -1),
dest_x = from.x + delta_x,
dest_y = from.y + delta_y,
selector = '';
while (dest_x != to.x) {
selector += 'td[data-x="' + dest_x + '"][data-y="' + dest_y + '"],';
dest_x += delta_x;
dest_y += delta_y;
}
selector = selector.replace(/,$/, '');
console.log(selector);
为什么不直接使用return Math.absto.y-from.y==Math.absto.x-from.x?另外,我实现了一个非常基本的Python国际象棋界面,它可以进行随机有效的移动,以防您感兴趣: