parent
02569ae563
commit
9b16a5955d
|
@ -29,6 +29,7 @@ const char *loseReasonNoWayStr = "Player%d no way to go. Player%d win!";
|
|||
const char *loseReasonTimeOverStr = "Time over. Player%d win!";
|
||||
const char *drawReasonThreefoldRepetitionStr = "Threefold Repetition. Draw!";
|
||||
const char *drawReasonRule50Str = "N-move rule. Draw!";
|
||||
const char *drawReasonEndgameRule50Str = "Endgame N-move rule. Draw!";
|
||||
const char *loseReasonBoardIsFullStr = "Full. Player2 win!";
|
||||
const char *drawReasonBoardIsFullStr = "Full. In draw!";
|
||||
const char *loseReasonlessThanThreeStr = "Player%d win!";
|
||||
|
|
|
@ -26,6 +26,7 @@ extern const char *loseReasonNoWayStr;
|
|||
extern const char *loseReasonTimeOverStr;
|
||||
extern const char *drawReasonThreefoldRepetitionStr;
|
||||
extern const char *drawReasonRule50Str;
|
||||
extern const char *drawReasonEndgameRule50Str;
|
||||
extern const char *loseReasonBoardIsFullStr;
|
||||
extern const char *drawReasonBoardIsFullStr;
|
||||
extern const char *loseReasonlessThanThreeStr;
|
||||
|
|
|
@ -1014,6 +1014,13 @@ bool Position::check_if_game_is_over()
|
|||
set_gameover(DRAW, GameOverReason::drawReasonRule50);
|
||||
return true;
|
||||
}
|
||||
|
||||
if (rule.endgameNMoveRule < rule.nMoveRule &&
|
||||
is_three_endgame() &&
|
||||
posKeyHistory.size() > rule.endgameNMoveRule) {
|
||||
set_gameover(DRAW, GameOverReason::drawReasonEndgameRule50);
|
||||
return true;
|
||||
}
|
||||
#endif // RULE_50
|
||||
|
||||
if (pieceOnBoardCount[WHITE] + pieceOnBoardCount[BLACK] >= EFFECTIVE_SQUARE_NB) {
|
||||
|
|
|
@ -150,6 +150,8 @@ public:
|
|||
//template <typename Mt> void updateMobility(Square from, Square to);
|
||||
int calculate_mobility_diff();
|
||||
|
||||
bool is_three_endgame() const;
|
||||
|
||||
static bool is_star_square(Square s);
|
||||
|
||||
bool bitboard_is_ok();
|
||||
|
@ -353,4 +355,13 @@ inline int Position::get_mobility_diff() const
|
|||
return mobilityDiff;
|
||||
}
|
||||
|
||||
inline bool Position::is_three_endgame() const
|
||||
{
|
||||
if (get_phase() == Phase::placing) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return pieceOnBoardCount[WHITE] == 3 || pieceOnBoardCount[BLACK] == 3;
|
||||
}
|
||||
|
||||
#endif // #ifndef POSITION_H_INCLUDED
|
||||
|
|
|
@ -74,6 +74,9 @@ struct Rule
|
|||
|
||||
// The N-move rule in Mill states that if no remove has been made in the last N moves.
|
||||
unsigned int nMoveRule;
|
||||
|
||||
// If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn.
|
||||
unsigned int endgameNMoveRule;
|
||||
};
|
||||
|
||||
#define N_RULES 5
|
||||
|
|
|
@ -100,6 +100,12 @@ int Thread::search()
|
|||
if (posKeyHistory.size() > rule.nMoveRule) {
|
||||
return 50;
|
||||
}
|
||||
|
||||
if (rule.endgameNMoveRule < rule.nMoveRule &&
|
||||
rootPos->is_three_endgame() &&
|
||||
posKeyHistory.size() > rule.endgameNMoveRule) {
|
||||
return 10;
|
||||
}
|
||||
#endif // RULE_50
|
||||
|
||||
#ifdef THREEFOLD_REPETITION
|
||||
|
@ -221,7 +227,10 @@ Value qsearch(Position *pos, Sanmill::Stack<Position> &ss, Depth depth, Depth or
|
|||
Depth epsilon;
|
||||
|
||||
#ifdef RULE_50
|
||||
if (pos->rule50_count() > rule.nMoveRule) {
|
||||
if ((pos->rule50_count() > rule.nMoveRule) ||
|
||||
(rule.endgameNMoveRule < rule.nMoveRule &&
|
||||
pos->is_three_endgame() &&
|
||||
pos->rule50_count() > rule.endgameNMoveRule)) {
|
||||
alpha = VALUE_DRAW;
|
||||
if (alpha >= beta) {
|
||||
return alpha;
|
||||
|
|
|
@ -157,7 +157,7 @@ void Thread::idle_loop()
|
|||
#endif
|
||||
int ret = search();
|
||||
|
||||
if (ret == 3 || ret == 50) {
|
||||
if (ret == 3 || ret == 50 || ret == 10) {
|
||||
loggerDebug("Draw\n\n");
|
||||
strCommand = "draw";
|
||||
emitCommand();
|
||||
|
|
|
@ -181,6 +181,7 @@ enum class GameOverReason
|
|||
loseReasonTimeOver,
|
||||
drawReasonThreefoldRepetition,
|
||||
drawReasonRule50,
|
||||
drawReasonEndgameRule50,
|
||||
drawReasonBoardIsFull,
|
||||
};
|
||||
|
||||
|
|
|
@ -167,6 +167,11 @@ void on_nMoveRule(const Option &o)
|
|||
rule.nMoveRule = (unsigned int)o;
|
||||
}
|
||||
|
||||
void on_endgameNMoveRule(const Option &o)
|
||||
{
|
||||
rule.endgameNMoveRule = (unsigned int)o;
|
||||
}
|
||||
|
||||
/// Our case insensitive less() function as required by UCI protocol
|
||||
bool CaseInsensitiveLess::operator() (const string &s1, const string &s2) const
|
||||
{
|
||||
|
@ -221,6 +226,7 @@ void init(OptionsMap &o)
|
|||
o["IsLoseButNotChangeSideWhenNoWay"] << Option(true, on_isLoseButNotChangeSideWhenNoWay);
|
||||
o["MayFly"] << Option(true, on_mayFly);
|
||||
o["NMoveRule"] << Option(100, 10, 200, on_nMoveRule);
|
||||
o["EndgameNMoveRule"] << Option(100, 5, 200, on_endgameNMoveRule);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -97,6 +97,7 @@ class Config {
|
|||
static bool isLoseButNotChangeSideWhenNoWay = true;
|
||||
static bool mayFly = true;
|
||||
static int nMoveRule = 100;
|
||||
static int endgameNMoveRule = 100;
|
||||
|
||||
static Future<void> loadSettings() async {
|
||||
print("[config] Loading settings...");
|
||||
|
@ -207,6 +208,7 @@ class Config {
|
|||
settings['IsLoseButNotChangeSideWhenNoWay'] ?? true;
|
||||
rule.mayFly = Config.mayFly = settings['MayFly'] ?? true;
|
||||
rule.nMoveRule = Config.nMoveRule = settings['NMoveRule'] ?? 100;
|
||||
rule.endgameNMoveRule = Config.endgameNMoveRule = settings['EndgameNMoveRule'] ?? 100;
|
||||
|
||||
settingsLoaded = true;
|
||||
print("[config] Loading settings done!");
|
||||
|
@ -287,6 +289,7 @@ class Config {
|
|||
Config.isLoseButNotChangeSideWhenNoWay;
|
||||
settings['MayFly'] = Config.mayFly;
|
||||
settings['NMoveRule'] = Config.nMoveRule;
|
||||
settings['EndgameNMoveRule'] = Config.endgameNMoveRule;
|
||||
|
||||
settings.commit();
|
||||
|
||||
|
|
|
@ -172,6 +172,8 @@ class NativeEngine extends Engine {
|
|||
'setoption name IsLoseButNotChangeSideWhenNoWay value ${Config.isLoseButNotChangeSideWhenNoWay}');
|
||||
await send('setoption name MayFly value ${Config.mayFly}');
|
||||
await send('setoption name NMoveRule value ${Config.nMoveRule}');
|
||||
await send(
|
||||
'setoption name EndgameNMoveRule value ${Config.endgameNMoveRule}');
|
||||
}
|
||||
|
||||
String getPositionFen(Position position) {
|
||||
|
|
|
@ -1208,5 +1208,17 @@
|
|||
"removeUnplacedPiece_Detail": "إذا قام اللاعب بتشكيل الطاحونة في مرحلة التسوية ، فسوف يقوم بإزالة القطعة غير الموضوعة للخصم ويستمر في التحرك.",
|
||||
"@removeUnplacedPiece_Detail": {
|
||||
"description": "If a player forms the mill in the placing phase, she will remove the opponent's unplaced piece and continue to make a move."
|
||||
},
|
||||
"endgameNMoveRule": "Endgame N-Move rule",
|
||||
"@endgameNMoveRule": {
|
||||
"description": "Endgame N-Move rule"
|
||||
},
|
||||
"endgameNMoveRule_Detail": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn.",
|
||||
"@endgameNMoveRule_Detail": {
|
||||
"description": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn."
|
||||
},
|
||||
"drawReasonEndgameRule50": "Either player has only three pieces and neither player removes a piece within a specific moves.",
|
||||
"@drawReasonEndgameRule50": {
|
||||
"description": "Either player has only three pieces and neither player removes a piece within a specific moves."
|
||||
}
|
||||
}
|
|
@ -1208,5 +1208,17 @@
|
|||
"removeUnplacedPiece_Detail": "Ако играч формира мелницата във фазата на поставяне, тя ще премахне непоставената фигура на противника и ще продължи да прави ход.",
|
||||
"@removeUnplacedPiece_Detail": {
|
||||
"description": "If a player forms the mill in the placing phase, she will remove the opponent's unplaced piece and continue to make a move."
|
||||
},
|
||||
"endgameNMoveRule": "Endgame N-Move rule",
|
||||
"@endgameNMoveRule": {
|
||||
"description": "Endgame N-Move rule"
|
||||
},
|
||||
"endgameNMoveRule_Detail": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn.",
|
||||
"@endgameNMoveRule_Detail": {
|
||||
"description": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn."
|
||||
},
|
||||
"drawReasonEndgameRule50": "Either player has only three pieces and neither player removes a piece within a specific moves.",
|
||||
"@drawReasonEndgameRule50": {
|
||||
"description": "Either player has only three pieces and neither player removes a piece within a specific moves."
|
||||
}
|
||||
}
|
|
@ -1208,5 +1208,17 @@
|
|||
"removeUnplacedPiece_Detail": "যদি প্লেয়ার প্লেসিং পর্যায়ে মিল গঠন করে, সে প্রতিপক্ষের স্থানহীন টুকরাটি সরিয়ে দেবে এবং একটি পদক্ষেপ নিতে থাকবে।",
|
||||
"@removeUnplacedPiece_Detail": {
|
||||
"description": "If a player forms the mill in the placing phase, she will remove the opponent's unplaced piece and continue to make a move."
|
||||
},
|
||||
"endgameNMoveRule": "Endgame N-Move rule",
|
||||
"@endgameNMoveRule": {
|
||||
"description": "Endgame N-Move rule"
|
||||
},
|
||||
"endgameNMoveRule_Detail": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn.",
|
||||
"@endgameNMoveRule_Detail": {
|
||||
"description": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn."
|
||||
},
|
||||
"drawReasonEndgameRule50": "Either player has only three pieces and neither player removes a piece within a specific moves.",
|
||||
"@drawReasonEndgameRule50": {
|
||||
"description": "Either player has only three pieces and neither player removes a piece within a specific moves."
|
||||
}
|
||||
}
|
|
@ -1208,5 +1208,17 @@
|
|||
"removeUnplacedPiece_Detail": "Pokud hráč vytvoří mlýn ve fázi umisťování, odstraní soupeřovu neumístěnou figurku a pokračuje v tahu.",
|
||||
"@removeUnplacedPiece_Detail": {
|
||||
"description": "If a player forms the mill in the placing phase, she will remove the opponent's unplaced piece and continue to make a move."
|
||||
},
|
||||
"endgameNMoveRule": "Endgame N-Move rule",
|
||||
"@endgameNMoveRule": {
|
||||
"description": "Endgame N-Move rule"
|
||||
},
|
||||
"endgameNMoveRule_Detail": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn.",
|
||||
"@endgameNMoveRule_Detail": {
|
||||
"description": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn."
|
||||
},
|
||||
"drawReasonEndgameRule50": "Either player has only three pieces and neither player removes a piece within a specific moves.",
|
||||
"@drawReasonEndgameRule50": {
|
||||
"description": "Either player has only three pieces and neither player removes a piece within a specific moves."
|
||||
}
|
||||
}
|
|
@ -1208,5 +1208,17 @@
|
|||
"removeUnplacedPiece_Detail": "Hvis en spiller danner møllen i placeringsfasen, vil hun fjerne modstanderens uplacerede brik og fortsætte med at foretage et træk.",
|
||||
"@removeUnplacedPiece_Detail": {
|
||||
"description": "If a player forms the mill in the placing phase, she will remove the opponent's unplaced piece and continue to make a move."
|
||||
},
|
||||
"endgameNMoveRule": "Endgame N-Move rule",
|
||||
"@endgameNMoveRule": {
|
||||
"description": "Endgame N-Move rule"
|
||||
},
|
||||
"endgameNMoveRule_Detail": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn.",
|
||||
"@endgameNMoveRule_Detail": {
|
||||
"description": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn."
|
||||
},
|
||||
"drawReasonEndgameRule50": "Either player has only three pieces and neither player removes a piece within a specific moves.",
|
||||
"@drawReasonEndgameRule50": {
|
||||
"description": "Either player has only three pieces and neither player removes a piece within a specific moves."
|
||||
}
|
||||
}
|
|
@ -1208,5 +1208,17 @@
|
|||
"removeUnplacedPiece_Detail": "Wenn ein Spieler in der Platzierungsphase die Mühle bildet, entfernt er den nicht platzierten Stein des Gegners und macht weiter seinen Zug.",
|
||||
"@removeUnplacedPiece_Detail": {
|
||||
"description": "If a player forms the mill in the placing phase, she will remove the opponent's unplaced piece and continue to make a move."
|
||||
},
|
||||
"endgameNMoveRule": "Endgame N-Move rule",
|
||||
"@endgameNMoveRule": {
|
||||
"description": "Endgame N-Move rule"
|
||||
},
|
||||
"endgameNMoveRule_Detail": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn.",
|
||||
"@endgameNMoveRule_Detail": {
|
||||
"description": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn."
|
||||
},
|
||||
"drawReasonEndgameRule50": "Either player has only three pieces and neither player removes a piece within a specific moves.",
|
||||
"@drawReasonEndgameRule50": {
|
||||
"description": "Either player has only three pieces and neither player removes a piece within a specific moves."
|
||||
}
|
||||
}
|
|
@ -1208,5 +1208,17 @@
|
|||
"removeUnplacedPiece_Detail": "Wenn ein Spieler in der Platzierungsphase die Mühle bildet, entfernt er den nicht platzierten Stein des Gegners und macht weiter seinen Zug.",
|
||||
"@removeUnplacedPiece_Detail": {
|
||||
"description": "If a player forms the mill in the placing phase, she will remove the opponent's unplaced piece and continue to make a move."
|
||||
},
|
||||
"endgameNMoveRule": "Endgame N-Move rule",
|
||||
"@endgameNMoveRule": {
|
||||
"description": "Endgame N-Move rule"
|
||||
},
|
||||
"endgameNMoveRule_Detail": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn.",
|
||||
"@endgameNMoveRule_Detail": {
|
||||
"description": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn."
|
||||
},
|
||||
"drawReasonEndgameRule50": "Either player has only three pieces and neither player removes a piece within a specific moves.",
|
||||
"@drawReasonEndgameRule50": {
|
||||
"description": "Either player has only three pieces and neither player removes a piece within a specific moves."
|
||||
}
|
||||
}
|
|
@ -1208,5 +1208,17 @@
|
|||
"removeUnplacedPiece_Detail": "Εάν ένας παίκτης σχηματίσει το μύλο στη φάση τοποθέτησης, θα αφαιρέσει το μη τοποθετημένο κομμάτι του αντιπάλου και θα συνεχίσει να κάνει μια κίνηση.",
|
||||
"@removeUnplacedPiece_Detail": {
|
||||
"description": "If a player forms the mill in the placing phase, she will remove the opponent's unplaced piece and continue to make a move."
|
||||
},
|
||||
"endgameNMoveRule": "Endgame N-Move rule",
|
||||
"@endgameNMoveRule": {
|
||||
"description": "Endgame N-Move rule"
|
||||
},
|
||||
"endgameNMoveRule_Detail": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn.",
|
||||
"@endgameNMoveRule_Detail": {
|
||||
"description": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn."
|
||||
},
|
||||
"drawReasonEndgameRule50": "Either player has only three pieces and neither player removes a piece within a specific moves.",
|
||||
"@drawReasonEndgameRule50": {
|
||||
"description": "Either player has only three pieces and neither player removes a piece within a specific moves."
|
||||
}
|
||||
}
|
|
@ -1208,5 +1208,17 @@
|
|||
"removeUnplacedPiece_Detail": "If a player forms the mill in the placing phase, she will remove the opponent's unplaced piece and continue to make a move.",
|
||||
"@removeUnplacedPiece_Detail": {
|
||||
"description": "If a player forms the mill in the placing phase, she will remove the opponent's unplaced piece and continue to make a move."
|
||||
},
|
||||
"endgameNMoveRule": "Endgame N-Move rule",
|
||||
"@endgameNMoveRule": {
|
||||
"description": "Endgame N-Move rule"
|
||||
},
|
||||
"endgameNMoveRule_Detail": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn.",
|
||||
"@endgameNMoveRule_Detail": {
|
||||
"description": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn."
|
||||
},
|
||||
"drawReasonEndgameRule50": "Either player has only three pieces and neither player removes a piece within a specific moves.",
|
||||
"@drawReasonEndgameRule50": {
|
||||
"description": "Either player has only three pieces and neither player removes a piece within a specific moves."
|
||||
}
|
||||
}
|
|
@ -1208,5 +1208,17 @@
|
|||
"removeUnplacedPiece_Detail": "Si un jugador forma el molino en la fase de colocación, retirará la pieza no colocada del oponente y continuará haciendo un movimiento.",
|
||||
"@removeUnplacedPiece_Detail": {
|
||||
"description": "If a player forms the mill in the placing phase, she will remove the opponent's unplaced piece and continue to make a move."
|
||||
},
|
||||
"endgameNMoveRule": "Endgame N-Move rule",
|
||||
"@endgameNMoveRule": {
|
||||
"description": "Endgame N-Move rule"
|
||||
},
|
||||
"endgameNMoveRule_Detail": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn.",
|
||||
"@endgameNMoveRule_Detail": {
|
||||
"description": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn."
|
||||
},
|
||||
"drawReasonEndgameRule50": "Either player has only three pieces and neither player removes a piece within a specific moves.",
|
||||
"@drawReasonEndgameRule50": {
|
||||
"description": "Either player has only three pieces and neither player removes a piece within a specific moves."
|
||||
}
|
||||
}
|
|
@ -1208,5 +1208,17 @@
|
|||
"removeUnplacedPiece_Detail": "Kui mängija moodustab veski paigutamise faasis, eemaldab ta vastase asetamata tüki ja jätkab käigu tegemist.",
|
||||
"@removeUnplacedPiece_Detail": {
|
||||
"description": "If a player forms the mill in the placing phase, she will remove the opponent's unplaced piece and continue to make a move."
|
||||
},
|
||||
"endgameNMoveRule": "Endgame N-Move rule",
|
||||
"@endgameNMoveRule": {
|
||||
"description": "Endgame N-Move rule"
|
||||
},
|
||||
"endgameNMoveRule_Detail": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn.",
|
||||
"@endgameNMoveRule_Detail": {
|
||||
"description": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn."
|
||||
},
|
||||
"drawReasonEndgameRule50": "Either player has only three pieces and neither player removes a piece within a specific moves.",
|
||||
"@drawReasonEndgameRule50": {
|
||||
"description": "Either player has only three pieces and neither player removes a piece within a specific moves."
|
||||
}
|
||||
}
|
|
@ -1208,5 +1208,17 @@
|
|||
"removeUnplacedPiece_Detail": "اگر بازیکنی آسیاب را در مرحله قرار دادن تشکیل دهد ، مهره بدون محل حریف را برداشته و به حرکت خود ادامه می دهد.",
|
||||
"@removeUnplacedPiece_Detail": {
|
||||
"description": "If a player forms the mill in the placing phase, she will remove the opponent's unplaced piece and continue to make a move."
|
||||
},
|
||||
"endgameNMoveRule": "Endgame N-Move rule",
|
||||
"@endgameNMoveRule": {
|
||||
"description": "Endgame N-Move rule"
|
||||
},
|
||||
"endgameNMoveRule_Detail": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn.",
|
||||
"@endgameNMoveRule_Detail": {
|
||||
"description": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn."
|
||||
},
|
||||
"drawReasonEndgameRule50": "Either player has only three pieces and neither player removes a piece within a specific moves.",
|
||||
"@drawReasonEndgameRule50": {
|
||||
"description": "Either player has only three pieces and neither player removes a piece within a specific moves."
|
||||
}
|
||||
}
|
|
@ -1208,5 +1208,17 @@
|
|||
"removeUnplacedPiece_Detail": "Jos pelaaja muodostaa myllyn sijoitusvaiheessa, hän poistaa vastustajan sijoittamattoman palan ja jatkaa siirtoa.",
|
||||
"@removeUnplacedPiece_Detail": {
|
||||
"description": "If a player forms the mill in the placing phase, she will remove the opponent's unplaced piece and continue to make a move."
|
||||
},
|
||||
"endgameNMoveRule": "Endgame N-Move rule",
|
||||
"@endgameNMoveRule": {
|
||||
"description": "Endgame N-Move rule"
|
||||
},
|
||||
"endgameNMoveRule_Detail": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn.",
|
||||
"@endgameNMoveRule_Detail": {
|
||||
"description": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn."
|
||||
},
|
||||
"drawReasonEndgameRule50": "Either player has only three pieces and neither player removes a piece within a specific moves.",
|
||||
"@drawReasonEndgameRule50": {
|
||||
"description": "Either player has only three pieces and neither player removes a piece within a specific moves."
|
||||
}
|
||||
}
|
|
@ -1208,5 +1208,17 @@
|
|||
"removeUnplacedPiece_Detail": "Si un joueur forme le moulin lors de la phase de placement, il retirera la pièce non placée de l'adversaire et continuera à se déplacer.",
|
||||
"@removeUnplacedPiece_Detail": {
|
||||
"description": "If a player forms the mill in the placing phase, she will remove the opponent's unplaced piece and continue to make a move."
|
||||
},
|
||||
"endgameNMoveRule": "Endgame N-Move rule",
|
||||
"@endgameNMoveRule": {
|
||||
"description": "Endgame N-Move rule"
|
||||
},
|
||||
"endgameNMoveRule_Detail": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn.",
|
||||
"@endgameNMoveRule_Detail": {
|
||||
"description": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn."
|
||||
},
|
||||
"drawReasonEndgameRule50": "Either player has only three pieces and neither player removes a piece within a specific moves.",
|
||||
"@drawReasonEndgameRule50": {
|
||||
"description": "Either player has only three pieces and neither player removes a piece within a specific moves."
|
||||
}
|
||||
}
|
|
@ -1208,5 +1208,17 @@
|
|||
"removeUnplacedPiece_Detail": "જો કોઈ ખેલાડી પ્લેસિંગ તબક્કામાં મિલની રચના કરે છે, તો તે વિરોધીના સ્થાનાંતરિત ભાગને દૂર કરશે અને ચાલ ચાલુ રાખશે.",
|
||||
"@removeUnplacedPiece_Detail": {
|
||||
"description": "If a player forms the mill in the placing phase, she will remove the opponent's unplaced piece and continue to make a move."
|
||||
},
|
||||
"endgameNMoveRule": "Endgame N-Move rule",
|
||||
"@endgameNMoveRule": {
|
||||
"description": "Endgame N-Move rule"
|
||||
},
|
||||
"endgameNMoveRule_Detail": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn.",
|
||||
"@endgameNMoveRule_Detail": {
|
||||
"description": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn."
|
||||
},
|
||||
"drawReasonEndgameRule50": "Either player has only three pieces and neither player removes a piece within a specific moves.",
|
||||
"@drawReasonEndgameRule50": {
|
||||
"description": "Either player has only three pieces and neither player removes a piece within a specific moves."
|
||||
}
|
||||
}
|
|
@ -1208,5 +1208,17 @@
|
|||
"removeUnplacedPiece_Detail": "यदि कोई खिलाड़ी प्लेसिंग चरण में चक्की बनाता है, तो वह प्रतिद्वंद्वी के स्थान से हटाए गए टुकड़े को हटा देगी और एक चाल चलती रहेगी।",
|
||||
"@removeUnplacedPiece_Detail": {
|
||||
"description": "If a player forms the mill in the placing phase, she will remove the opponent's unplaced piece and continue to make a move."
|
||||
},
|
||||
"endgameNMoveRule": "Endgame N-Move rule",
|
||||
"@endgameNMoveRule": {
|
||||
"description": "Endgame N-Move rule"
|
||||
},
|
||||
"endgameNMoveRule_Detail": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn.",
|
||||
"@endgameNMoveRule_Detail": {
|
||||
"description": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn."
|
||||
},
|
||||
"drawReasonEndgameRule50": "Either player has only three pieces and neither player removes a piece within a specific moves.",
|
||||
"@drawReasonEndgameRule50": {
|
||||
"description": "Either player has only three pieces and neither player removes a piece within a specific moves."
|
||||
}
|
||||
}
|
|
@ -1208,5 +1208,17 @@
|
|||
"removeUnplacedPiece_Detail": "Ako igrač formira mlin u fazi postavljanja, uklonit će protivnikov nezamješten dio i nastaviti činiti potez.",
|
||||
"@removeUnplacedPiece_Detail": {
|
||||
"description": "If a player forms the mill in the placing phase, she will remove the opponent's unplaced piece and continue to make a move."
|
||||
},
|
||||
"endgameNMoveRule": "Endgame N-Move rule",
|
||||
"@endgameNMoveRule": {
|
||||
"description": "Endgame N-Move rule"
|
||||
},
|
||||
"endgameNMoveRule_Detail": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn.",
|
||||
"@endgameNMoveRule_Detail": {
|
||||
"description": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn."
|
||||
},
|
||||
"drawReasonEndgameRule50": "Either player has only three pieces and neither player removes a piece within a specific moves.",
|
||||
"@drawReasonEndgameRule50": {
|
||||
"description": "Either player has only three pieces and neither player removes a piece within a specific moves."
|
||||
}
|
||||
}
|
|
@ -1208,5 +1208,17 @@
|
|||
"removeUnplacedPiece_Detail": "Ha egy játékos az elhelyezési szakaszban megalapítja a malmot, akkor eltávolítja az ellenfél elhelyezett darabját, és folytatja a lépést.",
|
||||
"@removeUnplacedPiece_Detail": {
|
||||
"description": "If a player forms the mill in the placing phase, she will remove the opponent's unplaced piece and continue to make a move."
|
||||
},
|
||||
"endgameNMoveRule": "Endgame N-Move rule",
|
||||
"@endgameNMoveRule": {
|
||||
"description": "Endgame N-Move rule"
|
||||
},
|
||||
"endgameNMoveRule_Detail": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn.",
|
||||
"@endgameNMoveRule_Detail": {
|
||||
"description": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn."
|
||||
},
|
||||
"drawReasonEndgameRule50": "Either player has only three pieces and neither player removes a piece within a specific moves.",
|
||||
"@drawReasonEndgameRule50": {
|
||||
"description": "Either player has only three pieces and neither player removes a piece within a specific moves."
|
||||
}
|
||||
}
|
|
@ -1208,5 +1208,17 @@
|
|||
"removeUnplacedPiece_Detail": "Jika seorang pemain membentuk penggilingan di fase penempatan, dia akan menghapus bidak lawan yang belum ditempatkan dan terus bergerak.",
|
||||
"@removeUnplacedPiece_Detail": {
|
||||
"description": "If a player forms the mill in the placing phase, she will remove the opponent's unplaced piece and continue to make a move."
|
||||
},
|
||||
"endgameNMoveRule": "Endgame N-Move rule",
|
||||
"@endgameNMoveRule": {
|
||||
"description": "Endgame N-Move rule"
|
||||
},
|
||||
"endgameNMoveRule_Detail": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn.",
|
||||
"@endgameNMoveRule_Detail": {
|
||||
"description": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn."
|
||||
},
|
||||
"drawReasonEndgameRule50": "Either player has only three pieces and neither player removes a piece within a specific moves.",
|
||||
"@drawReasonEndgameRule50": {
|
||||
"description": "Either player has only three pieces and neither player removes a piece within a specific moves."
|
||||
}
|
||||
}
|
|
@ -1208,5 +1208,17 @@
|
|||
"removeUnplacedPiece_Detail": "Se un giocatore forma il mulino nella fase di piazzamento, rimuoverà il pezzo non piazzato dell'avversario e continuerà a fare una mossa.",
|
||||
"@removeUnplacedPiece_Detail": {
|
||||
"description": "If a player forms the mill in the placing phase, she will remove the opponent's unplaced piece and continue to make a move."
|
||||
},
|
||||
"endgameNMoveRule": "Endgame N-Move rule",
|
||||
"@endgameNMoveRule": {
|
||||
"description": "Endgame N-Move rule"
|
||||
},
|
||||
"endgameNMoveRule_Detail": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn.",
|
||||
"@endgameNMoveRule_Detail": {
|
||||
"description": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn."
|
||||
},
|
||||
"drawReasonEndgameRule50": "Either player has only three pieces and neither player removes a piece within a specific moves.",
|
||||
"@drawReasonEndgameRule50": {
|
||||
"description": "Either player has only three pieces and neither player removes a piece within a specific moves."
|
||||
}
|
||||
}
|
|
@ -1208,5 +1208,17 @@
|
|||
"removeUnplacedPiece_Detail": "スリーカムが形成されると、対戦相手の配置されていないピースのみをキャプチャしてゲームを続行できます。",
|
||||
"@removeUnplacedPiece_Detail": {
|
||||
"description": "If a player forms the mill in the placing phase, she will remove the opponent's unplaced piece and continue to make a move."
|
||||
},
|
||||
"endgameNMoveRule": "Endgame N-Move rule",
|
||||
"@endgameNMoveRule": {
|
||||
"description": "Endgame N-Move rule"
|
||||
},
|
||||
"endgameNMoveRule_Detail": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn.",
|
||||
"@endgameNMoveRule_Detail": {
|
||||
"description": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn."
|
||||
},
|
||||
"drawReasonEndgameRule50": "Either player has only three pieces and neither player removes a piece within a specific moves.",
|
||||
"@drawReasonEndgameRule50": {
|
||||
"description": "Either player has only three pieces and neither player removes a piece within a specific moves."
|
||||
}
|
||||
}
|
|
@ -1208,5 +1208,17 @@
|
|||
"removeUnplacedPiece_Detail": "ಇರಿಸುವ ಹಂತದಲ್ಲಿ ಆಟಗಾರ್ತಿಯು ಗಿರಣಿಯನ್ನು ರೂಪಿಸಿದರೆ, ಆಕೆ ಎದುರಾಳಿಯ ಸ್ಥಾನವಿಲ್ಲದ ತುಂಡನ್ನು ತೆಗೆದು ಚಲನೆಯನ್ನು ಮುಂದುವರಿಸುತ್ತಾಳೆ.",
|
||||
"@removeUnplacedPiece_Detail": {
|
||||
"description": "If a player forms the mill in the placing phase, she will remove the opponent's unplaced piece and continue to make a move."
|
||||
},
|
||||
"endgameNMoveRule": "Endgame N-Move rule",
|
||||
"@endgameNMoveRule": {
|
||||
"description": "Endgame N-Move rule"
|
||||
},
|
||||
"endgameNMoveRule_Detail": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn.",
|
||||
"@endgameNMoveRule_Detail": {
|
||||
"description": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn."
|
||||
},
|
||||
"drawReasonEndgameRule50": "Either player has only three pieces and neither player removes a piece within a specific moves.",
|
||||
"@drawReasonEndgameRule50": {
|
||||
"description": "Either player has only three pieces and neither player removes a piece within a specific moves."
|
||||
}
|
||||
}
|
|
@ -1208,5 +1208,17 @@
|
|||
"removeUnplacedPiece_Detail": "플레이어가 배치 단계에서 밀을 형성하면 상대의 배치되지 않은 조각을 제거하고 계속 이동합니다.",
|
||||
"@removeUnplacedPiece_Detail": {
|
||||
"description": "If a player forms the mill in the placing phase, she will remove the opponent's unplaced piece and continue to make a move."
|
||||
},
|
||||
"endgameNMoveRule": "Endgame N-Move rule",
|
||||
"@endgameNMoveRule": {
|
||||
"description": "Endgame N-Move rule"
|
||||
},
|
||||
"endgameNMoveRule_Detail": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn.",
|
||||
"@endgameNMoveRule_Detail": {
|
||||
"description": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn."
|
||||
},
|
||||
"drawReasonEndgameRule50": "Either player has only three pieces and neither player removes a piece within a specific moves.",
|
||||
"@drawReasonEndgameRule50": {
|
||||
"description": "Either player has only three pieces and neither player removes a piece within a specific moves."
|
||||
}
|
||||
}
|
|
@ -1208,5 +1208,17 @@
|
|||
"removeUnplacedPiece_Detail": "Jei žaidėjas suformuoja malūną dėjimo stadijoje, ji pašalina priešininko nepadėtą figūrą ir toliau daro ėjimą.",
|
||||
"@removeUnplacedPiece_Detail": {
|
||||
"description": "If a player forms the mill in the placing phase, she will remove the opponent's unplaced piece and continue to make a move."
|
||||
},
|
||||
"endgameNMoveRule": "Endgame N-Move rule",
|
||||
"@endgameNMoveRule": {
|
||||
"description": "Endgame N-Move rule"
|
||||
},
|
||||
"endgameNMoveRule_Detail": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn.",
|
||||
"@endgameNMoveRule_Detail": {
|
||||
"description": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn."
|
||||
},
|
||||
"drawReasonEndgameRule50": "Either player has only three pieces and neither player removes a piece within a specific moves.",
|
||||
"@drawReasonEndgameRule50": {
|
||||
"description": "Either player has only three pieces and neither player removes a piece within a specific moves."
|
||||
}
|
||||
}
|
|
@ -1208,5 +1208,17 @@
|
|||
"removeUnplacedPiece_Detail": "Ja spēlētājs ievieto dzirnavas ievietošanas fāzē, viņa noņem pretinieka nenovietoto gabalu un turpina gājienu.",
|
||||
"@removeUnplacedPiece_Detail": {
|
||||
"description": "If a player forms the mill in the placing phase, she will remove the opponent's unplaced piece and continue to make a move."
|
||||
},
|
||||
"endgameNMoveRule": "Endgame N-Move rule",
|
||||
"@endgameNMoveRule": {
|
||||
"description": "Endgame N-Move rule"
|
||||
},
|
||||
"endgameNMoveRule_Detail": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn.",
|
||||
"@endgameNMoveRule_Detail": {
|
||||
"description": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn."
|
||||
},
|
||||
"drawReasonEndgameRule50": "Either player has only three pieces and neither player removes a piece within a specific moves.",
|
||||
"@drawReasonEndgameRule50": {
|
||||
"description": "Either player has only three pieces and neither player removes a piece within a specific moves."
|
||||
}
|
||||
}
|
|
@ -1208,5 +1208,17 @@
|
|||
"removeUnplacedPiece_Detail": "Ако играчот ја формира воденицата во фазата на пласман, таа ќе го отстрани непласираното парче на противничката и ќе продолжи да прави потег.",
|
||||
"@removeUnplacedPiece_Detail": {
|
||||
"description": "If a player forms the mill in the placing phase, she will remove the opponent's unplaced piece and continue to make a move."
|
||||
},
|
||||
"endgameNMoveRule": "Endgame N-Move rule",
|
||||
"@endgameNMoveRule": {
|
||||
"description": "Endgame N-Move rule"
|
||||
},
|
||||
"endgameNMoveRule_Detail": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn.",
|
||||
"@endgameNMoveRule_Detail": {
|
||||
"description": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn."
|
||||
},
|
||||
"drawReasonEndgameRule50": "Either player has only three pieces and neither player removes a piece within a specific moves.",
|
||||
"@drawReasonEndgameRule50": {
|
||||
"description": "Either player has only three pieces and neither player removes a piece within a specific moves."
|
||||
}
|
||||
}
|
|
@ -1208,5 +1208,17 @@
|
|||
"removeUnplacedPiece_Detail": "Sekiranya pemain membentuk kilang dalam fasa penempatan, dia akan mengeluarkan bahagian lawan yang tidak ditempatkan dan terus bergerak.",
|
||||
"@removeUnplacedPiece_Detail": {
|
||||
"description": "If a player forms the mill in the placing phase, she will remove the opponent's unplaced piece and continue to make a move."
|
||||
},
|
||||
"endgameNMoveRule": "Endgame N-Move rule",
|
||||
"@endgameNMoveRule": {
|
||||
"description": "Endgame N-Move rule"
|
||||
},
|
||||
"endgameNMoveRule_Detail": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn.",
|
||||
"@endgameNMoveRule_Detail": {
|
||||
"description": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn."
|
||||
},
|
||||
"drawReasonEndgameRule50": "Either player has only three pieces and neither player removes a piece within a specific moves.",
|
||||
"@drawReasonEndgameRule50": {
|
||||
"description": "Either player has only three pieces and neither player removes a piece within a specific moves."
|
||||
}
|
||||
}
|
|
@ -1208,5 +1208,17 @@
|
|||
"removeUnplacedPiece_Detail": "Als een speler de molen vormt in de plaatsingsfase, zal ze het niet-geplaatste stuk van de tegenstander verwijderen en doorgaan met een zet.",
|
||||
"@removeUnplacedPiece_Detail": {
|
||||
"description": "If a player forms the mill in the placing phase, she will remove the opponent's unplaced piece and continue to make a move."
|
||||
},
|
||||
"endgameNMoveRule": "Endgame N-Move rule",
|
||||
"@endgameNMoveRule": {
|
||||
"description": "Endgame N-Move rule"
|
||||
},
|
||||
"endgameNMoveRule_Detail": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn.",
|
||||
"@endgameNMoveRule_Detail": {
|
||||
"description": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn."
|
||||
},
|
||||
"drawReasonEndgameRule50": "Either player has only three pieces and neither player removes a piece within a specific moves.",
|
||||
"@drawReasonEndgameRule50": {
|
||||
"description": "Either player has only three pieces and neither player removes a piece within a specific moves."
|
||||
}
|
||||
}
|
|
@ -1208,5 +1208,17 @@
|
|||
"removeUnplacedPiece_Detail": "Hvis en spiller danner møllen i plasseringsfasen, vil hun fjerne motstanderens uplasserte brikke og fortsette å gjøre et trekk.",
|
||||
"@removeUnplacedPiece_Detail": {
|
||||
"description": "If a player forms the mill in the placing phase, she will remove the opponent's unplaced piece and continue to make a move."
|
||||
},
|
||||
"endgameNMoveRule": "Endgame N-Move rule",
|
||||
"@endgameNMoveRule": {
|
||||
"description": "Endgame N-Move rule"
|
||||
},
|
||||
"endgameNMoveRule_Detail": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn.",
|
||||
"@endgameNMoveRule_Detail": {
|
||||
"description": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn."
|
||||
},
|
||||
"drawReasonEndgameRule50": "Either player has only three pieces and neither player removes a piece within a specific moves.",
|
||||
"@drawReasonEndgameRule50": {
|
||||
"description": "Either player has only three pieces and neither player removes a piece within a specific moves."
|
||||
}
|
||||
}
|
|
@ -1208,5 +1208,17 @@
|
|||
"removeUnplacedPiece_Detail": "Jeśli gracz utworzy młyn w fazie układania, usunie nieumieszczony pion przeciwnika i kontynuuje ruch.",
|
||||
"@removeUnplacedPiece_Detail": {
|
||||
"description": "If a player forms the mill in the placing phase, she will remove the opponent's unplaced piece and continue to make a move."
|
||||
},
|
||||
"endgameNMoveRule": "Endgame N-Move rule",
|
||||
"@endgameNMoveRule": {
|
||||
"description": "Endgame N-Move rule"
|
||||
},
|
||||
"endgameNMoveRule_Detail": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn.",
|
||||
"@endgameNMoveRule_Detail": {
|
||||
"description": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn."
|
||||
},
|
||||
"drawReasonEndgameRule50": "Either player has only three pieces and neither player removes a piece within a specific moves.",
|
||||
"@drawReasonEndgameRule50": {
|
||||
"description": "Either player has only three pieces and neither player removes a piece within a specific moves."
|
||||
}
|
||||
}
|
|
@ -1208,5 +1208,17 @@
|
|||
"removeUnplacedPiece_Detail": "Se um jogador formar o moinho na fase de colocação, ele removerá a peça não colocada do oponente e continuará a fazer um movimento.",
|
||||
"@removeUnplacedPiece_Detail": {
|
||||
"description": "If a player forms the mill in the placing phase, she will remove the opponent's unplaced piece and continue to make a move."
|
||||
},
|
||||
"endgameNMoveRule": "Endgame N-Move rule",
|
||||
"@endgameNMoveRule": {
|
||||
"description": "Endgame N-Move rule"
|
||||
},
|
||||
"endgameNMoveRule_Detail": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn.",
|
||||
"@endgameNMoveRule_Detail": {
|
||||
"description": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn."
|
||||
},
|
||||
"drawReasonEndgameRule50": "Either player has only three pieces and neither player removes a piece within a specific moves.",
|
||||
"@drawReasonEndgameRule50": {
|
||||
"description": "Either player has only three pieces and neither player removes a piece within a specific moves."
|
||||
}
|
||||
}
|
|
@ -1208,5 +1208,17 @@
|
|||
"removeUnplacedPiece_Detail": "Dacă un jucător formează moara în faza de plasare, va elimina piesa neplasată a adversarului și va continua să facă o mișcare.",
|
||||
"@removeUnplacedPiece_Detail": {
|
||||
"description": "If a player forms the mill in the placing phase, she will remove the opponent's unplaced piece and continue to make a move."
|
||||
},
|
||||
"endgameNMoveRule": "Endgame N-Move rule",
|
||||
"@endgameNMoveRule": {
|
||||
"description": "Endgame N-Move rule"
|
||||
},
|
||||
"endgameNMoveRule_Detail": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn.",
|
||||
"@endgameNMoveRule_Detail": {
|
||||
"description": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn."
|
||||
},
|
||||
"drawReasonEndgameRule50": "Either player has only three pieces and neither player removes a piece within a specific moves.",
|
||||
"@drawReasonEndgameRule50": {
|
||||
"description": "Either player has only three pieces and neither player removes a piece within a specific moves."
|
||||
}
|
||||
}
|
|
@ -1208,5 +1208,17 @@
|
|||
"removeUnplacedPiece_Detail": "Если игрок формирует мельницу в фазе размещения, он удалит неразмещенную фишку противника и продолжит движение.",
|
||||
"@removeUnplacedPiece_Detail": {
|
||||
"description": "If a player forms the mill in the placing phase, she will remove the opponent's unplaced piece and continue to make a move."
|
||||
},
|
||||
"endgameNMoveRule": "Endgame N-Move rule",
|
||||
"@endgameNMoveRule": {
|
||||
"description": "Endgame N-Move rule"
|
||||
},
|
||||
"endgameNMoveRule_Detail": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn.",
|
||||
"@endgameNMoveRule_Detail": {
|
||||
"description": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn."
|
||||
},
|
||||
"drawReasonEndgameRule50": "Either player has only three pieces and neither player removes a piece within a specific moves.",
|
||||
"@drawReasonEndgameRule50": {
|
||||
"description": "Either player has only three pieces and neither player removes a piece within a specific moves."
|
||||
}
|
||||
}
|
|
@ -1208,5 +1208,17 @@
|
|||
"removeUnplacedPiece_Detail": "Ak hráč formuje mlyn vo fáze kladenia, odstráni súperovo neumiestnené miesto a pokračuje v ťahu.",
|
||||
"@removeUnplacedPiece_Detail": {
|
||||
"description": "If a player forms the mill in the placing phase, she will remove the opponent's unplaced piece and continue to make a move."
|
||||
},
|
||||
"endgameNMoveRule": "Endgame N-Move rule",
|
||||
"@endgameNMoveRule": {
|
||||
"description": "Endgame N-Move rule"
|
||||
},
|
||||
"endgameNMoveRule_Detail": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn.",
|
||||
"@endgameNMoveRule_Detail": {
|
||||
"description": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn."
|
||||
},
|
||||
"drawReasonEndgameRule50": "Either player has only three pieces and neither player removes a piece within a specific moves.",
|
||||
"@drawReasonEndgameRule50": {
|
||||
"description": "Either player has only three pieces and neither player removes a piece within a specific moves."
|
||||
}
|
||||
}
|
|
@ -1208,5 +1208,17 @@
|
|||
"removeUnplacedPiece_Detail": "Če igralec v fazi postavitve oblikuje mlin, bo odstranil nasprotnikov nezameščen kos in nadaljeval s potezo.",
|
||||
"@removeUnplacedPiece_Detail": {
|
||||
"description": "If a player forms the mill in the placing phase, she will remove the opponent's unplaced piece and continue to make a move."
|
||||
},
|
||||
"endgameNMoveRule": "Endgame N-Move rule",
|
||||
"@endgameNMoveRule": {
|
||||
"description": "Endgame N-Move rule"
|
||||
},
|
||||
"endgameNMoveRule_Detail": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn.",
|
||||
"@endgameNMoveRule_Detail": {
|
||||
"description": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn."
|
||||
},
|
||||
"drawReasonEndgameRule50": "Either player has only three pieces and neither player removes a piece within a specific moves.",
|
||||
"@drawReasonEndgameRule50": {
|
||||
"description": "Either player has only three pieces and neither player removes a piece within a specific moves."
|
||||
}
|
||||
}
|
|
@ -1208,5 +1208,17 @@
|
|||
"removeUnplacedPiece_Detail": "Nëse një lojtar formon mullirin në fazën e vendosjes, ajo do të heqë pjesën e pavendosur të kundërshtarit dhe do të vazhdojë të bëjë një lëvizje.",
|
||||
"@removeUnplacedPiece_Detail": {
|
||||
"description": "If a player forms the mill in the placing phase, she will remove the opponent's unplaced piece and continue to make a move."
|
||||
},
|
||||
"endgameNMoveRule": "Endgame N-Move rule",
|
||||
"@endgameNMoveRule": {
|
||||
"description": "Endgame N-Move rule"
|
||||
},
|
||||
"endgameNMoveRule_Detail": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn.",
|
||||
"@endgameNMoveRule_Detail": {
|
||||
"description": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn."
|
||||
},
|
||||
"drawReasonEndgameRule50": "Either player has only three pieces and neither player removes a piece within a specific moves.",
|
||||
"@drawReasonEndgameRule50": {
|
||||
"description": "Either player has only three pieces and neither player removes a piece within a specific moves."
|
||||
}
|
||||
}
|
|
@ -1208,5 +1208,17 @@
|
|||
"removeUnplacedPiece_Detail": "Ако играч формира воденицу у фази постављања, она ће уклонити противников незамењени део и наставити да прави потез.",
|
||||
"@removeUnplacedPiece_Detail": {
|
||||
"description": "If a player forms the mill in the placing phase, she will remove the opponent's unplaced piece and continue to make a move."
|
||||
},
|
||||
"endgameNMoveRule": "Endgame N-Move rule",
|
||||
"@endgameNMoveRule": {
|
||||
"description": "Endgame N-Move rule"
|
||||
},
|
||||
"endgameNMoveRule_Detail": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn.",
|
||||
"@endgameNMoveRule_Detail": {
|
||||
"description": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn."
|
||||
},
|
||||
"drawReasonEndgameRule50": "Either player has only three pieces and neither player removes a piece within a specific moves.",
|
||||
"@drawReasonEndgameRule50": {
|
||||
"description": "Either player has only three pieces and neither player removes a piece within a specific moves."
|
||||
}
|
||||
}
|
|
@ -1208,5 +1208,17 @@
|
|||
"removeUnplacedPiece_Detail": "Om en spelare bildar kvarnen i placeringsfasen, tar hon bort motståndarens oplacerade bit och fortsätter att göra ett drag.",
|
||||
"@removeUnplacedPiece_Detail": {
|
||||
"description": "If a player forms the mill in the placing phase, she will remove the opponent's unplaced piece and continue to make a move."
|
||||
},
|
||||
"endgameNMoveRule": "Endgame N-Move rule",
|
||||
"@endgameNMoveRule": {
|
||||
"description": "Endgame N-Move rule"
|
||||
},
|
||||
"endgameNMoveRule_Detail": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn.",
|
||||
"@endgameNMoveRule_Detail": {
|
||||
"description": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn."
|
||||
},
|
||||
"drawReasonEndgameRule50": "Either player has only three pieces and neither player removes a piece within a specific moves.",
|
||||
"@drawReasonEndgameRule50": {
|
||||
"description": "Either player has only three pieces and neither player removes a piece within a specific moves."
|
||||
}
|
||||
}
|
|
@ -1208,5 +1208,17 @@
|
|||
"removeUnplacedPiece_Detail": "ప్లేసింగ్ ఉంచే దశలో ఒక క్రీడాకారుడు మిల్లును ఏర్పాటు చేస్తే, ఆమె ప్రత్యర్థి యొక్క అన్ప్లాస్డ్ భాగాన్ని తీసివేసి, ఒక కదలికను కొనసాగిస్తుంది.",
|
||||
"@removeUnplacedPiece_Detail": {
|
||||
"description": "If a player forms the mill in the placing phase, she will remove the opponent's unplaced piece and continue to make a move."
|
||||
},
|
||||
"endgameNMoveRule": "Endgame N-Move rule",
|
||||
"@endgameNMoveRule": {
|
||||
"description": "Endgame N-Move rule"
|
||||
},
|
||||
"endgameNMoveRule_Detail": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn.",
|
||||
"@endgameNMoveRule_Detail": {
|
||||
"description": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn."
|
||||
},
|
||||
"drawReasonEndgameRule50": "Either player has only three pieces and neither player removes a piece within a specific moves.",
|
||||
"@drawReasonEndgameRule50": {
|
||||
"description": "Either player has only three pieces and neither player removes a piece within a specific moves."
|
||||
}
|
||||
}
|
|
@ -1208,5 +1208,17 @@
|
|||
"removeUnplacedPiece_Detail": "หากผู้เล่นสร้างโรงสีในขั้นตอนการวาง เธอจะถอดชิ้นส่วนที่ไม่ได้วางของคู่ต่อสู้ออกและทำการเคลื่อนไหวต่อไป",
|
||||
"@removeUnplacedPiece_Detail": {
|
||||
"description": "If a player forms the mill in the placing phase, she will remove the opponent's unplaced piece and continue to make a move."
|
||||
},
|
||||
"endgameNMoveRule": "Endgame N-Move rule",
|
||||
"@endgameNMoveRule": {
|
||||
"description": "Endgame N-Move rule"
|
||||
},
|
||||
"endgameNMoveRule_Detail": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn.",
|
||||
"@endgameNMoveRule_Detail": {
|
||||
"description": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn."
|
||||
},
|
||||
"drawReasonEndgameRule50": "Either player has only three pieces and neither player removes a piece within a specific moves.",
|
||||
"@drawReasonEndgameRule50": {
|
||||
"description": "Either player has only three pieces and neither player removes a piece within a specific moves."
|
||||
}
|
||||
}
|
|
@ -1208,5 +1208,17 @@
|
|||
"removeUnplacedPiece_Detail": "Bir oyuncu değirmeni yerleştirme aşamasında oluşturursa, rakibin yerleştirilmemiş taşını kaldıracak ve hamle yapmaya devam edecektir.",
|
||||
"@removeUnplacedPiece_Detail": {
|
||||
"description": "If a player forms the mill in the placing phase, she will remove the opponent's unplaced piece and continue to make a move."
|
||||
},
|
||||
"endgameNMoveRule": "Endgame N-Move rule",
|
||||
"@endgameNMoveRule": {
|
||||
"description": "Endgame N-Move rule"
|
||||
},
|
||||
"endgameNMoveRule_Detail": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn.",
|
||||
"@endgameNMoveRule_Detail": {
|
||||
"description": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn."
|
||||
},
|
||||
"drawReasonEndgameRule50": "Either player has only three pieces and neither player removes a piece within a specific moves.",
|
||||
"@drawReasonEndgameRule50": {
|
||||
"description": "Either player has only three pieces and neither player removes a piece within a specific moves."
|
||||
}
|
||||
}
|
|
@ -1208,5 +1208,17 @@
|
|||
"removeUnplacedPiece_Detail": "Agar o'yinchi joylashtirish bosqichida tegirmonni hosil qilsa, u raqibning joylanmagan qismini olib tashlaydi va harakatni davom ettiradi.",
|
||||
"@removeUnplacedPiece_Detail": {
|
||||
"description": "If a player forms the mill in the placing phase, she will remove the opponent's unplaced piece and continue to make a move."
|
||||
},
|
||||
"endgameNMoveRule": "Endgame N-Move rule",
|
||||
"@endgameNMoveRule": {
|
||||
"description": "Endgame N-Move rule"
|
||||
},
|
||||
"endgameNMoveRule_Detail": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn.",
|
||||
"@endgameNMoveRule_Detail": {
|
||||
"description": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn."
|
||||
},
|
||||
"drawReasonEndgameRule50": "Either player has only three pieces and neither player removes a piece within a specific moves.",
|
||||
"@drawReasonEndgameRule50": {
|
||||
"description": "Either player has only three pieces and neither player removes a piece within a specific moves."
|
||||
}
|
||||
}
|
|
@ -1208,5 +1208,17 @@
|
|||
"removeUnplacedPiece_Detail": "Nếu một người chơi hình thành cối xay trong giai đoạn đặt, cô ấy sẽ loại bỏ quân cờ của đối thủ và tiếp tục di chuyển.",
|
||||
"@removeUnplacedPiece_Detail": {
|
||||
"description": "If a player forms the mill in the placing phase, she will remove the opponent's unplaced piece and continue to make a move."
|
||||
},
|
||||
"endgameNMoveRule": "Endgame N-Move rule",
|
||||
"@endgameNMoveRule": {
|
||||
"description": "Endgame N-Move rule"
|
||||
},
|
||||
"endgameNMoveRule_Detail": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn.",
|
||||
"@endgameNMoveRule_Detail": {
|
||||
"description": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn."
|
||||
},
|
||||
"drawReasonEndgameRule50": "Either player has only three pieces and neither player removes a piece within a specific moves.",
|
||||
"@drawReasonEndgameRule50": {
|
||||
"description": "Either player has only three pieces and neither player removes a piece within a specific moves."
|
||||
}
|
||||
}
|
|
@ -1208,5 +1208,17 @@
|
|||
"removeUnplacedPiece_Detail": "当形成三连时,只能吃掉对手未摆的棋子并继续行棋。",
|
||||
"@removeUnplacedPiece_Detail": {
|
||||
"description": "If a player forms the mill in the placing phase, she will remove the opponent's unplaced piece and continue to make a move."
|
||||
},
|
||||
"endgameNMoveRule": "Endgame N-Move rule",
|
||||
"@endgameNMoveRule": {
|
||||
"description": "Endgame N-Move rule"
|
||||
},
|
||||
"endgameNMoveRule_Detail": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn.",
|
||||
"@endgameNMoveRule_Detail": {
|
||||
"description": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn."
|
||||
},
|
||||
"drawReasonEndgameRule50": "Either player has only three pieces and neither player removes a piece within a specific moves.",
|
||||
"@drawReasonEndgameRule50": {
|
||||
"description": "Either player has only three pieces and neither player removes a piece within a specific moves."
|
||||
}
|
||||
}
|
|
@ -1208,5 +1208,17 @@
|
|||
"removeUnplacedPiece_Detail": "當形成三連時,只能吃掉對手未擺的棋子並繼續行棋。",
|
||||
"@removeUnplacedPiece_Detail": {
|
||||
"description": "If a player forms the mill in the placing phase, she will remove the opponent's unplaced piece and continue to make a move."
|
||||
},
|
||||
"endgameNMoveRule": "Endgame N-Move rule",
|
||||
"@endgameNMoveRule": {
|
||||
"description": "Endgame N-Move rule"
|
||||
},
|
||||
"endgameNMoveRule_Detail": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn.",
|
||||
"@endgameNMoveRule_Detail": {
|
||||
"description": "If either player has only three pieces and neither player removes a piece within a specific moves, the game is drawn."
|
||||
},
|
||||
"drawReasonEndgameRule50": "Either player has only three pieces and neither player removes a piece within a specific moves.",
|
||||
"@drawReasonEndgameRule50": {
|
||||
"description": "Either player has only three pieces and neither player removes a piece within a specific moves."
|
||||
}
|
||||
}
|
|
@ -293,6 +293,10 @@ class Position {
|
|||
// TODO: WAR to judge rule50
|
||||
if (rule.nMoveRule > 0 && posKeyHistory.length > rule.nMoveRule - 1) {
|
||||
gameOverReason = GameOverReason.drawReasonRule50;
|
||||
} else if (rule.endgameNMoveRule < rule.nMoveRule &&
|
||||
isThreeEndgame() &&
|
||||
posKeyHistory.length > rule.endgameNMoveRule - 1) {
|
||||
gameOverReason = GameOverReason.drawReasonEndgameRule50;
|
||||
} else {
|
||||
gameOverReason = GameOverReason.drawReasonThreefoldRepetition;
|
||||
}
|
||||
|
@ -764,6 +768,15 @@ class Position {
|
|||
}
|
||||
}
|
||||
|
||||
bool isThreeEndgame() {
|
||||
if (phase == Phase.placing) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return pieceOnBoardCount[PieceColor.white] == 3 ||
|
||||
pieceOnBoardCount[PieceColor.black] == 3;
|
||||
}
|
||||
|
||||
bool checkIfGameIsOver() {
|
||||
if (phase == Phase.ready || phase == Phase.gameOver) {
|
||||
return true;
|
||||
|
@ -774,6 +787,13 @@ class Position {
|
|||
return true;
|
||||
}
|
||||
|
||||
if (rule.endgameNMoveRule < rule.nMoveRule &&
|
||||
isThreeEndgame() &&
|
||||
posKeyHistory.length > rule.endgameNMoveRule) {
|
||||
setGameOver(PieceColor.draw, GameOverReason.drawReasonEndgameRule50);
|
||||
return true;
|
||||
}
|
||||
|
||||
if (pieceOnBoardCount[PieceColor.white]! +
|
||||
pieceOnBoardCount[PieceColor.black]! >=
|
||||
rankNumber * fileNumber) {
|
||||
|
|
|
@ -35,6 +35,7 @@ class Rule {
|
|||
bool isLoseButNotChangeSideWhenNoWay = true;
|
||||
bool mayFly = true;
|
||||
int nMoveRule = 100;
|
||||
int endgameNMoveRule = 100;
|
||||
}
|
||||
|
||||
Rule rule = Rule();
|
||||
|
|
|
@ -183,6 +183,7 @@ enum GameOverReason {
|
|||
loseReasonTimeOver,
|
||||
drawReasonThreefoldRepetition,
|
||||
drawReasonRule50,
|
||||
drawReasonEndgameRule50,
|
||||
drawReasonBoardIsFull
|
||||
}
|
||||
|
||||
|
|
|
@ -1207,6 +1207,8 @@ class _GamePageState extends State<GamePage>
|
|||
GameOverReason.loseReasonTimeOver:
|
||||
loserStr + S.of(context).loseReasonTimeOver,
|
||||
GameOverReason.drawReasonRule50: S.of(context).drawReasonRule50,
|
||||
GameOverReason.drawReasonEndgameRule50:
|
||||
S.of(context).drawReasonEndgameRule50,
|
||||
GameOverReason.drawReasonBoardIsFull: S.of(context).drawReasonBoardIsFull,
|
||||
GameOverReason.drawReasonThreefoldRepetition:
|
||||
S.of(context).drawReasonThreefoldRepetition,
|
||||
|
|
|
@ -86,6 +86,14 @@ class _RuleSettingsPageState extends State<RuleSettingsPage> {
|
|||
onTap: setNMoveRule,
|
||||
),
|
||||
ListItemDivider(),
|
||||
SettingsListTile(
|
||||
context: context,
|
||||
titleString: S.of(context).endgameNMoveRule,
|
||||
subtitleString: S.of(context).endgameNMoveRule_Detail,
|
||||
trailingString: Config.endgameNMoveRule.toString(),
|
||||
onTap: setEndgameNMoveRule,
|
||||
),
|
||||
ListItemDivider(),
|
||||
],
|
||||
),
|
||||
SizedBox(height: AppTheme.sizedBoxHeight),
|
||||
|
@ -331,6 +339,99 @@ class _RuleSettingsPageState extends State<RuleSettingsPage> {
|
|||
);
|
||||
}
|
||||
|
||||
setEndgameNMoveRule() {
|
||||
callback(int? endgameNMoveRule) async {
|
||||
print("[config] endgameNMoveRule = $endgameNMoveRule");
|
||||
|
||||
Navigator.of(context).pop();
|
||||
|
||||
setState(() {
|
||||
rule.endgameNMoveRule =
|
||||
Config.endgameNMoveRule = endgameNMoveRule ?? 100;
|
||||
});
|
||||
|
||||
print("[config] rule.endgameNMoveRule: ${rule.endgameNMoveRule}");
|
||||
|
||||
Config.save();
|
||||
}
|
||||
|
||||
showModalBottomSheet(
|
||||
context: context,
|
||||
builder: (BuildContext context) => Semantics(
|
||||
label: S.of(context).endgameNMoveRule,
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: <Widget>[
|
||||
RadioListTile(
|
||||
activeColor: AppTheme.switchListTileActiveColor,
|
||||
title: Text('5'),
|
||||
groupValue: Config.endgameNMoveRule,
|
||||
value: 5,
|
||||
onChanged: callback,
|
||||
),
|
||||
ListItemDivider(),
|
||||
RadioListTile(
|
||||
activeColor: AppTheme.switchListTileActiveColor,
|
||||
title: Text('10'),
|
||||
groupValue: Config.endgameNMoveRule,
|
||||
value: 10,
|
||||
onChanged: callback,
|
||||
),
|
||||
ListItemDivider(),
|
||||
RadioListTile(
|
||||
activeColor: AppTheme.switchListTileActiveColor,
|
||||
title: Text('20'),
|
||||
groupValue: Config.endgameNMoveRule,
|
||||
value: 20,
|
||||
onChanged: callback,
|
||||
),
|
||||
ListItemDivider(),
|
||||
RadioListTile(
|
||||
activeColor: AppTheme.switchListTileActiveColor,
|
||||
title: Text('30'),
|
||||
groupValue: Config.endgameNMoveRule,
|
||||
value: 30,
|
||||
onChanged: callback,
|
||||
),
|
||||
ListItemDivider(),
|
||||
RadioListTile(
|
||||
activeColor: AppTheme.switchListTileActiveColor,
|
||||
title: Text('50'),
|
||||
groupValue: Config.endgameNMoveRule,
|
||||
value: 50,
|
||||
onChanged: callback,
|
||||
),
|
||||
ListItemDivider(),
|
||||
RadioListTile(
|
||||
activeColor: AppTheme.switchListTileActiveColor,
|
||||
title: Text('60'),
|
||||
groupValue: Config.endgameNMoveRule,
|
||||
value: 60,
|
||||
onChanged: callback,
|
||||
),
|
||||
ListItemDivider(),
|
||||
RadioListTile(
|
||||
activeColor: AppTheme.switchListTileActiveColor,
|
||||
title: Text('100'),
|
||||
groupValue: Config.endgameNMoveRule,
|
||||
value: 100,
|
||||
onChanged: callback,
|
||||
),
|
||||
ListItemDivider(),
|
||||
RadioListTile(
|
||||
activeColor: AppTheme.switchListTileActiveColor,
|
||||
title: Text('200'),
|
||||
groupValue: Config.endgameNMoveRule,
|
||||
value: 200,
|
||||
onChanged: callback,
|
||||
),
|
||||
ListItemDivider(),
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
setFlyPieceCount() {
|
||||
callback(int? flyPieceCount) async {
|
||||
print("[config] flyPieceCount = $flyPieceCount");
|
||||
|
|
|
@ -1619,6 +1619,9 @@ void Game::appendGameOverReasonToMoveHistory()
|
|||
case GameOverReason::drawReasonRule50:
|
||||
snprintf(record, Position::RECORD_LEN_MAX, drawReasonRule50Str);
|
||||
break;
|
||||
case GameOverReason::drawReasonEndgameRule50:
|
||||
snprintf(record, Position::RECORD_LEN_MAX, drawReasonEndgameRule50Str);
|
||||
break;
|
||||
case GameOverReason::loseReasonBoardIsFull:
|
||||
snprintf(record, Position::RECORD_LEN_MAX, loseReasonBoardIsFullStr);
|
||||
break;
|
||||
|
@ -1719,12 +1722,15 @@ void Game::setTips()
|
|||
case GameOverReason::drawReasonRule50:
|
||||
reasonStr = "连续50回合无吃子判和。";
|
||||
break;
|
||||
case GameOverReason::drawReasonEndgameRule50:
|
||||
reasonStr = "残局中连续50回合无吃子判和。";
|
||||
break;
|
||||
case GameOverReason::drawReasonBoardIsFull:
|
||||
reasonStr = "棋盘满判和。";
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
tips = reasonStr + resultStr + scoreStr;
|
||||
break;
|
||||
|
|
Loading…
Reference in New Issue