Bunco Simulator

Check-in [d20fed]
Overview
Comment:Add function to spit out overview of game in Excel (start on [927402827e])
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA3-256: d20fed451934c0348b668721c372dd648934e755c6e1a1c61500a92cbd99ca7e
User & Date: joel on 2018-11-22 13:24:25
Other Links: manifest | tags
References
2018-11-22
13:27 Ticket [927402] Support Excel output status still Open with 3 other changes artifact: 0748b0 user: joel
Context
2018-11-22
13:41
Track player wins and losses check-in: eb8331 user: joel tags: trunk
13:24
Add function to spit out overview of game in Excel (start on [927402827e]) check-in: d20fed user: joel tags: trunk
13:20
Log team scores at each table check-in: a09452 user: joel tags: trunk
Changes

Modified bunco_app.py from [894897] to [e250da].

1

2
3
4
5
6
7
8
import bunco

from blessings import Terminal

t = Terminal()
g = bunco.Game("players.csv")

def plural(str,n,suffix="s"):
    return str + suffix if n > 1 else str

>







1
2
3
4
5
6
7
8
9
import bunco
import xlsxwriter
from blessings import Terminal

t = Terminal()
g = bunco.Game("players.csv")

def plural(str,n,suffix="s"):
    return str + suffix if n > 1 else str
66
67
68
69
70
71
72


























































    ts = [f"Round {g.current_round()} @ {curtable} with {sitch['teammate']}:",
          f"You made {player.round_roll_counts[g.current_round()-1]} rolls,",
          f"adding {player.personal_roll_scores[g.current_round()-1]} pts{buncos}",
          f"to your team score of {player.round_scores[g.current_round()-1]},",
          f"{winloss} {foe_names}’s score of {sitch['opponent_score']}."]
    return " ".join(ts)
































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130

    ts = [f"Round {g.current_round()} @ {curtable} with {sitch['teammate']}:",
          f"You made {player.round_roll_counts[g.current_round()-1]} rolls,",
          f"adding {player.personal_roll_scores[g.current_round()-1]} pts{buncos}",
          f"to your team score of {player.round_scores[g.current_round()-1]},",
          f"{winloss} {foe_names}’s score of {sitch['opponent_score']}."]
    return " ".join(ts)

def excel_sheet(title):
    wb = xlsxwriter.Workbook('bunco.xlsx')
    ws = wb.add_worksheet('Overview')

    col_heading = wb.add_format({'font_name': 'Back Issues BB', 
                                 'font_size': 12,
                                 'align': 'center'})
    title_style = wb.add_format({'font_name': 'Back Issues BB', 
                                 'font_size': 14,
                                 'bold': True})
    row_heading = wb.add_format({'font_name': 'Back Issues BB', 
                                 'font_size': 12})
    score_style = wb.add_format({'font_name': 'Milk Mustache BB', 
                                 'font_size': 14,
                                 'align': 'right',
                                 'num_format': '_(* #,##0_);_(* (#,##0);_(* "-"??_);_(@_)',
                                 'color': '#0070C0'})
    total_style = wb.add_format({'font_name': 'Milk Mustache BB', 
                                 'font_size': 14,
                                 'align': 'center',
                                 'bold': 'true'})
    
    ws.set_column('A:A', 30)
    
    ws.write('A1', title, title_style)
    ws.set_landscape()
    ws.fit_to_pages(1, 1)

    # Column headings for each round
    for n in range(g.current_round()):
        ws.write(2, n + 1, n + 1, col_heading)
    
    end_col = g.current_round()
    ws.set_column(1, end_col, 5)
    ws.set_column(end_col + 1, end_col + 5, 10)

    ws.write(2, end_col + 1, "Total", col_heading)
    ws.write(2, end_col + 2, "Wins", col_heading)
    ws.write(2, end_col + 3, "Losses", col_heading)
    ws.write(2, end_col + 4, "Buncos", col_heading)
    ws.write(2, end_col + 5, "Rolls", col_heading)

    # Write players and their scores for each round
    for n, player in enumerate(g.players):
        row = n + 3
        ws.write(row, 0, player.name, row_heading)

        for r in range(g.current_round()):
            col = r + 1
            ws.write(row, col, player.round_scores[r], score_style)

        ws.write(row, end_col + 1, sum(player.round_scores), total_style)
        ws.write(row, end_col + 4, sum(player.round_bunco_counts), total_style)
        ws.write(row, end_col + 5, sum(player.round_roll_counts), total_style)

    wb.close()