From 4e64e16fa78072836ded72ac2cc1a7763d352ba4 Mon Sep 17 00:00:00 2001 From: CyB3RC0nN0R Date: Mon, 28 Oct 2019 18:31:18 +0100 Subject: [PATCH] Implemented 'position moves' command in UCI protocol --- src/dev/kske/chess/uci/UCIHandle.java | 76 +++++++++++---------------- 1 file changed, 30 insertions(+), 46 deletions(-) diff --git a/src/dev/kske/chess/uci/UCIHandle.java b/src/dev/kske/chess/uci/UCIHandle.java index c810166..a2b8f53 100644 --- a/src/dev/kske/chess/uci/UCIHandle.java +++ b/src/dev/kske/chess/uci/UCIHandle.java @@ -2,6 +2,10 @@ package dev.kske.chess.uci; import java.io.IOException; import java.io.PrintWriter; +import java.util.List; +import java.util.StringJoiner; + +import dev.kske.chess.board.Move; /** * Project: Chess
@@ -31,34 +35,26 @@ public class UCIHandle { /** * Tells the engine to use UCI. */ - public void uci() { - out.println("uci"); - } + public void uci() { out.println("uci"); } /** * Switches the debug mode of the engine on or off. * * @param debug Enables debugging if set to {@code true}, disables it otherwise */ - public void debug(boolean debug) { - out.println("debug " + (debug ? "on" : "off")); - } + public void debug(boolean debug) { out.println("debug " + (debug ? "on" : "off")); } /** * Synchronized the engine with the GUI */ - public void isready() { - out.println("isready"); - } + public void isready() { out.println("isready"); } /** * Signifies a button press to the engine. * * @param name The name of the button */ - public void setOption(String name) { - out.println("setoption name " + name); - } + public void setOption(String name) { out.println("setoption name " + name); } /** * Changes an internal parameter of the engine. @@ -66,9 +62,7 @@ public class UCIHandle { * @param name The name of the parameter * @param value The value of the parameter */ - public void setOption(String name, String value) { - out.printf("setoption name %s value %s%n", name, value); - } + public void setOption(String name, String value) { out.printf("setoption name %s value %s%n", name, value); } /** * Registers the engine @@ -76,70 +70,60 @@ public class UCIHandle { * @param name The name the engine should be registered with * @param code The code the engine should be registered with */ - public void register(String name, String code) { - out.printf("register %s %s%n", name, code); - } + public void register(String name, String code) { out.printf("register %s %s%n", name, code); } /** * Tells the engine to postpone the registration. */ - public void registerLater() { - out.println("register later"); - } + public void registerLater() { out.println("register later"); } /** * Tells the engine that the next search will be from a different game. */ - public void uciNewGame() { - out.println("ucinewgame"); - } - - // TODO: position + public void uciNewGame() { out.println("ucinewgame"); } /** * Sets up the position in its initial state. */ - public void startPosition() { - out.println("position startpos"); - } + public void positionStartpos() { out.println("position startpos"); } /** * Sets up the position described in the FEN string. * * @param fen FEN representation of the current board */ - public void positionFEN(String fen) { - out.println("position fen " + fen); + public void positionFEN(String fen) { out.println("position fen " + fen); } + + /** + * Sets up the position described by a list of moves. + * + * @param moves the moves to execute from the starting position to reach the + * desired position + */ + public void positionMoves(List moves) { + StringJoiner joiner = new StringJoiner(" "); + moves.forEach(m -> joiner.add(m.toLAN())); + out.println("position moves " + joiner.toString()); } // TODO: go with parameters - public void go() { - out.println("go"); - } + public void go() { out.println("go"); } /** * Stops calculation as soon as possible. */ - public void stop() { - out.println("stop"); - } + public void stop() { out.println("stop"); } /** * Tells the engine that the user has played the expected move. */ - public void ponderHit() { - out.println("ponderhit"); - } + public void ponderHit() { out.println("ponderhit"); } /** * Quits the engine process as soon as possible. */ - public void quit() { - out.println("quit"); - } + public void quit() { out.println("quit"); } - public void setListener(UCIListener listener) { - receiver.addListener(listener); - } + public void setListener(UCIListener listener) { receiver.addListener(listener); } }