SecondProject / app.py
razanalsulami's picture
Update app.py
7b37b35 verified
import gradio as gr
from PIL import Image
import os
# Define the story in English and Arabic
story = {
"start": {
"en": "Welcome, Detective! The heirloom has gone missing during the party. Do you want to investigate the crime scene or interview the suspects?",
"ar": "مرحبًا، أيها المحقق! لقد اختفى التُحفة أثناء الحفلة. هل تريد التحقيق في مسرح الجريمة أو مقابلة المشتبه بهم؟",
"choices": {
"investigate": "crime_scene",
"interview": "suspects"
}
},
"crime_scene": {
"en": "At the crime scene, you find a broken vase and a few fingerprints. Do you want to examine the fingerprints or check the guest list?",
"ar": "في مسرح الجريمة، تجد مزهرية مكسورة وبعض بصمات الأصابع. هل تريد فحص بصمات الأصابع أم التحقق من قائمة الضيوف؟",
"choices": {
"fingerprints": "fingerprints",
"guest_list": "guest_list"
}
},
"fingerprints": {
"en": "The fingerprints lead you to a suspect. Do you want to question this suspect or investigate further?",
"ar": "البصمات تقودك إلى مشتبه به. هل تريد سؤال هذا المشتبه به أم التحقيق بشكل أعمق؟",
"choices": {
"question": "suspect",
"investigate": "additional_clues"
}
},
"guest_list": {
"en": "The guest list reveals that an unexpected guest attended. Do you want to question this guest or examine the broken vase?",
"ar": "تكشف قائمة الضيوف أن هناك ضيفًا غير متوقع حضر. هل تريد سؤال هذا الضيف أم فحص المزهرية المكسورة؟",
"choices": {
"question": "unexpected_guest",
"vase": "broken_vase"
}
},
"broken_vase": {
"en": "The vase was used to hide the stolen heirloom. You find the heirloom hidden inside it! Case solved.",
"ar": "استخدمت المزهرية لإخفاء التُحفة المسروقة. تجد التُحفة مخبأة بداخلها! القضية تم حلها.",
"choices": {}
},
"additional_clues": {
"en": "Further investigation leads you to more evidence. Combining clues from the scene, you find the thief! Case solved.",
"ar": "التحقيق الإضافي يقودك إلى مزيد من الأدلة. من خلال دمج الأدلة من المشهد، تجد السارق! القضية تم حلها.",
"choices": {}
},
"suspect": {
"en": "The suspect confesses to the theft. The heirloom is recovered and the case is solved!",
"ar": "المشتبه به يعترف بالسرقة. التُحفة تم استرجاعها والقضية تم حلها!",
"choices": {}
},
"unexpected_guest": {
"en": "The unexpected guest is found with the heirloom. The case is closed!",
"ar": "الضيف غير المتوقع يُعثر عليه مع التُحفة. القضية مغلقة!",
"choices": {}
}
}
# Define the image paths
image_paths = {
"start": "start.jpg",
"crime_scene": "crime_scene.jpg",
"fingerprints": "fingerprints.jpg",
"guest_list": "guest_list.jpg",
"broken_vase": "broken_vase.jpg",
"additional_clues": "additional_clues.jpg",
"suspect": "suspect.jpg",
"unexpected_guest": "unexpected_guest.jpg"
}
def get_scene(scene, language):
# Return the scene text and the corresponding image based on language
scene_info = story.get(scene, {"text": "Unknown scene", "choices": {}})
text = scene_info.get(language, "Text not available")
image_path = image_paths.get(scene, "default.jpg")
if os.path.exists(image_path):
img = Image.open(image_path)
else:
img = Image.new("RGB", (640, 480), color="white") # Default image if path is incorrect
return text, img, scene_info["choices"]
def detective_game(language, choice):
# Update the scene based on user choice and language
next_scene = story["start"]["choices"].get(choice, "start")
return get_scene(next_scene, language)
# Create Gradio interface
interface = gr.Interface(
fn=detective_game,
inputs=[
gr.Radio(choices=["en", "ar"], label="Choose Language"),
gr.Dropdown(choices=["investigate", "interview"], label="Choose an action")
],
outputs=[gr.Textbox(), gr.Image(type="pil")],
title="Detective Conan: The Case of the Missing Heirloom",
description="Help solve the mystery of the missing heirloom by making choices. Choose your language and start investigating!"
)
interface.launch()