Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在浏览器中使用javascript(无任何模块)将棋盘图转换为字符串_Javascript_Browser - Fatal编程技术网

在浏览器中使用javascript(无任何模块)将棋盘图转换为字符串

在浏览器中使用javascript(无任何模块)将棋盘图转换为字符串,javascript,browser,Javascript,Browser,我看过一篇关于如何使用python实现这一点的文章,但它是在python库中完成的,所以我尝试在没有库的情况下将其转换为javascript,结果就是这样 function board_to_fen(board) { let result = ""; for(let y = 0; y < board.length; y++) { let empty = 0; for(let x = 0; x < y.length; x++)

我看过一篇关于如何使用python实现这一点的文章,但它是在python库中完成的,所以我尝试在没有库的情况下将其转换为javascript,结果就是这样

function board_to_fen(board)
{
    let result = "";
    for(let y = 0; y < board.length; y++)
    {
        let empty = 0;
        for(let x = 0; x < y.length; x++)
        {
            let c = y[x][0];
            if(c == 'w' || c == 'b') {
                if(empty > 0)
                {
                    result += empty.toString();
                    empty = 0;
                }
                if(c == 'w')
                {
                    result += y[x][1].toUpperCase();
                } else {
                    result += y[x][1].toLowerCase();
                }                
            } else {
                empty += 1;
            }
        }
        if(empty == 0)
        {
            result += empty.toString();
        }
        result += '/';        
    }
    result += ' w KQkq - 0 1';
    return result;
}

let board = [
    ['bk', 'em', 'em', 'em', 'em', 'em', 'em', 'em'],
    ['em', 'bn', 'em', 'wr', 'em', 'wp', 'em', 'em'],
    ['br', 'em', 'bp', 'em', 'em', 'bn', 'wn', 'em'],
    ['em', 'em', 'bp', 'bp', 'bp', 'em', 'wp', 'bp'],
    ['bp', 'bp', 'em', 'bp', 'wn', 'em', 'wp', 'em'],
    ['em', 'em', 'em', 'em', 'em', 'em', 'em', 'em'],
    ['em', 'em', 'em', 'wk', 'em', 'em', 'em', 'em'],
    ['em', 'em', 'em', 'em', 'em', 'em', 'em', 'em'],
];

console.log(board_to_fen(board));
功能板至功能板(板)
{
让结果=”;
对于(设y=0;y0)
{
结果+=空的.toString();
空=0;
}
如果(c=='w')
{
结果+=y[x][1].toUpperCase();
}否则{
结果+=y[x][1].toLowerCase();
}                
}否则{
空+=1;
}
}
如果(空==0)
{
结果+=空的.toString();
}
结果+='/';
}
结果+='w KQkq-0 1';
返回结果;
}
让董事会=[
[bk',em',em',em',em',em',em',em',em'],
['em','bn','em','wr','em','wp','em','em'],
[br',em',bp',em',em',bn',wn',em'],
['em','em','bp','bp','bp','em','wp','bp'],
['bp','bp','em','bp','wn','em','wp','em'],
['em','em','em','em','em','em','em','em','em'],
['em','em','em','wk','em','em','em','em','em'],
['em','em','em','em','em','em','em','em','em'],
];
控制台日志(板到板);

该棋盘图的正确fen是“k7/1n1R1P2/r1p2nN1/2pp1pp/pp1pN1P1/8/3K4/8 w KQkq-0”,但在控制台中它打印出“0/0/0/0/0/0/w KQkq-0 1”。

在引用
棋盘时只需要一些小的修改。出现的
y[x]
基本上需要更改为
board[y][x]
,因为y是
board
数组的索引

function board_to_fen(board)
{
    let result = "";
    for(let y = 0; y < board.length; y++)
    {
        let empty = 0;
        for(let x = 0; x < board[y].length; x++)
        {
            let c = board[y][x][0];  // Fixed
            if(c == 'w' || c == 'b') {
                if(empty > 0)
                {
                    result += empty.toString();
                    empty = 0;
                }
                if(c == 'w')
                {
                    result += board[y][x][1].toUpperCase();  // Fixed
                } else {
                    result += board[y][x][1].toLowerCase();  // Fixed
                }                
            } else {
                empty += 1;
            }
        }
        if(empty > 0)   // Fixed
        {
            result += empty.toString();
        }
        if(y < board.length - 1)  // Added to eliminate last '/'
        {
          result += '/';
        }
    }
    result += ' w KQkq - 0 1';
    return result;
}

let board = [
    ['bk', 'em', 'em', 'em', 'em', 'em', 'em', 'em'],
    ['em', 'bn', 'em', 'wr', 'em', 'wp', 'em', 'em'],
    ['br', 'em', 'bp', 'em', 'em', 'bn', 'wn', 'em'],
    ['em', 'em', 'bp', 'bp', 'bp', 'em', 'wp', 'bp'],
    ['bp', 'bp', 'em', 'bp', 'wn', 'em', 'wp', 'em'],
    ['em', 'em', 'em', 'em', 'em', 'em', 'em', 'em'],
    ['em', 'em', 'em', 'wk', 'em', 'em', 'em', 'em'],
    ['em', 'em', 'em', 'em', 'em', 'em', 'em', 'em'],
];

console.log(board_to_fen(board));
功能板至功能板(板)
{
让结果=”;
对于(设y=0;y0)
{
结果+=空的.toString();
空=0;
}
如果(c=='w')
{
结果+=线路板[y][x][1]。toUpperCase();//已修复
}否则{
结果+=线路板[y][x][1]。toLowerCase();//已修复
}                
}否则{
空+=1;
}
}
if(empty>0)//已修复
{
结果+=空的.toString();
}
if(y
在参考
板时,只需要一些小的修正。出现的
y[x]
基本上需要更改为
board[y][x]
,因为y是
board
数组的索引

function board_to_fen(board)
{
    let result = "";
    for(let y = 0; y < board.length; y++)
    {
        let empty = 0;
        for(let x = 0; x < board[y].length; x++)
        {
            let c = board[y][x][0];  // Fixed
            if(c == 'w' || c == 'b') {
                if(empty > 0)
                {
                    result += empty.toString();
                    empty = 0;
                }
                if(c == 'w')
                {
                    result += board[y][x][1].toUpperCase();  // Fixed
                } else {
                    result += board[y][x][1].toLowerCase();  // Fixed
                }                
            } else {
                empty += 1;
            }
        }
        if(empty > 0)   // Fixed
        {
            result += empty.toString();
        }
        if(y < board.length - 1)  // Added to eliminate last '/'
        {
          result += '/';
        }
    }
    result += ' w KQkq - 0 1';
    return result;
}

let board = [
    ['bk', 'em', 'em', 'em', 'em', 'em', 'em', 'em'],
    ['em', 'bn', 'em', 'wr', 'em', 'wp', 'em', 'em'],
    ['br', 'em', 'bp', 'em', 'em', 'bn', 'wn', 'em'],
    ['em', 'em', 'bp', 'bp', 'bp', 'em', 'wp', 'bp'],
    ['bp', 'bp', 'em', 'bp', 'wn', 'em', 'wp', 'em'],
    ['em', 'em', 'em', 'em', 'em', 'em', 'em', 'em'],
    ['em', 'em', 'em', 'wk', 'em', 'em', 'em', 'em'],
    ['em', 'em', 'em', 'em', 'em', 'em', 'em', 'em'],
];

console.log(board_to_fen(board));
功能板至功能板(板)
{
让结果=”;
对于(设y=0;y0)
{
结果+=空的.toString();
空=0;
}
如果(c=='w')
{
结果+=线路板[y][x][1]。toUpperCase();//已修复
}否则{
结果+=线路板[y][x][1]。toLowerCase();//已修复
}                
}否则{
空+=1;
}
}
if(empty>0)//已修复
{
结果+=空的.toString();
}
if(y