import 'package:dartsunfish/index.dart'; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // User interface ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// class UI { static int parse(String? c) { var fil = c![0].codeUnits.first - 'a'.codeUnits.first; var rank = int.parse(c[1]) - 1; return A1 + fil - 10 * rank; } static String render(int i) { var rank = (i - A1) ~/ 10; var fil = (i - A1) % 10; return String.fromCharCodes([fil + 'a'.codeUnits.first]) + (-rank + 1).toString(); } static void printBoard(Position pos) { final uni_pieces = { 'R': '♜', 'N': '♞', 'B': '♝', 'Q': '♛', 'K': '♚', 'P': '♟', 'r': '♖', 'n': '♘', 'b': '♗', 'q': '♕', 'k': '♔', 'p': '♙', '.': '·', // ' ': ' ' }; print(''); final bordChars = pos.board.split('\n'); for (var i = 0; i < bordChars.length; i++) { var row = bordChars[i]; if (!row.isSpace) { var pieces = row.split('').map((e) => e = e.isSpace ? '' : uni_pieces[e]!); print('${(10 - i)}${pieces.join(' ')}'); } } print(' a b c d e f g h \n\n'); } }