238 for 4 players now
This commit is contained in:
parent
ef5bd96c4b
commit
b046c79604
|
@ -2,7 +2,7 @@
|
|||
|
||||
This is a [MiniZinc](https://www.minizinc.org/) based attempt to solve the [Modern Art: Masters Gallery](https://boardgamegeek.com/boardgame/40381/masters-gallery) game.
|
||||
|
||||
The current partial implementation (see below for missing rules) results in a highest possible score of 301 for a 2 player game (182 for 4 players). See [games/04.md](games/04.md) for the complete episode. There are a few more games available in [the games directory](games/).
|
||||
The current partial implementation (see below for missing rules) results in a highest possible score of 301 for a 2 player game (238 for 4 players). See [games/04.md](games/04.md) for the complete episode. There are a few more games available in [the games directory](games/).
|
||||
|
||||
## Plan
|
||||
|
||||
|
|
|
@ -0,0 +1,28 @@
|
|||
{
|
||||
"visible_count_per_round_per_artist_per_player" : [[[2, 0, 1, 1, 2], [0, 5, 0, 0, 1], [3, 0, 1, 2, 0], [0, 0, 2, 1, 3]], [[1, 1, 1, 1, 1], [1, 2, 0, 0, 2], [2, 0, 1, 1, 1], [1, 1, 0, 1, 2]], [[1, 0, 2, 2, 0], [0, 4, 1, 0, 0], [2, 0, 2, 0, 0], [2, 0, 1, 0, 1]], [[5, 0, 0, 0, 0], [0, 5, 0, 0, 0], [1, 0, 1, 2, 0], [0, 0, 0, 3, 1]]],
|
||||
"first_player" : [{"e":"Player1"}, {"e":"Player1"}, {"e":"Player1"}, {"e":"Player3"}],
|
||||
"last_player" : [{"e":"Player4"}, {"e":"Player4"}, {"e":"Player2"}, {"e":"Player1"}],
|
||||
"total_score_per_round_per_artist" : [[1, 12, 0, 0, 3], [3, 13, 0, 0, 6], [5, 14, 3, 0, 6], [8, 15, 3, 2, 6]],
|
||||
"CardsForArtist" : [[5, 5, 4, 4, 6], [5, 4, 2, 3, 6], [5, 4, 6, 2, 1], [6, 5, 1, 5, 1]],
|
||||
"NominalTurnCount" : [6, 5, 5, 5],
|
||||
"Score" : [81, 238, 43, 56],
|
||||
"MaxVisibleCards" : 6,
|
||||
"TotalCardsPlayed" : [[6, 6, 6, 6], [5, 5, 5, 5], [5, 5, 4, 4], [5, 5, 4, 4]],
|
||||
"StartingCardsInHand" : [[13, 13, 13, 13], [11, 11, 11, 11], [11, 10, 14, 10], [6, 5, 10, 6]],
|
||||
"CardsDealtPerRound" : [13, 4, 4, 0],
|
||||
"PlayableCards" : [[13, 13, 13, 13], [12, 11, 15, 11], [11, 10, 14, 10], [6, 5, 10, 6]],
|
||||
"sorted_artists_per_round" : [{"e":"LiteMetal"}, {"e":"KarlGitter"}, {"e":"Krypto"}, {"e":"Yoko"}, {"e":"ChristinP"}, {"e":"LiteMetal"}, {"e":"Krypto"}, {"e":"KarlGitter"}, {"e":"Yoko"}, {"e":"ChristinP"}, {"e":"ChristinP"}, {"e":"Krypto"}, {"e":"KarlGitter"}, {"e":"Yoko"}, {"e":"LiteMetal"}, {"e":"Krypto"}, {"e":"Yoko"}, {"e":"KarlGitter"}, {"e":"LiteMetal"}, {"e":"ChristinP"}],
|
||||
"Pn1" : {"set":[{"e":"Player1"}, {"e":"Player2"}, {"e":"Player3"}, {"e":"Player4"}]},
|
||||
"Pn2" : {"set":[{"e":"Player1"}, {"e":"Player2"}, {"e":"Player3"}, {"e":"Player4"}]},
|
||||
"Pn3" : {"set":[{"e":"Player1"}, {"e":"Player2"}]},
|
||||
"Pn4" : {"set":[{"e":"Player1"}, {"e":"Player2"}, {"e":"Player3"}, {"e":"Player4"}]},
|
||||
"award_bonus_per_round_per_artist" : [[0, 10, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]],
|
||||
"AwardGiven" : [true, true, true, true, true],
|
||||
"AwardPlayedInRound" : [{"e":"Round1"}, {"e":"Round1"}, {"e":"Round1"}, {"e":"Round1"}, {"e":"Round1"}],
|
||||
"AwardedArtist" : [{"e":"KarlGitter"}, {"e":"KarlGitter"}, {"e":"KarlGitter"}, {"e":"KarlGitter"}, {"e":"KarlGitter"}],
|
||||
"ranking_score_per_artist_per_round" : [[1, 2, 0, 0, 3], [2, 1, 0, 0, 3], [2, 1, 3, 0, 0], [3, 1, 0, 2, 0]],
|
||||
"IsArtistRanked" : [[true, true, false, false, true], [true, true, false, false, true], [true, true, true, false, false], [true, true, false, true, false]],
|
||||
"RoundScore" : [[8, 63, 3, 9], [22, 41, 12, 28], [11, 59, 16, 13], [40, 75, 12, 6]],
|
||||
"ArtistScore" : [[1, 12, 0, 0, 3], [3, 13, 0, 0, 6], [5, 14, 3, 0, 0], [8, 15, 0, 2, 0]],
|
||||
"DrawOneCard" : [[[false, false, false, false, false], [false, false, false, false, false], [false, false, false, false, false], [false, false, false, false, false]], [[false, true, false, false, false], [false, false, false, false, false], [true, false, true, true, true], [false, false, false, false, false]], [[false, false, false, false, false], [false, false, false, false, false], [false, false, false, false, false], [false, false, false, false, false]], [[false, false, false, false, false], [false, false, false, false, false], [false, false, false, false, false], [false, false, false, false, false]]]
|
||||
}
|
|
@ -0,0 +1,201 @@
|
|||
|
||||
### Round (1)
|
||||
Player 1 : EECBAA
|
||||
|
||||
Player 2 : DDDDDA
|
||||
|
||||
Player 3 : EEECBB
|
||||
|
||||
Player 4 : CCBAAA
|
||||
|
||||
Count(E=Krypto) = 5 (THIRD=1)
|
||||
|
||||
Count(D=KarlGitter) = 5 (SECOND=2)
|
||||
|
||||
Count(C=ChristinP) = 4
|
||||
|
||||
Count(B=Yoko) = 4
|
||||
|
||||
Count(A=LiteMetal) = 6 (FIRST=3)
|
||||
|
||||
Awards: E>KarlGitter, D>KarlGitter, C>KarlGitter, B>KarlGitter, A>KarlGitter
|
||||
|
||||
**Artist Scores**:
|
||||
|
||||
Krypto:1
|
||||
|
||||
KarlGitter:12
|
||||
|
||||
ChristinP:0
|
||||
|
||||
Yoko:0
|
||||
|
||||
LiteMetal:3
|
||||
|
||||
|
||||
**Player Scores**
|
||||
|
||||
Player 1 : 8
|
||||
|
||||
Player 2 : 63
|
||||
|
||||
Player 3 : 3
|
||||
|
||||
Player 4 : 9
|
||||
|
||||
|
||||
### Round (2)
|
||||
Player 1 : EDCBA
|
||||
|
||||
Player 2 : EDDAA
|
||||
|
||||
Player 3 : EECBA
|
||||
|
||||
Player 4 : EDBAA
|
||||
|
||||
Count(E=Krypto) = 5 (SECOND=2)
|
||||
|
||||
Count(D=KarlGitter) = 4 (THIRD=1)
|
||||
|
||||
Count(C=ChristinP) = 2
|
||||
|
||||
Count(B=Yoko) = 3
|
||||
|
||||
Count(A=LiteMetal) = 6 (FIRST=3)
|
||||
|
||||
|
||||
**Artist Scores**:
|
||||
|
||||
Krypto:3
|
||||
|
||||
KarlGitter:13
|
||||
|
||||
ChristinP:0
|
||||
|
||||
Yoko:0
|
||||
|
||||
LiteMetal:6
|
||||
|
||||
|
||||
**Player Scores**
|
||||
|
||||
Player 1 : 22
|
||||
|
||||
Player 2 : 41
|
||||
|
||||
Player 3 : 12
|
||||
|
||||
Player 4 : 28
|
||||
|
||||
|
||||
### Round (3)
|
||||
Player 1 : ECCBB
|
||||
|
||||
Player 2 : DDDDC
|
||||
|
||||
Player 3 : EECC
|
||||
|
||||
Player 4 : EECA
|
||||
|
||||
Count(E=Krypto) = 5 (SECOND=2)
|
||||
|
||||
Count(D=KarlGitter) = 4 (THIRD=1)
|
||||
|
||||
Count(C=ChristinP) = 6 (FIRST=3)
|
||||
|
||||
Count(B=Yoko) = 2
|
||||
|
||||
Count(A=LiteMetal) = 1
|
||||
|
||||
|
||||
**Artist Scores**:
|
||||
|
||||
Krypto:5
|
||||
|
||||
KarlGitter:14
|
||||
|
||||
ChristinP:3
|
||||
|
||||
Yoko:0
|
||||
|
||||
LiteMetal:0
|
||||
|
||||
|
||||
**Player Scores**
|
||||
|
||||
Player 1 : 11
|
||||
|
||||
Player 2 : 59
|
||||
|
||||
Player 3 : 16
|
||||
|
||||
Player 4 : 13
|
||||
|
||||
|
||||
### Round (4)
|
||||
Player 1 : EEEEE
|
||||
|
||||
Player 2 : DDDDD
|
||||
|
||||
Player 3 : ECBB
|
||||
|
||||
Player 4 : BBBA
|
||||
|
||||
Count(E=Krypto) = 6 (FIRST=3)
|
||||
|
||||
Count(D=KarlGitter) = 5 (THIRD=1)
|
||||
|
||||
Count(C=ChristinP) = 1
|
||||
|
||||
Count(B=Yoko) = 5 (SECOND=2)
|
||||
|
||||
Count(A=LiteMetal) = 1
|
||||
|
||||
|
||||
**Artist Scores**:
|
||||
|
||||
Krypto:8
|
||||
|
||||
KarlGitter:15
|
||||
|
||||
ChristinP:0
|
||||
|
||||
Yoko:2
|
||||
|
||||
LiteMetal:0
|
||||
|
||||
|
||||
**Player Scores**
|
||||
|
||||
Player 1 : 40
|
||||
|
||||
Player 2 : 75
|
||||
|
||||
Player 3 : 12
|
||||
|
||||
Player 4 : 6
|
||||
|
||||
|
||||
|
||||
## Final Scores
|
||||
|
||||
Player 1 : 81
|
||||
|
||||
Player 2 : 238
|
||||
|
||||
Player 3 : 43
|
||||
|
||||
Player 4 : 56
|
||||
|
||||
|
||||
### Info
|
||||
|
||||
A=LiteMetal (17)
|
||||
B=Yoko (18)
|
||||
C=ChristinP (19)
|
||||
D=KarlGitter (20)
|
||||
E=Krypto (21)
|
||||
|
||||
Since this is a 4-player game, the maximum number of visible cards for any artist is 6Scores for unranked artists are 0 for that round.
|
||||
|
||||
The syntax for awards is AwardTokenArtist > Awarded Artist (ie, the Award card for `AwardTokenArtist` was played, and the award was given to the `Awarded Artist`).
|
Loading…
Reference in New Issue