48 lines
1.4 KiB
Dart
48 lines
1.4 KiB
Dart
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');
|
|
}
|
|
}
|