使用 xskak 在非棋类游戏中移动棋子

使用 xskak 在非棋类游戏中移动棋子

我正在尝试使用xskakchessboard显示国际象棋以外的其他游戏,但是我无法xskak移动棋子。

问题可能是我的主板5x5不是8x8

下面是我的非工作源代码,它尝试将 c1 处的白色棋子移动到 c2 处:

\documentclass{article}
\usepackage{chessboard}
\usepackage{xskak}
\begin{document}

\def\neutrinoChar{\bullet}

\makeatletter
\cbDefineNewPiece{white}{X}{
    \raisebox{\depth}{\cfss@whitepiececolor$\neutrinoChar$}
}{
    \BlackEmptySquare\makebox[0pt][r]{\cfss@whitepiececolor\raisebox{\depth}{\makebox[1em]{$\neutrinoChar$}}}
}
\makeatother

\styleB
\setchessboard{
    maxfield=e5
}

\xskakset{defaultfen=ppppp/5/2X2/5/PPPPP}

\newchessgame

\chessboard

\mainline{1. Pc2}
\chessboard[setfen=\xskakget{nextfen}]

\end{document}

我实际上并不关心国际象棋移动符号,所以类似的一些语法c1-c2对我来说就足够了。

答案1

正如文档中某处提到的,skak(用于执行移动的内部引擎)不喜欢不寻常的棋盘。因此,maxfield您最好使用正常尺寸的棋盘,然后限制打印区域:

\documentclass{article}
\usepackage{chessboard}
\usepackage{xskak}
\begin{document}

\def\neutrinoChar{\bullet}

\makeatletter
\cbDefineNewPiece{white}{X}{
    \raisebox{\depth}{\cfss@whitepiececolor$\neutrinoChar$}
}{
    \BlackEmptySquare\makebox[0pt][r]{\cfss@whitepiececolor\raisebox{\depth}{\makebox[1em]{$\neutrinoChar$}}}
}
\makeatother

\styleB
\setchessboard{
  printarea=a1-e5
    %maxfield=e5
}

\xskakset{defaultfen=5/5/5/ppppp/5/2X2/5/PPPPP/5}

\newchessgame

\chessboard

\mainline{1. c2}
\chessboard

\end{document}

在此处输入图片描述

我不知道你的 neutrinoChar 是否以及如何移动,但你应该知道 skak 可能无法做到这一点。此外,skak 会检查移动是否“合法”,因此并非你尝试的每一个移动都会被执行。(也许将来的某一天我会找到时间来完成xchess……)。但你自然总是可以通过用棋盘键改变棋盘上的位置来假装移动。

相关内容