5
玩Antichess!
https://en.wikipedia.org/wiki/Losing_chess 这基本上是国际象棋比赛,但是对于古董;) Antichess是已发明的许多国际象棋变体之一。目的是要丢掉所有的棋子(这看起来有些奇怪,但是有一定的原因被称为安息)。 规则 固定规则与标准国际象棋非常相似-但有一些相当小的差异。正如我上面提到的,目标是失去所有的碎片。要做到这一点,如果对手有机会抓住你的一个棋子,那是他唯一能采取的行动。如果您在一回合中给予他多次机会,另一位玩家可以选择他的回合。另一件事发生了变化,那就是国王没有特殊的权力-因为您无法与对手对峙,也不能迫使他受阻。 对标准游戏的以下更改也将适用(它们有助于简化游戏): 传递将被忽略。 卡丁车是不可能的。 在五十移动规则适用自动(意为平局的游戏结束)。 典当将能够选择它们要推广到的东西。 如果玩家需要超过2秒的移动时间,他将输掉比赛。 返回无效的举动将导致游戏失败。 为了赢得胜利,您的对手必须夺走您所有的碎片。 怀特开始比赛。 白色位于字段的“底部”(y = 0),黑色位于顶部(y = 7)。 禁止访问除您的漫游器以外的其他资源(互联网,文件,其他漫游器,...)。 计分 获胜将使您获得3分,平局1分,而输0分。 每个提交将与对方提交进行10次对战(白色5次,黑色5次)。 编写你的机器人 控制器代码在这里:https : //github.com/JJ-Atkinson/SimpleAntichessKOTH 您可以用Java或Groovy编写您的机器人。要编写机器人,您必须扩展Player该类。播放器类具有一种抽象方法Move getMove(Board board, Player enemy, Set<Move> validMoves)。 以下是一些有用方法的简要介绍: Player: List<Piece> getPieces(Board board):退还您板上所有的零件。 PieceUpgradeType pieceUpgradeType:如果/当其中一个棋子到达棋盘的末端时,您需要将其定义为要升级到的棋子类型。你的选择ROOK,KNIGHT,QUEEN,BISHOP,和KING。 Board: Field getFieldAtLoc(Location loc):返回Field的位置。这具有匹配的getAt方法,因此,如果您使用的是groovy,则可以编写board[loc]。 Field getFieldAtLoc(int x, int y):返回Field的位置。这具有匹配的getAt方法,因此,如果您使用的是groovy,则可以编写board[x, …