问题描述
我正在尝试将国际象棋棋盘协调的x和y标准化为a1 ... b4 ... e2等。但是它总是使我在结尾处抛出NaN(https://prnt.sc/uhtk4x)。我现在很伤心:(已经尝试了很长时间,但是没有运气 而且它不断抛出一些随机值-https://prnt.sc/uhtjtc
var FinalStorage;
var BoardSize;
function SetupPieces()
{
var piecesObj = document.getElementsByClassName("chess_com_piece chess_com_draggable");
let imgSrc = [];
for(var i=0;i<piecesObj.length;i++)
{
imgSrc[i] = piecesObj[i].src.substring(60);
}
var Pieces = [],FirstPosition = [],SecondPosition = [],brookX,brookY,WRookX,WRookY,brook,WRook;
for(var i=0;i<imgSrc.length;i++)
{
var TempPieceLocObj = (piecesObj[i].style.transform).substring(10);
TempPieceLocObj = (TempPieceLocObj.substring(0,TempPieceLocObj.length - 1)).split(",");
FirstPosition[i] = (TempPieceLocObj[0].split("px"))[0];
SecondPosition[i] = (TempPieceLocObj[1].split("px"))[0];
switch(imgSrc[i])
{
case "wp.png":
Pieces[i] = "White Pawn";
break;
case "bp.png":
Pieces[i] = "Black Pawn";
break;
case "br.png":
Pieces[i] = "Black Rook";
brook = (piecesObj[i].style.transform).substring(10);
brook = (brook.substring(0,brook.length - 1)).split(",");
brookY = parseInt(brook[1].substring(0,brook[1].length - 3),10) * 1.029684601113173;
brookX = parseInt(brook[0].substring(0,brook[1].length - 1),10) * 1.029684601113173;
break;
case "wr.png":
Pieces[i] = "White Rook";
WRook = (piecesObj[i].style.transform).substring(10);
WRook = (WRook.substring(0,WRook.length - 1)).split(",");
WRookY = parseInt(WRook[1].substring(0,WRook[1].length - 1),10) * 1.029684601113173;
WRookX = parseInt(WRook[0].substring(0,WRook[1].length - 3),10) * 1.029684601113173;
break;
case "bn.png":
Pieces[i] = "Black Knight";
break;
case "wn.png":
Pieces[i] = "White Knight";
break;
case "bb.png":
Pieces[i] = "Black Bishop";
break;
case "wb.png":
Pieces[i] = "White Bishop";
break;
case "wq.png":
Pieces[i] = "White Queen";
break;
case "bq.png":
Pieces[i] = "Black Queen";
break;
case "bk.png":
Pieces[i] = "Black King";
break;
case "wk.png":
Pieces[i] = "White King";
break;
}
}
if(WRookX !== 0) {BoardSize = WRookX;}
return [FirstPosition,SecondPosition,Pieces];
}
function normalizeCoordinates()
{
let Storage = SetupPieces(); // Getting the Pieces from the board (Storage[0] -> X Storage[1] -> Y Storage[2] -> Piece Name)
var DivIndexX = parseInt(parseInt(Storage[0][Storage.length-1],10) / 8,10);
var DivIndexY = parseInt(parseInt(Storage[1][Storage.length-1],10);
let xAxis = ["a","b","c","d","e","f","g","h"];
let yAxis = [8,7,6,5,4,3,2,1];
var TempXStorage = []; // Arrays for the normalised values to be stored in
var TempYStorage = [];
let ReadyCoord = [];
console.log("DivIndexX:" + DivIndexX + " DivIndexY:" + DivIndexY);
for(var i=0;i<Storage[0].length;i++)
{
console.log("x:" + Storage[0][i] + " y:" + Storage[1][i]); // Test console logging,to see,if x and y values are present
console.log("xSwitch:" + (parseInt(Storage[0][i],10) / parseInt(DivIndexX,10) + " ySwitch:" + (Storage[1][i] / DivIndexY)));
switch(parseInt(Storage[0][i],10) / DivIndexX)
{
case 1:
TempXStorage[i] = xAxis[0];
break;
case 2:
TempXStorage[i] = xAxis[1];
break;
case 3:
TempXStorage[i] = xAxis[2];
break;
case 4:
TempXStorage[i] = xAxis[3];
break;
case 5:
TempXStorage[i] = xAxis[4];
break;
case 6:
TempXStorage[i] = xAxis[5];
break;
case 7:
TempXStorage[i] = xAxis[6];
break;
case 8:
TempXStorage[i] = xAxis[7];
break;
}
switch(Storage[1][i] / DivIndexY)
{
case 1:
TempYStorage[i] = yAxis[0];
break;
case 2:
TempYStorage[i] = yAxis[1];
break;
case 3:
TempYStorage[i] = yAxis[2];
break;
case 4:
TempYStorage[i] = yAxis[3];
break;
case 5:
TempYStorage[i] = yAxis[4];
break;
case 6:
TempYStorage[i] = yAxis[5];
break;
case 7:
TempYStorage[i] = yAxis[6];
break;
case 8:
TempYStorage[i] = yAxis[7];
break;
}
ReadyCoord[i] = TempXStorage[i] + TempYStorage[i];
}
return [ReadyCoord,Storage[2]];
}
var testing = normalizeCoordinates();
for(var i=0; i<testing[0].length;i++)
{
console.log("Position:" + testing[0][i] + " PName:" + testing[1][i]);
}
//console.log("DivIndexX:" + DivIndexX + " DivIndexY:" + DivIndexY);
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)