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); }
}