Chcemy zaimplementować szkielet UCI, gdyż nie mamy jeszcze gotowego silnika,
tzn chcelibyśmy mieć program konsolowy będący w stanie wczytać i sparsować kilka komend z inputu.
DoD:
[ ] Zainstalować stockfisha i pobawić się jego interfejsem w command line
[ ] isready - wypisuje readyok na wyjście
[ ] uci - wypisuje info o silniku, narazie wystarczy id name BestiaZWroclawia 0.1
[ ] quit - wychodzi z programu
[ ] stop - narazie nic
[ ] position - docelowo będzie wczytywał pozycje.
Szkielet: position <startpos|fen <fen>> [moves <lista ruchów>]
lista ruchów powinna być oddzielona spacją
Przykłady:
position startpos
position startpos moves e2e4 e7e5 a2a3
position fen rnbq1bnr/ppppkppp/4p3/8/8/4P3/PPPPKPPP/RNBQ1BNR w - - 0 1
position fen rnbq1bnr/ppppkppp/4p3/8/8/4P3/PPPPKPPP/RNBQ1BNR w - - 0 1 moves a2a3
Nie trzeba implementować parsera do fen,
ale dobrze byłoby sprawdzić czy ruchy są w dobrym formacie <a-h><1-8><a-h><1-8>
[ ] go - rozpoczyna searcha
szkielet go [depth <int>] [movetime <int>] [movetime <int>] [btime <int>] [wtime <int>] [binc <int>] [winc <int>] - kolejność opcji nie jest ważna, można nie podać żadnej opcji.
przykłady:
go
go depth 5
go depth 8 movetime 1000
go btime 2137 wtime 2137
[ ] setoption - ustawia opcje silnika.
setoption name <name> value <value>, np setoption name Threads value 6
W zadaniu chodzi o sam szkielet, nie trzeba implementować żadnej logiki poza parsowaniem i wypisywaniem komunikatu w przypadku błędnego wprowadzenia komendy.
UCI to protokół w command line z którym odbywa się komunikacja z silnikiem. https://www.chessprogramming.org/UCI
Chcemy zaimplementować szkielet UCI, gdyż nie mamy jeszcze gotowego silnika, tzn chcelibyśmy mieć program konsolowy będący w stanie wczytać i sparsować kilka komend z inputu.
DoD:
isready
- wypisujereadyok
na wyjścieuci
- wypisuje info o silniku, narazie wystarczyid name BestiaZWroclawia 0.1
quit
- wychodzi z programustop
- narazie nicposition
- docelowo będzie wczytywał pozycje. Szkielet:position <startpos|fen <fen>> [moves <lista ruchów>]
lista ruchów powinna być oddzielona spacją Przykłady:position startpos
position startpos moves e2e4 e7e5 a2a3
position fen rnbq1bnr/ppppkppp/4p3/8/8/4P3/PPPPKPPP/RNBQ1BNR w - - 0 1
position fen rnbq1bnr/ppppkppp/4p3/8/8/4P3/PPPPKPPP/RNBQ1BNR w - - 0 1 moves a2a3
Nie trzeba implementować parsera do fen, ale dobrze byłoby sprawdzić czy ruchy są w dobrym formacie<a-h><1-8><a-h><1-8>
go
- rozpoczyna searcha szkieletgo [depth <int>] [movetime <int>] [movetime <int>] [btime <int>] [wtime <int>] [binc <int>] [winc <int>]
- kolejność opcji nie jest ważna, można nie podać żadnej opcji. przykłady:go
go depth 5
go depth 8 movetime 1000
go btime 2137 wtime 2137
setoption
- ustawia opcje silnika.setoption name <name> value <value>
, npsetoption name Threads value 6
W zadaniu chodzi o sam szkielet, nie trzeba implementować żadnej logiki poza parsowaniem i wypisywaniem komunikatu w przypadku błędnego wprowadzenia komendy.