Javascript 需要找到在网格上移动的方程式

Javascript 需要找到在网格上移动的方程式,javascript,tracking,Javascript,Tracking,好的,我写了一个脚本,让你四处走动,而不是在一个由一堆“x”字母组成的网格上。所以你知道它是什么样子的,下面是JS: function generate_page() { var x = 0; var y = 0; var lines = 20; var output; while (x <= lines) { while( y <= lines*2){ if (x == 0 && y =

好的,我写了一个脚本,让你四处走动,而不是在一个由一堆“x”字母组成的网格上。所以你知道它是什么样子的,下面是JS:

function generate_page() {
    var x = 0;
    var y = 0;
    var lines = 20;
    var output;
    while (x <= lines) {
        while( y <= lines*2){
            if (x == 0 && y == 1) {
                output = "<span id='x" + x + "_" + y + "' style='background-color: red'>o</span>";
            } else if (x == 3 && y == 5) {
                output = "<span id='x" + x + "_" + y + "' style='background-color: green'>z</span>";
            } else {
                output = ("<span id='x" + x + "_" + y + "'>x</span>");
            }
            $('#board').append(output);
            y++;
        }
        y = 0;
        x++;
        $('#board').append('<br />');
    }
}
编辑:是当前程序。忽略红色材料上的绿色移动

编辑2:好的,我更新了西部的问题和没有绿色的东西。以下是新代码:

function moveGreen() {
    var x_distance = currentX_green - currentX_red;
    var y_distance = currentY_green - currentY_red;
    var larger;
    if (Math.abs(x_distance) > Math.abs(y_distance)) {
        larger = 'x';
    } else if (Math.abs(y_distance) > Math.abs(x_distance)) {
        larger = 'y';
    } else {
        larger = 'o';
    }
    if (larger == 'x') {
        if (x_distance > 0){
            north('green');
        } else {
            south('green');
        }
    } else if (larger == 'y'){
        if (y_distance > 0) {
            west('green');
        } else {
            east('green');
        }
    } else if (larger == 'o'){
        if (y_distance > 0){
            east('green');
        } else if (y_distance == 0) {
            if (x_distance > 0) {
                north('green');
            } else if (x_distance < 0){
                south('green');
            }
        } else {
            west('green');
        }
    }
}
函数moveGreen(){
var x_距离=电流x_绿色-电流x_红色;
var y_距离=当前y_绿色-当前y_红色;
var较大;
if(Math.abs(x_距离)>Math.abs(y_距离)){
较大的='x';
}else if(Math.abs(y_距离)>Math.abs(x_距离)){
较大的='y';
}否则{
较大的='o';
}
如果(较大=='x'){
如果(x_距离>0){
北方(“绿色”);
}否则{
南方(“绿色”);
}
}else if(较大的=='y'){
如果(y_距离>0){
西部(“绿色”);
}否则{
东部(“绿色”);
}
}else if(较大值='o'){
如果(y_距离>0){
东部(“绿色”);
}如果(y_距离==0),则为else{
如果(x_距离>0){
北方(“绿色”);
}else if(x_距离<0){
南方(“绿色”);
}
}否则{
西部(“绿色”);
}
}
}

一个明显的问题是,您需要检查顶部附近的绝对值

而不是

if (x_distance > y_distance) {
    larger = 'x';
} else if (y_distance > x_distance) {
你需要

if (Math.abs(x_distance) > Math.abs(y_distance)) {
    larger = 'x';
} else if (Math.abs(y_distance) > Math.abs(x_distance)) {
因为你仍然想要“最大的”,即使它是负数

现在更新它在x=y处停止。从代码上看,对于这种情况,东等的论点中没有“绿色”


更新好了,现在当它在对角线上时出错了,所以我猜东/西是“o”情况下的错误方向(事实上,它们与“y”情况不一致)。现在看起来好多了

需要更多的信息,那么“什么都不管用”。它只是静止不动吗?你喜欢随机循环吗?弹出一个错误消息框?好吧,它似乎只是随机移动,我将弹出一个指向当前的链接。非常感谢!我之前做过,但经过一些调整后忘记了重新恢复。非常感谢那是什么?我想肯定还有更多。。。很高兴我能帮忙!哈哈,是的。现在我试着让机器人也按照你说唱的方式移动。我想我能拿到它。好吧,现在我仔细检查了一下,这仍然不起作用。:/对不起,误解了。还有其他想法吗?好吧,我怎么解决的,现在怎么办?另外,我提供的链接总是最新的代码。
if (Math.abs(x_distance) > Math.abs(y_distance)) {
    larger = 'x';
} else if (Math.abs(y_distance) > Math.abs(x_distance)) {