tensor_predictors/dataAnalysis/chess/Rchess/src/print.cpp

72 lines
3.1 KiB
C++

// #include <Rcpp.h>
// #include "SchachHoernchen/utils.h"
// #include "SchachHoernchen/Board.h"
// #include "SchachHoernchen/uci.h"
// // [[Rcpp::export(name = "print.board", rng = false)]]
// void print_board(
// const Board& board,
// const bool check = true,
// const bool attacked = false,
// const bool pinned = false,
// const bool checkers = false
// ) {
// using Rcpp::Rcout;
// // Extract some properties
// piece color = board.sideToMove();
// piece enemy = static_cast<piece>(!color);
// u64 empty = ~(board.bb(piece::white) | board.bb(piece::black));
// u64 cKing = board.bb(king) & board.bb(color);
// // Construct highlight mask
// u64 attackMask = board.attacks(enemy, empty);
// u64 mask = 0;
// mask |= check ? attackMask & board.bb(color) & board.bb(king) : 0;
// mask |= attacked ? attackMask & ~board.bb(color) : 0;
// mask |= pinned ? board.pinned(enemy, cKing, empty) : 0;
// mask |= checkers ? board.checkers(enemy, cKing, empty) : 0;
// // print the board to console
// Rcout << "FEN: " << board.fen() << '\n';
// for (Index line = 0; line < 17; line++) {
// if (line % 2) {
// Index rankIndex = line / 2;
// Rcout << static_cast<char>('8' - rankIndex);
// for (Index fileIndex = 0; fileIndex < 8; fileIndex++) {
// Index squareIndex = 8 * rankIndex + fileIndex;
// if (bitMask<Square>(squareIndex) & mask) {
// if (board.piece(squareIndex)) {
// if (board.color(squareIndex) == black) {
// // bold + italic + underline + black (blue)
// Rcout << " | \033[1;3;4;94m";
// } else {
// // bold + italic + underline (+ white)
// Rcout << " | \033[1;3;4m";
// }
// Rcout << UCI::formatPiece(board.piece(squareIndex))
// << "\033[0m";
// } else {
// Rcout << " | .";
// }
// } else if (board.color(squareIndex) == black) {
// Rcout << " | \033[1m\033[94m" // bold + blue (black)
// << UCI::formatPiece(board.piece(squareIndex))
// << "\033[0m";
// } else if (board.color(squareIndex) == white) {
// Rcout << " | \033[1m\033[97m" // bold + white
// << UCI::formatPiece(board.piece(squareIndex))
// << "\033[0m";
// } else {
// Rcout << " | ";
// }
// }
// Rcout << " |";
// } else {
// Rcout << " +---+---+---+---+---+---+---+---+";
// }
// Rcout << "\033[0K\n"; // clear rest of line (remove potential leftovers)
// }
// Rcout << " a b c d e f g h" << std::endl;
// }