00001 /** @page goboardko Handling of Ko Moves in Class GoBoard 00002 00003 @section goboardkodefault Default Settings 00004 00005 By default moves violating the Ko rule are illegal. 00006 That means that GoBoard::IsLegal will return false. 00007 If they are played anyway, GoBoard::LastMoveInfo will return true 00008 for ::GO_MOVEFLAG_ILLEGAL and ::GO_MOVEFLAG_REPETITION. 00009 00010 @section goboardkoallow Allowing Ko Moves 00011 00012 During searches, Ko moves can be made legal with GoBoard::AllowKoRepetition. 00013 In addition, a ko loser has to be set with GoBoard::SetKoLoser. 00014 Then, Ko moves are legal (the ::GO_MOVEFLAG_REPETITION flag is still set). 00015 GoBoard::KoLevel returns the number of (now legal) Ko moves played by the 00016 Ko winner so far. 00017 If GoBoard::KoModifiesHash is true, only up to GoBoard::MAX_KOLEVEL Ko 00018 moves will be legal. 00019 00020 @section goboardkonotes Oddities in the Current Implementation 00021 00022 - AllowAnyRepetition overrides AllowKoRepetition. 00023 00024 - GoBoard::KoModifiesHash has an effect only if AllowKoRepetition. 00025 00026 - GoBoard::KoLevel is updated both if AllowKoRepetition and AllowAnyRepetition 00027 (does some code rely on this?) 00028 00029 - GoBoard::KoColor is updated only if AllowKoRepetition 00030 (does some code rely on this?) 00031 00032 - AllowKoRepetition does not allow two non-alternating Ko moves by the same 00033 player in a row 00034 (does some code rely on this?) */ 00035