import random import gradio as gr # Bingo number categories 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)) } # Combine all numbers into a list 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"""
🎉 Drawn Number: {letter}{num} 🎉
""" return result_html, generate_bingo_card() else: return "# 🎯 All numbers have been drawn! 🎯", 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 "# 🆕 New Game Started! 🆕", generate_bingo_card() def generate_bingo_card(): card = "" card += "
" for letter in bingo_numbers.keys(): card += f"
{letter}
" 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"
{num}
" card += "
" return card # Gradio Interface 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()