I coded up a bot that plays Aww. It only includes a rudimentary strategy of when/what to clue vs. play. vs. discard. It can clue forward finesses to LH1 but no others.
For multi-color, it averages 27.4 for 2P, 28.6, 27.5 and 26.4 for 3P-5P.
Changing the meaning of some clues got it to 28.3 for 4P and 27.7 for 5P.
Then I coded up a system based on a suggestion from someone on BGG. It is only useful for 3P-5P games.
It works like this:
-look at each other player's hand and assign it a value from 0-19
-if the player has a playable card, assign 0-4 based on the OLDEST playable card (0=it is the oldest card, 1= second oldest, etc)
-else if the player has something discardable, assign 5-9 based on the OLDEST discardable (5=it is the oldest card, etc.)
(For the bot, I actually first look for the oldest worthless card, else the oldest noncritical 4, then 3 then 2)
-else (every card is critical) clue 10-14 to indicate which critical card should be tossed if the player is forced to discard
(5 is the least critical, 2 is the most although it is very rare that any needs tossing)
-Also, if another player has the same playable card indicated by a clue, add 15 to their value. (If 2 players have duplicates, add 15 for each)
Code: Select all
Example (oldest on left):
P0: x x x x
P1:1r,5b,1y,2m
P2:5y,2r,4b,1b
P3:3m,1b,1o,4b
P4:5r,3b,5m,1m
P0 to clue.
P1=0 (1r playable)
P2=4 (1b playable) (Note: you cannot clue the 2r as it is not playable at the moment of the clue
P3=16 (1b is duplicate playable)
P4=4 (1m playable)
Add them all up (0+4+16+4=24) and take the result modulo 20 = 4. Now clue that value using this encoding:
0-4 - clue number 1-5 to LH1
5-9 - clue RYGBW to LH1
10-14 - clue number 1-5 to LH2
15-19 - clue RYGBW to LH2
So, P0 clues 5 to P1. Everyone else now looks at all the hands using the same algorithm and adds them up.
P1 adds 4+16+4=24, modulo 20=4 which is what was clued so P1 value = 0 and P1's oldest card must be playable. P1 will play 1r.
P2 adds 0+1+4=5 which means P2's value must be 19. P2 has a duplicate of someone's playable as his 4th oldest. P2 discards 1b.
P3 adds 0+4+4=8 which means P3's value = 16. However, P3 saw P2 discard a playable so instead of discarding his 2nd oldest, P3 plays 1b
etc.
With this convention (slightly different to make programming easier) the bot scores 29.7 for 3P, 29.6 for 4P and 29.5 for 5P!
This convention is great for a bot. It is incredibly boring for people as there is rarely any thought (aside from computing the values). There is almost no strategy. There are no finesses. About the only thing you can do is get LH1 to play/discard something out of turn and then everyone has to recognize that. I don't suggest this convention for people.
