From: Fabian Fichter Date: Mon, 15 Apr 2019 21:01:06 +0000 (+0200) Subject: Support modern chess X-Git-Url: http://winboard.nl/cgi-bin?a=commitdiff_plain;h=632674cb03fe2d7c06e05acdc26919abf85a6108;p=fairystockfish.git Support modern chess https://en.wikipedia.org/wiki/Modern_Chess_(chess_variant) No functional change for existing variants. --- diff --git a/Readme.md b/Readme.md index f46cbab..a16b036 100644 --- a/Readme.md +++ b/Readme.md @@ -15,7 +15,7 @@ Besides chess, the currently supported games are: - [Shogi](https://en.wikipedia.org/wiki/Shogi) **Chess variants** -- [Capablanca](https://en.wikipedia.org/wiki/Capablanca_Chess), [Janus](https://en.wikipedia.org/wiki/Janus_Chess), [Embassy](https://en.wikipedia.org/wiki/Embassy_Chess) +- [Capablanca](https://en.wikipedia.org/wiki/Capablanca_Chess), [Janus](https://en.wikipedia.org/wiki/Janus_Chess), [Modern](https://en.wikipedia.org/wiki/Modern_Chess_(chess_variant)), [Embassy](https://en.wikipedia.org/wiki/Embassy_Chess) - [Chess960](https://en.wikipedia.org/wiki/Chess960), [Placement/Pre-Chess](https://www.chessvariants.com/link/placement-chess) - [Crazyhouse](https://en.wikipedia.org/wiki/Crazyhouse), [Loop](https://en.wikipedia.org/wiki/Crazyhouse#Variations), [Chessgi](https://en.wikipedia.org/wiki/Crazyhouse#Variations), [Pocket Knight](http://www.chessvariants.com/other.dir/pocket.html) - [Amazon](https://en.wikipedia.org/wiki/Amazon_(chess)), [Chigorin](https://en.wikipedia.org/wiki/Chigorin_Chess), [Almost chess](https://en.wikipedia.org/wiki/Almost_Chess), [Hoppel-Poppel](http://www.chessvariants.com/diffmove.dir/hoppel-poppel.html) diff --git a/src/variant.cpp b/src/variant.cpp index a773a49..1bc7754 100644 --- a/src/variant.cpp +++ b/src/variant.cpp @@ -511,6 +511,18 @@ VariantMap variants; // Global object v->promotionPieceTypes = {ARCHBISHOP, QUEEN, ROOK, BISHOP, KNIGHT}; return v; } + Variant* modern_variant() { + Variant* v = fairy_variant_base(); + v->maxRank = RANK_9; + v->maxFile = FILE_I; + v->promotionRank = RANK_9; + v->castlingKingsideFile = FILE_G; + v->castlingQueensideFile = FILE_C; + v->add_piece(ARCHBISHOP, 'm'); + v->startFen = "rnbqkmbnr/ppppppppp/9/9/9/9/9/PPPPPPPPP/RNBMKQBNR w KQkq - 0 1"; + v->promotionPieceTypes = {ARCHBISHOP, QUEEN, ROOK, BISHOP, KNIGHT}; + return v; + } Variant* embassy_variant() { Variant* v = capablanca_variant(); v->castlingKingsideFile = FILE_H; @@ -612,6 +624,7 @@ void VariantMap::init() { add("shogi", shogi_variant()); add("capablanca", capablanca_variant()); add("janus", janus_variant()); + add("modern", modern_variant()); add("embassy", embassy_variant()); add("jesonmor", jesonmor_variant()); add("courier", courier_variant()); diff --git a/tests/perft.sh b/tests/perft.sh index 12d3b90..7c62ccc 100755 --- a/tests/perft.sh +++ b/tests/perft.sh @@ -62,6 +62,7 @@ if [[ $1 == "largeboard" ]]; then expect perft.exp capablanca startpos 4 805128 > /dev/null expect perft.exp embassy startpos 4 809539 > /dev/null expect perft.exp janus startpos 4 772074 > /dev/null + expect perft.exp modern startpos 4 433729 > /dev/null expect perft.exp courier startpos 4 500337 > /dev/null fi