in simple_game/kuhn.h [124:148]
float playerReward(int pIdx) const override {
if (! terminated() || pIdx == 0) return 0.0f;
int cardP = card1_;
int cardO = card2_;
if (! isFirstPlayer()) std::swap(cardP, cardO);
int curr_util = 0;
if (public_ == "rrcbc" || public_ == "rrbc") {
// Last player folded. The current player wins.
curr_util = 1;
} else if (public_ == "rrcc") {
// Showdown with no bets
curr_util = cardP > cardO ? 1 : -1;
} else {
// Showdown with 1 bet
assert(public_ == "rrcbb" || public_ == "rrbb");
curr_util = cardP > cardO ? 2 : -2;
}
int currIdx = isFirstPlayer() ? 1 : 2;
return pIdx == currIdx ? curr_util : -curr_util;
}