Spaces:
Sleeping
Sleeping
import random | |
import gradio as gr | |
# List of countries | |
countries = [ | |
"Afghanistan", "Albania", "Algeria", "Andorra", "Angola", "Antigua and Barbuda", | |
"Argentina", "Armenia", "Australia", "Austria", "Azerbaijan", "Bahamas", "Bahrain", | |
"Bangladesh", "Barbados", "Belarus", "Belgium", "Belize", "Benin", "Bhutan", "Bolivia", | |
"Bosnia and Herzegovina", "Botswana", "Brazil", "Brunei", "Bulgaria", "Burkina Faso", | |
"Burundi", "Cabo Verde", "Cambodia", "Cameroon", "Canada", "Central African Republic", | |
"Chad", "Chile", "China", "Colombia", "Comoros", "Congo", "Costa Rica", "Croatia", | |
"Cuba", "Cyprus", "Czech Republic", "Denmark", "Djibouti", "Dominica", "Dominican Republic", | |
"East Timor", "Ecuador", "Egypt", "El Salvador", "Equatorial Guinea", "Eritrea", "Estonia", | |
"Eswatini", "Ethiopia", "Fiji", "Finland", "France", "Gabon", "Gambia", "Georgia", "Germany", | |
"Ghana", "Greece", "Grenada", "Guatemala", "Guinea", "Guinea-Bissau", "Guyana", "Haiti", | |
"Honduras", "Hungary", "Iceland", "India", "Indonesia", "Iran", "Iraq", "Ireland", "Israel", | |
"Italy", "Jamaica", "Japan", "Jordan", "Kazakhstan", "Kenya", "Kiribati", "Korea, North", | |
"Korea, South", "Kuwait", "Kyrgyzstan", "Laos", "Latvia", "Lebanon", "Lesotho", "Liberia", | |
"Libya", "Liechtenstein", "Lithuania", "Luxembourg", "Madagascar", "Malawi", "Malaysia", | |
"Maldives", "Mali", "Malta", "Marshall Islands", "Mauritania", "Mauritius", "Mexico", | |
"Micronesia", "Moldova", "Monaco", "Mongolia", "Montenegro", "Morocco", "Mozambique", | |
"Myanmar", "Namibia", "Nauru", "Nepal", "Netherlands", "New Zealand", "Nicaragua", "Niger", | |
"Nigeria", "North Macedonia", "Norway", "Oman", "Pakistan", "Palau", "Palestine", "Panama", | |
"Papua New Guinea", "Paraguay", "Peru", "Philippines", "Poland", "Portugal", "Qatar", | |
"Romania", "Russia", "Rwanda", "Saint Kitts and Nevis", "Saint Lucia", "Saint Vincent and the Grenadines", | |
"Samoa", "San Marino", "Sao Tome and Principe", "Saudi Arabia", "Senegal", "Serbia", | |
"Seychelles", "Sierra Leone", "Singapore", "Slovakia", "Slovenia", "Solomon Islands", | |
"Somalia", "South Africa", "South Sudan", "Spain", "Sri Lanka", "Sudan", "Suriname", | |
"Sweden", "Switzerland", "Syria", "Taiwan", "Tajikistan", "Tanzania", "Thailand", "Togo", | |
"Tonga", "Trinidad and Tobago", "Tunisia", "Turkey", "Turkmenistan", "Tuvalu", "Uganda", | |
"Ukraine", "United Arab Emirates", "United Kingdom", "United States", "Uruguay", "Uzbekistan", | |
"Vanuatu", "Vatican City", "Venezuela", "Vietnam", "Yemen", "Zambia", "Zimbabwe" | |
] | |
# Initialize game variables | |
selected_country = "" | |
attempts_left = 0 | |
guessed_letters = [] | |
player_name = "" | |
def start_game(name): | |
global selected_country, attempts_left, guessed_letters, player_name | |
player_name = name | |
selected_country = random.choice(countries).upper() | |
attempts_left = len(selected_country) | |
guessed_letters = ["_"] * len(selected_country) | |
return update_display() | |
def update_display(): | |
return f"Country: {' '.join(guessed_letters)}", f"Guesses left: {attempts_left}", "" | |
def guess_letter(letter): | |
global attempts_left | |
if attempts_left == 0: | |
return "No more attempts left. Please restart the game.", "", "Try again." | |
letter = letter.upper() | |
if letter in selected_country: | |
for i in range(len(selected_country)): | |
if selected_country[i] == letter: | |
guessed_letters[i] = letter | |
else: | |
attempts_left -= 1 | |
if "_" not in guessed_letters: | |
return f"Country: {' '.join(guessed_letters)}", f"Guesses left: {attempts_left}", f"Congratulations {player_name}! You won!" | |
if attempts_left == 0: | |
return f"Country: {' '.join(guessed_letters)}", f"Guesses left: {attempts_left}", f"Sorry {player_name}, you lost. The country was {selected_country}." | |
return update_display() | |
def restart_game(): | |
return start_game(player_name) | |
footer = """ | |
<div style="text-align: center; margin-top: 20px;"> | |
<a href="https://www.linkedin.com/in/pejman-ebrahimi-4a60151a7/" target="_blank">LinkedIn</a> | | |
<a href="https://github.com/arad1367" target="_blank">GitHub</a> | | |
<a href="https://arad1367.pythonanywhere.com/" target="_blank">Live demo of my PhD defense</a> | |
<br> | |
Made with ๐ by Pejman Ebrahimi | |
</div> | |
""" | |
with gr.Blocks(theme='abidlabs/dracula_revamped') as demo: | |
gr.Markdown("### Country Guessing Game") | |
with gr.Row(): | |
name_input = gr.Textbox(label="Enter your name:", placeholder="Name") | |
start_button = gr.Button("Start Game") | |
country_display = gr.Textbox(label="Country", interactive=False) | |
attempts_display = gr.Textbox(label="Guesses left", interactive=False) | |
result_display = gr.Textbox(label="Result", interactive=False) | |
letter_input = gr.Textbox(label="Enter a letter:", max_lines=1, placeholder="Letter") | |
guess_button = gr.Button("Guess") | |
restart_button = gr.Button("Restart Game") | |
start_button.click(start_game, inputs=name_input, outputs=[country_display, attempts_display, result_display]) | |
guess_button.click(guess_letter, inputs=letter_input, outputs=[country_display, attempts_display, result_display]) | |
restart_button.click(restart_game, inputs=None, outputs=[country_display, attempts_display, result_display]) | |
gr.HTML(footer) | |
demo.launch() | |