"""Includes two example worlds to experiment with different scenarios.""" import random from world import Character, Item, Location, Puzzle, World def get_world(arg: str, language='en') -> World: if arg=='2': if language == 'es': return get_world_2_spanish() else: return get_world_2_english() else: if language == 'es': return get_world_1_spanish() else: return get_world_1_english() def get_world_1_english() -> World: """A simple fictional world, used as an example in Figure 3 of the paper.""" item_1 = Item("Apple", ["A fruit that can be eaten", "It is round-shaped and green"]) item_2 = Item("Toy car", ["A tiny toy purple car", "It looks brand new"]) item_3 = Item("Mate", ["A classical mate, ready to drink!", "It contains some yerba", "You can drink this to boost your energy!"]) place_1 = Location("Garden", ["A beautiful garden", "There is a statue in the center"], items = [item_2]) place_2 = Location("Cabin", ["A small cabin", "It looks like no one has lived here for a while"]) place_3 = Location("Mansion hall", ["A big hall", "There is a big staircase"]) two_random_numbers = [random.randrange(0, 10) for i in range(2)] puzzle1 = Puzzle("puzzle",["There's a symbol of a microphone and below a letter that says how to open the door"], f"To unlock this door, you have to say out loud the sum of {str(two_random_numbers[0])} and {str(two_random_numbers[1])}.", f"The answer is {str(two_random_numbers[0] + two_random_numbers[1])} ") place_1.connecting_locations+=[place_2,place_3] place_2.connecting_locations+=[place_1] place_3.connecting_locations+=[place_1] place_1.block_passage(place_3,puzzle1) player = Character("Alicia", ["She is wearing a long skirt","She likes to sing"], inventory=[item_1], location=place_1) npc = Character("Javier", ["He has a long beard", "He loves to restore furtniture"], inventory=[item_3], location=place_3) the_world = World(player) the_world.add_locations([place_1, place_2, place_3]) the_world.add_items([item_1, item_2, item_3]) the_world.add_character(npc) the_world.set_objective(item_2,place_3) return the_world def get_world_1_spanish() -> World: item_1 = Item("Manzana", ["Una fruta que puede ser comida", "Es redonda y verde"]) item_2 = Item("Auto de juguete", ["Un pequeño auto de juguete de color púrpura", "Luce como recién comprado"]) item_3 = Item("Mate", ["Un mate clásico ¡listo para tomar!", "Contiene algo de yerba", "¡Puedes tomar esto para mejorar tu energía!"]) place_1 = Location("Jardín", ["Un jardín hermoso", "Hay una estatua en el centro"], items = [item_2]) place_2 = Location("Cabaña", ["Una pequeña cabaña", "Parece que nadie ha vivido acá por un tiempo"]) place_3 = Location("Hall de la Mansión", ["Un hall grande", "Hay una enorme escalera principal"]) two_random_numbers = [random.randrange(0, 10) for i in range(2)] puzzle1 = Puzzle("puzzle",["Hay un dibujo de un micrófono y debajo un letrero, con la premisa para abrir la puerta"], f"Para desbloquear esta puerta, hay que decir en voz alta la suma de {str(two_random_numbers[0])} y {str(two_random_numbers[1])}.", f"La respuesta es {str(two_random_numbers[0] + two_random_numbers[1])} ") place_1.connecting_locations+=[place_2,place_3] place_2.connecting_locations+=[place_1] place_3.connecting_locations+=[place_1] place_1.block_passage(place_3,puzzle1) player = Character("Alicia", ["Está usando una falda larga","Le gusta cantar"], inventory=[item_1], location=place_1) npc = Character("Javier", ["Tiene una barba larga", "Le encanta restaurar muebles"], inventory=[item_3], location=place_3) the_world = World(player) the_world.add_locations([place_1, place_2, place_3]) the_world.add_items([item_1, item_2, item_3]) the_world.add_character(npc) the_world.set_objective(item_2,place_3) return the_world def get_world_2_english() -> World: """Use this world to test more complex cases, like blocked passages between locations.""" item_1 = Item("Apple", ["A fruit that can be eaten", "It is round-shaped and red"]) item_2 = Item("Key", ["A key to open a lock", "It is golden", "It is engraved with a strange coat of arms"]) item_3 = Item("A grey Hammer", ["A great grey hammer that can be used to break things", "It is so heavy..."]) item_4 = Item("Lock", ["A strong lock engraved with a coat of arms", "It seems that you cannot open it with your hands"]) item_5 = Item("Note", ["A paper with a note", "You can read 'Go to the kitchen to know the truth'"]) item_6 = Item("Flashlight", ["A flashlight without batteries"]) item_7 = Item("A green Hammer", ["A small green hammer", "It is just a toy and you cannot break anything with it."]) item_8 = Item("A wall of flames", ["The heat is really intense but it is a small fire anyway"]) item_9 = Item("A metal flower", ["A strange flower"]) item_10 = Item("A fire extinguisher", ["You can control small fires with this."]) place_3 = Location ("Garden", ["A small garden below the kitchen"], items = [item_9]) place_2 = Location("Kitchen", ["A beautiful well-lit kitchen"], items = [item_6,item_10]) place_2.connecting_locations = [place_3] place_2.block_passage(place_3, item_8, symmetric=False) place_1 = Location("Cellar", ["There is a metal door locked by a lock", "You can see damp patches on the walls"], items = [item_2, item_3, item_5, item_7]) place_1.connecting_locations = [place_2] place_1.block_passage(place_2, item_4) player = Character("Cid", ["A tall soldier"], inventory = [item_1], location = place_1) npc = Character("Elvira", ["A little girl", "Her favorite food is apple pie, but she enjoys eating any fruit", "She can't read yet"], location= place_1) the_world = World(player) the_world.add_locations([place_1,place_2,place_3]) the_world.add_items([item_1,item_2,item_3,item_4,item_5, item_6, item_7,item_8, item_9, item_10]) the_world.add_character(npc) return the_world