| import random |
| import gradio as gr |
|
|
| |
| bingo_numbers = { |
| 'B': list(range(1, 16)), |
| 'I': list(range(16, 31)), |
| 'N': list(range(31, 46)), |
| 'G': list(range(46, 61)), |
| 'O': list(range(61, 76)) |
| } |
|
|
| |
| all_numbers = [(letter, num) for letter, nums in bingo_numbers.items() for num in nums] |
| random.shuffle(all_numbers) |
|
|
| drawn_numbers = set() |
|
|
| def draw_bingo_number(): |
| if all_numbers: |
| letter, num = all_numbers.pop(0) |
| drawn_numbers.add((letter, num)) |
| result_html = f""" |
| <div style='text-align: center; font-size: 70px; font-weight: bold; background-color: red; color: white; padding: 20px; border-radius: 10px;'> |
| π Drawn Number: {letter}{num} π |
| </div> |
| """ |
| return result_html, generate_bingo_card() |
| else: |
| return "# π― <span style='font-size: 50px;'>All numbers have been drawn!</span> π―", generate_bingo_card() |
|
|
| def new_game(): |
| global all_numbers, drawn_numbers |
| all_numbers = [(letter, num) for letter, nums in bingo_numbers.items() for num in nums] |
| random.shuffle(all_numbers) |
| drawn_numbers.clear() |
| return "# π <span style='font-size: 50px;'>New Game Started!</span> π", generate_bingo_card() |
|
|
| def generate_bingo_card(): |
| card = "" |
| card += "<div style='display: grid; grid-template-columns: repeat(5, 1fr); gap: 10px; text-align: center; font-size: 18px; font-weight: bold;'>" |
| for letter in bingo_numbers.keys(): |
| card += f"<div style='background-color: #ffcc00; padding: 10px; border-radius: 5px;'>{letter}</div>" |
| for i in range(15): |
| for letter in bingo_numbers.keys(): |
| num = bingo_numbers[letter][i] |
| color = "#4CAF50" if (letter, num) in drawn_numbers else "#ffffff" |
| card += f"<div style='background-color: {color}; padding: 10px; border-radius: 5px;'>{num}</div>" |
| card += "</div>" |
| return card |
|
|
| |
| with gr.Blocks() as iface: |
| gr.Markdown("## π² Bingo Number Generator π²", elem_id="header") |
| gr.Markdown("Click the button to draw a bingo number and see the updated bingo card.") |
| draw_btn = gr.Button("ποΈ Draw Number", elem_id="draw_button") |
| new_game_btn = gr.Button("π New Game", elem_id="new_game_button") |
| output_text = gr.HTML("# Press Draw to Start", elem_id="output_text") |
| output_card = gr.HTML(generate_bingo_card(), elem_id="bingo_card") |
|
|
| draw_btn.click(draw_bingo_number, inputs=[], outputs=[output_text, output_card]) |
| new_game_btn.click(new_game, inputs=[], outputs=[output_text, output_card]) |
|
|
| iface.launch() |
|
|