aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAiden Woodruff <aiden@aidenw.net>2024-12-12 13:55:39 -0500
committerAiden Woodruff <aiden@aidenw.net>2024-12-12 13:55:39 -0500
commit1302d198930920e34bdd7652bd0b102cdc296145 (patch)
tree11fae1ffa0b8a807facdd412d256be1eebcb5738
parenteda6ef9e4f7c68d2f5281fb6ca3d832bea761d62 (diff)
downloadwcards-1302d198930920e34bdd7652bd0b102cdc296145.tar.gz
wcards-1302d198930920e34bdd7652bd0b102cdc296145.tar.bz2
wcards-1302d198930920e34bdd7652bd0b102cdc296145.zip
fix: correct gin Hand score
- gin.h (gin::Hand::score): do not count cards in melds. Signed-off-by: Aiden Woodruff <aiden@aidenw.net>
-rw-r--r--gin.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/gin.h b/gin.h
index 52cccf0..720a907 100644
--- a/gin.h
+++ b/gin.h
@@ -42,8 +42,15 @@ namespace gin {
42 return true; 42 return true;
43 } 43 }
44 unsigned score(void) const noexcept { 44 unsigned score(void) const noexcept {
45 std::set<wcards::Card> mcards;
46 // Get all meld cards.
47 for (std::set<wcards::Card> m : melds) {
48 mcards.insert(m.begin(), m.end());
49 }
50 // Get score of deadwood.
45 unsigned sum = 0; 51 unsigned sum = 0;
46 for (size_t i = 0; i < size(); ++i) { 52 for (size_t i = 0; i < size(); ++i) {
53 if (mcards.count(card(i))) continue; // skip meld cards.
47 char r = card(i).rank(); 54 char r = card(i).rank();
48 switch (r) { 55 switch (r) {
49 case 'A': sum += 1; break; 56 case 'A': sum += 1; break;