movePoints method
获取当前子力能移动的位置 target 为目标位置,如果传入了目标位置,则会优化检测
Implementation
List<String> movePoints(ChessPos activePos, [ChessPos? target]) {
String code = fen[activePos.y][activePos.x];
if (code.isEmpty || code == '0') return [];
int team = code.codeUnitAt(0) < ChessFen.colIndexBase ? 0 : 1;
code = code.toLowerCase();
switch (code) {
case 'p':
return _moveP(team, code, activePos, target);
case 'c':
return _moveC(team, code, activePos, target);
case 'r':
return _moveR(team, code, activePos, target);
case 'n':
return _moveN(team, code, activePos, target);
case 'b':
return _moveB(team, code, activePos, target);
case 'a':
return _moveA(team, code, activePos, target);
case 'k':
return _moveK(team, code, activePos, target);
default:
return [];
}
}