|
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() |
|
|