diff options
Diffstat (limited to 'extra/cluedo.go')
| -rw-r--r-- | extra/cluedo.go | 73 |
1 files changed, 0 insertions, 73 deletions
diff --git a/extra/cluedo.go b/extra/cluedo.go deleted file mode 100644 index 1ef11cc..0000000 --- a/extra/cluedo.go +++ /dev/null @@ -1,73 +0,0 @@ -package extra - -import ( - "math/rand" - "strings" -) - -var ( - rooms = []string{"HALL", "LOUNGE", "DINING ROOM", "KITCHEN", "BALLROOM", "CONSERVATORY", "BILLIARD ROOM", "LIBRARY", "STUDY"} - weapons = []string{"CANDLESTICK", "DAGGER", "LEAD PIPE", "REVOLVER", "ROPE", "SPANNER"} - people = []string{"Miss Scarlett", "Colonel Mustard", "Mrs. White", "Reverend Green", "Mrs. Peacock", "Professor Plum"} -) - -type MurderTrifecta struct { - Murderer string - Weapon string - Room string -} - -type CluedoRoundInfo struct { - Answer MurderTrifecta - PlayersCards map[string][]string -} - -func (c *CluedoRoundInfo) GetPlayerCards(player string) string { - // maybe format it a little - return "cards of " + player + "are " + strings.Join(c.PlayersCards[player], ",") -} - -func CluedoPrepCards(playerOrder []string) *CluedoRoundInfo { - res := &CluedoRoundInfo{} - // Select murder components - trifecta := MurderTrifecta{ - Murderer: people[rand.Intn(len(people))], - Weapon: weapons[rand.Intn(len(weapons))], - Room: rooms[rand.Intn(len(rooms))], - } - // Collect non-murder cards - var notInvolved []string - for _, room := range rooms { - if room != trifecta.Room { - notInvolved = append(notInvolved, room) - } - } - for _, weapon := range weapons { - if weapon != trifecta.Weapon { - notInvolved = append(notInvolved, weapon) - } - } - for _, person := range people { - if person != trifecta.Murderer { - notInvolved = append(notInvolved, person) - } - } - // Shuffle and distribute cards - rand.Shuffle(len(notInvolved), func(i, j int) { - notInvolved[i], notInvolved[j] = notInvolved[j], notInvolved[i] - }) - players := map[string][]string{} - cardsPerPlayer := len(notInvolved) / len(playerOrder) - // playerOrder := []string{"{{user}}", "{{char}}", "{{char2}}"} - for i, player := range playerOrder { - start := i * cardsPerPlayer - end := (i + 1) * cardsPerPlayer - if end > len(notInvolved) { - end = len(notInvolved) - } - players[player] = notInvolved[start:end] - } - res.Answer = trifecta - res.PlayersCards = players - return res -} |
