Incorperating FEN
I'm trying to integrate Forsyth-Edwards Notation into my chess app. However, there seems to be a permanent loop in there somewhere that I just can't locate. Here's my code. public string FEN = "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1";
and private void SetFEN() { int i = 0; Debug.Log(FEN[i]); for (int y = 7; y > -1;) { for (int x = 0; x < 8;) { GameObject go; BaseCell baseCell; //White Debug.Log(i); Debug.Log(FEN[i]); if (FEN[i] == 'K') { go = GameObject.Find(x.ToString() + y.ToString()); baseCell = go.GetComponent(); baseCell.cellCondition = "2"; BaseCell.isWhite = true; x++; } else if (FEN[i] == 'Q') { go = GameObject.Find(x.ToString() + y.ToString()); baseCell = go.GetComponent(); baseCell.cellCondition = "3"; BaseCell.isWhite = true; x++; } else if (FEN[i] == 'R') { go = GameObject.Find(x.ToString() + y.ToString()); baseCell = go.GetComponent(); baseCell.cellCondition = "4"; BaseCell.isWhite = true; x++; } else if (FEN[i] == 'B') { go = GameObject.Find(x.ToString() + y.ToString()); baseCell = go.GetComponent(); baseCell.cellCondition = "5"; BaseCell.isWhite = true; x++; } else if (FEN[i] == 'N') { go = GameObject.Find(x.ToString() + y.ToString()); baseCell = go.GetComponent(); baseCell.cellCondition = "6"; BaseCell.isWhite = true; x++; } else if (FEN[i] == 'P') { go = GameObject.Find(x.ToString() + y.ToString()); baseCell = go.GetComponent(); baseCell.cellCondition = "7"; BaseCell.isWhite = true; x++; }
//Black
else if (FEN[i] == 'k')
{
go = GameObject.Find(x.ToString() + y.ToString());
baseCell = go.GetComponent<BaseCell>();
baseCell.cellCondition = "8";
BaseCell.isWhite = false;
x++;
}
else if (FEN[i] == 'q')
{
go = GameObject.Find(x.ToString() + y.ToString());
baseCell = go.GetComponent<BaseCell>();
baseCell.cellCondition = "9";
BaseCell.isWhite = false;
x++;
}
else if (FEN[i] == 'r')
{
go = GameObject.Find(x.ToString() + y.ToString());
baseCell = go.GetComponent<BaseCell>();
baseCell.cellCondition = "10";
BaseCell.isWhite = false;
x++;
}
else if (FEN[i] == 'b')
{
go = GameObject.Find(x.ToString() + y.ToString());
baseCell = go.GetComponent<BaseCell>();
baseCell.cellCondition = "11";
BaseCell.isWhite = false;
x++;
}
else if (FEN[i] == 'n')
{
go = GameObject.Find(x.ToString() + y.ToString());
baseCell = go.GetComponent<BaseCell>();
baseCell.cellCondition = "12";
BaseCell.isWhite = false;
x++;
}
else if (FEN[i] == 'p')
{
go = GameObject.Find(x.ToString() + y.ToString());
baseCell = go.GetComponent<BaseCell>();
baseCell.cellCondition = "13";
BaseCell.isWhite = false;
x++;
}
// Slash /
else if(FEN[i] == '/')
{
y--;
}
// Space
else if(FEN[i]== ' ')
{
x = 10;
y = -2;
}
//Numbers
else
{
x += (int)FEN[i];
}
i++;
}
}
Debug.Log("2");
i++;
while (true)
{
if (FEN[i] == ' ')
{
i++;
break;
}
else if (FEN[i] == 'w')
{
isWhiteTurn = true;
i++;
}
else if (FEN[i] == 'b')
{
isWhiteTurn = false;
i++;
}
else
{
Debug.Log("Fail 1");
break;
}
}
Debug.Log("3");
i++;
while (true)
{
if(FEN[i] == '-')
{
wKCastle = false;
wQCastle = false;
bKCastle = false;
bQCastle = false;
i += 2;
break;
}
else if(FEN[i] == ' ')
{
i++;
break;
}
else if(FEN[i] == 'K')
{
wKCastle = true;
i++;
}
else if (FEN[i] == 'Q')
{
wKCastle = false;
wQCastle = true;
i++;
}
else if (FEN[i] == 'k')
{
wKCastle = false;
wQCastle = false;
bKCastle = true;
i++;
}
else if(FEN[i] == 'q')
{
wKCastle = false;
wQCastle = false;
bKCastle = false;
bQCastle = true;
}
else
{
Debug.Log("Fail 2");
break;
}
}
Debug.Log("4");
moveOutCount = (int)FEN[i];
i += 2;
moveCount = (int)FEN[iv ];
Debug.Log("5");
}