Spaces:
Sleeping
Sleeping
| 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() | |