DRAGON BALL Sergio Pérez Camacho Matías Blanco León.

Slides:



Advertisements
Presentaciones similares
Capítulo 2 Algoritmos.
Advertisements

Estructuras de control
Programación de Computadores
Archivos de Texto. Introducción Los archivos son una secuencia de bits que se guarda en el disco duro. La ventaja de utilizar archivos es que los datos.
Insercion de datos..
Estructuras de Decisión I IF - THEN - ELSE
Programación II Recursividad
ADA: lenguaje de programación concurrente
Type tipo_bf = ; tipo_dato = word; tipo_puntero = ^tipo_nodo; tipo_nodo = record dato: tipo_dato; izquierdo, derecho: tipo_puntero; bf: tipo_bf;
Aprendizaje de Microsoft® Access® 2010
Resolución de Problemas y Algoritmos Buffer - Read & Readln
Subprogramas: Procedimientos
Realizado por: Ing. Mauricio Rivera1 Colas. Realizado por: Ing. Mauricio Rivera2 ¿Qué es una Cola? Una cola es un grupo ordenado de elementos homogéneos.
Curso de Programación 1 Plan 97
PROGRAMACION DE ESTRUCTURAS DE DATOS
Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde1 Tipos definidos por el usuario –Parámetros array ilimitados.
ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática
Preguntas tipo test (Tema I)
PL/SQL Francisco Moreno Universidad Nacional.
ANALISIS SINTACTICO DESCENDENTE
¿Qué es un PUNTERO?: Un puntero es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable. No.
CI TEORIA semana 8 Subprogramas o funciones Definición de funciones.
1 Procedimientos Es un conjunto de sentencias incluidas entre las declaraciones Sub o Function y End Sub/Function VB utiliza varios tipos de procedimientos:
Práctica de subjuntivo (3 tipos de cláusula, pronombres y a personal.
PL/SQL Francisco Moreno Universidad Nacional.
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
Universidad de Tarapacá Fundamentos Lenguaje y Programación Rodrigo Cornejo Mejías Jonathan Cea Chávez Marcelo Gómez Gonzales.
Tema 6: Clases Antonio J. Sierra.
Arboles Binarios de expresiones
PRÁCTICA INVENTADA TOP MANTA Matías Blanco – Sergio Pérez.
16/04/ Sesión 11 Funciones y procedimientos Ing. Ricardo Inquilla.
Teoria de grafos.-clase 4
PROCEDIMIENTOS FUNCIONES
C++ LISTAS C++ 11/04/2017 Ing. Edgar Ruiz Lizama.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Objetos.
PL/SQL Francisco Moreno Universidad Nacional.
Capítulo 1 “Elementos de Programación”
Conversión cadena a número
COMPUTACION 2009 Clase 6 Clase 7.
UNITA - IBARRA TRIGGERS
Concatenación en PHP Programación en Internet II.
Resolución de Problemas y Algoritmos Uso de iteración con secuencias
Sesión 5 Sentencias de Selección y repetición Prof:Eridan Otto Programación de Computadores Lenguaje Pascal.
Resolución de Problemas y Algoritmos Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur Bahía Blanca - Argentina.
Matías Blanco – Sergio Pérez. The Problem A few peregrins, each one with his own strenght and money want to make the Saint James’ Way. They can start.
PL/SQL Francisco Moreno Universidad Nacional.
Programación Básica con NQC Patricio A. Castillo Pizarro 25/08/2007.
Material de apoyo Unidad 4 Estructura de datos
Teoría – Alejandro Gonzalez
Backtracking 1. Método general. 2. Análisis de tiempos de ejecución.
Sistemas de Manufactura
Ada 2º Parte (variables, ámbitos , subrutinas , tipos abstractos de datos y excepciones)
Monitores Cabudare, noviembre de 2010 Universidad Fermín Toro
Departamento de Informática Universidad Técnica Federico Santa María Temas 2,3,4: Estructura de un Programa Pascal Declaraciones Tipos de Datos Simples.
Conceptos Básicos de Programación. Put a pin into input mode Loop Check if the pin is 0 or 5 volts If the pin has 5 volts Do something End if End Loop.
COMPUTO III Ing. Jimmy Ojeda Arnica.
Contenido:  ¿Qué son los Punteros?  Los Procedimientos: New y Dispose.
Programación Básica con NQC Patricio A. Castillo 12/04/2008.
Visual Basic FUNCIONES Y PROCEDIMIENTOS
Aperturas El modo más común de iniciar un juego es con Jack Pot o Pot.  En el Jack Pot cada jugador pone una cantidad determinada para recibir las cinco.
“variables , sentencia if y bucles”
Estructura: COLA Profesor: Ing. Erick López Ch. M.R.I.
Estructuras de Decisión
PROGRAMACION DE Pilas o Stacks
MEMORIA DINÁMICA.
Algorítmica y Programación
Estructura de Datos PILA Universidad Hispanoamericana Prof. Ing. Erick López.
3 Cursores ORACLE Bases de datos II I-2014 Universidad del Cauca In. Wilson Ortega Bases de datos II I-2014 Universidad del Cauca In. Wilson Ortega.
Las interfaces Predicate y Function Versión Unidad Didáctica 17 Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos.
UNIVERSIDAD DIEGO PORTALES Facultad de Ingeniería Programación Avanzada TIPOS ABSTRACTOS DE DATOS TAD Tema: TIPOS ABSTRACTOS DE DATOS TAD Subtema: COLAS.
Transcripción de la presentación:

DRAGON BALL Sergio Pérez Camacho Matías Blanco León

Enunciado Después de la lucha con Vegeta en la tierra Goku y sus amigos se ha visto obligado a irse al planeta Namek para reunir las 7 Bolas del Dragón de dicho planeta, ya que la muerte de Piccolo ha hecho que las Bolas del Dragón de la tierra desaparezcan, y así poder llamar Shenlong para que resucite a los humanos y los amigos de Goku que murieron en la batalla contra los Saiyajins. Por la gran rapidez de los acontecimientos a Bulma no le ha dado tiempo de montar un Localizador de Bolas. Debido a esto Goku, Gohan y Krilin tendrán que ir mirando en todas las ciudades del planeta Namek en busca de las Bolas. Pero resulta que Freeza está también buscando las Bolas del Dragón para que le hagan el dueño del Universo y ha mandado a sus esbirros para que las reúnan. Cada vez que Goku, los amigos de Goku o los esbirros de Freeza encuentran en una Ciudad una Bola se la quedan y lo se comunica con los demás para ver las bolas que tienen cada uno. Cuando reúnan todas las botas podrán llamar al Shenlong y pedirle 3 deseos. Cuando Goku o alguno de sus amigos se encuentran con los esbirros de Freeza se desata una lucha. El ganador de esta lucha se quedara con las Bolas que posea el perdedor. No todas las ciudades tienen Bolas y para descubrir si la hay o no el que llegue tendrá que invertir un tiempo en buscarla. Como máximo solo puede haber una bola en cada Ciudad. Si alguno llega a la ciudad y comprueba que ya hay uno de su Clan sigue buscando en otra ciudad.

Resolución por Tipos Protegidos Tipo Protegido Ciudad: Es la que controla los parámetros de la ciudad. Tiene los siguientes procedimientos y entradas: ◦Procedimiento Iniciar: Solo sirve para iniciar con los parámetros iniciales a la ciudad. ◦Procedimiento EntrarGokuCIA: Esta entrada es usada por las tareas de tipo GokuCIA. Lo primero que hace es mirar si ya había alguno de clan de Goku en la ciudad. Devuelve si había uno antes o no. Cuando entra uno en la ciudad indica las bolas que tiene en su posesión. Si al llegar a la ciudad se encuentra un esbirro lucha contra él, el ganador del mismo se decidirá aleatoriamente. El que gana incrementa el número de bolas y pone a 0 el del perdedor. ◦Procedimiento EntrarEsbirros: Es igual que el anterior pero desde el punto de vista de los esbirros. ◦Entrada SalirGokuCIA: Solo pueden salir cuando no se este luchando en la Ciudad. Al salir se mira si había una bola en la ciudad y si es así se la lleva. Devuelve las bolas con las que sale de la ciudad. ◦Entrada SalirEsbirros: Es igual que el anterior pero desde el punto de vista de los esbirros.

Resolución por Tipos Protegidos Tipo Protegido BancoBolasGokuCia: Almacena las bolas que tienen Goku y sus amigos. Tiene los siguientes procedimientos: ◦Procedimiento MeterBolas: Mete las bolas en la cuenta que se le indica por el parámetro id. ◦Procedimiento DarBolas: Devuelve el número de bolas del que le indiquemos por medio del parámetro id. Cuando se sacan las bolas se pone la cuenta a 0. ◦Procedimiento DarTodasBolas: Devuelve el número total de bolas que hay entre todas las cuentas. Tipo Protegido BancoBolasEsbirros: Almacena las bolas que tienen los esbirros de Freeza. Tiene los mismos procedimientos que la anterior y su mismo funcionamiento.

Resolución por Tipos Protegidos Tarea GokuCIA: Esta tarea simula a Goku y a sus amigos. Lo que hace es ir recorriendo las ciudades. Cuando llega a una ciudad retira las bolas del banco y entra en la ciudad. En el caso de que ya haya uno de los suyos dentro lo que hace es devolver las bolas al banco y marcharse a la siguiente ciudad. En el caso de que no haya nadie lo que hace es buscar si hay alguna bola, cuando sale de la ciudad obtiene el número de bolas con las que sale que dependerá de si ha encontrado alguna o si a luchado contra un enemigo y lo que ha hecho en la batalla. Al salir de la ciudad comprueba si ellos o sus enemigos han reunido todas las bolas y si es así finaliza su ejecución y nos muestra el resultado de la aventura. Tarea Esbirro: Esta tarea simula a los esbirros de Freeza. Su funcionamiento es el mismo que el de la tarea anterior pero desde el punto de vista de un esbirro.

Código Fuente with Ada.Text_Io ; use Ada.Text_Io; with Ada.Integer_Text_Io; use Ada.Integer_Text_Io; with Ada.Numerics.Float_Random ; use Ada.Numerics.Float_Random; procedure DragonBallTProtAda is -- Costantes y variables MAXCIUDADES : constant integer := 10; MAXBOLAS : constant integer := 7; MAXESBIRROS : constant integer := 3; MAXGOKUCIA : constant integer := 3; G : Generator; -- Definimos los arrays type bolasGokuCIA is array(1..MAXGOKUCIA) of integer; type bolasEsbirros is array(1..MAXGOKUCIA) of integer;

Código Fuente -- Definimos los tipos protegidos protected type Ciudad is procedure Iniciar(id : integer; hayBola : boolean); procedure EntrarGokuCIA(id: integer; bolas : integer; algunAmigo : out boolean); procedure EntrarEsbirros(id: integer; bolas : integer; algunAmigo : out boolean); entry SalirGokuCIA(bolas : out integer); entry SalirEsbirros(bolas : out integer); private idCiudad : integer; Bola : boolean; -- Indica si hay bola o no en esta ciudad hayGokuCIA : boolean; -- Indica si esta Goku o alguno de los suyos en la Ciudad hayEsbirros : boolean; -- Indica si hay algún esbirro en la Ciudad bolasGokuCIA : integer; -- Bolas con las que entra Goku o alguno de los amigos a la ciudad bolasEsbirros : integer; -- Bolas con las que entra algún esbirro a la ciudad luchando : boolean; -- Indica si se esta luchando en ese momento en la isla end Ciudad;

Código Fuente protected type BancoBolasGokuCia is procedure MeterBolas(id : integer; nbolas : integer); procedure DarBolas(id : integer; nbolas : out integer); procedure DarTodasBolas(nbolas : out integer); private Bolas : bolasGokuCIA := (others => 0); -- Guarda el numero de bolas que tiene cada uno end BancoBolasGokuCia; protected type BancoBolasEsbirros is procedure MeterBolas(id : integer; nbolas : integer); procedure DarBolas(id : integer; nbolas : out integer); procedure DarTodasBolas(nbolas : out integer); private Bolas : bolasEsbirros := (others => 0); -- Guarda el numero de bolas que tiene cada uno end BancoBolasEsbirros;

Código Fuente -- Definimos las tareas task type GokuCIA(idGokuCIA : integer); -- Representa a Goku y a sus amigos. task type Esbirro(idEsbirro : integer); -- Representa a Goku y a sus amigos. -- Definimos los tipos protegidos bancoGokuCIA : BancoBolasGokuCia; bancoEsbirros : BancoBolasEsbirros; ciudades: array(1..MAXCIUDADES) of Ciudad; type PGokuCIA is access GokuCIA; -- Definimos el tipo puntero de Goku y sus amigos -- Definimos el array de punteros de GokuCIA amigosGoku: array(1..MAXGOKUCIA) of PGokuCIA; type PEsbirro is access Esbirro; -- Definimos el tipo puntero de Esbirros -- Definimos el array de punteros de Esbirro Esbirros: array(1..MAXESBIRROS) of PEsbirro;

Código Fuente protected body Ciudad is procedure Iniciar(id : integer; hayBola : boolean) is begin idCiudad := id; Bola := hayBola; hayGokuCIA := false; -- Indica si esta Goku o alguno de los suyos en la Ciudad hayEsbirros := false; -- Indica si hay algún esbirro en la Ciudad bolasGokuCIA := 0; -- Bolas con las que entra Goku o alguno de los amigos a la ciudad bolasEsbirros := 0; -- Bolas con las que entra algún esbirro a la ciudad luchando := false; end Iniciar; procedure EntrarGokuCIA(id: integer; bolas : integer; algunAmigo : out boolean) is rand : float; begin if hayGokuCIA then -- Quiere decir que ya hay alguno de su clan en la Ciudad algunAmigo := true; else -- No hay ninguno algunAmigo := false; hayGokuCIA := true; -- Indicamos que hemos entrado bolasGokuCIA := bolas;

Código Fuente -- Vemos si hay algun enemigo para luchar con el if hayEsbirros then luchando := true; -- Indicamos que se esta luchando -- Generamos quien gana Reset(G); rand := Random(G); if rand < 0.8 then -- Gana GokuCIA. Como son los buenos tienen las posibilidades bolasGokuCIA := bolasGokuCIA + bolasEsbirros; -- Le quitamos las bolas bolasEsbirros := 0; Put("¡¡¡ Ha habido una lucha y ha ganado Goku o CIA con id:");Put(id,0);Put(" !!!");New_Line; else -- Gana los Esbirros bolasEsbirros := bolasEsbirros + bolasGokuCIA; -- Le quitamos las bolas bolasGokuCIA := 0; Put("¡¡¡ Ha perdido una lucha y ha ganado Goku o CIA con id:");Put(id,0);Put(" !!!");New_Line; end if; luchando := false; end if; end EntrarGokuCIA;

Código Fuente procedure EntrarEsbirros(id: integer; bolas : integer; algunAmigo : out boolean) is rand : float; begin if hayEsbirros then -- Quiere decir que ya hay alguno de su clan en la Ciudad algunAmigo := true; else -- No hay ninguno algunAmigo := false; hayEsbirros := true; -- Indicamos que hemos entrado bolasEsbirros := bolas; -- Vemos si hay algún enemigo para luchar con el if hayGokuCIA then luchando := true; -- Indicamos que se esta luchando -- Generamos quien gana Reset(G); rand := Random(G);

Código Fuente if rand >= 0.8 then -- Gana los Esbirros bolasEsbirros := bolasEsbirros + bolasGokuCIA; -- Le quitamos las bolas bolasGokuCIA := 0; Put("¡¡¡ Ha habido una lucha y ha ganado Esbirro con id:");Put(id,0);Put(" !!!");New_Line; else -- Gana los Esbirros bolasGokuCIA := bolasGokuCIA + bolasEsbirros; -- Le quitamos las bolas bolasEsbirros := 0; Put("¡¡¡ Ha habido una lucha y ha perdido Esbirro con id:");Put(id,0);Put(" !!!");New_Line; end if; luchando := false; end if; end EntrarEsbirros;

Código Fuente entry SalirGokuCIA(bolas : out integer) when not luchando is -- Cuando se esta luchando no se puede salir begin if Bola then -- Si hay bola la cogemos bolas := 1; bola := false; else bolas := 0; end if; bolas := bolas + bolasGokuCIA; -- Devolvemos las bolas con las que sale de la Ciudad hayGokuCIA := false; -- Indica que ya se ha ido de la ciudad end SalirGokuCIA; entry SalirEsbirros(bolas : out integer) when not luchando is -- Cuando se esta luchando no se puede salir begin if Bola then -- Si hay bola la cogemos bolas := 1; bola := false; else bolas := 0; end if; bolas := bolas + bolasEsbirros; -- Devolvemos las bolas con las que sale de la Ciudad hayEsbirros := false; -- Indica que ya se ha ido de la ciudad end SalirEsbirros; end Ciudad;

Código Fuente protected body BancoBolasGokuCia is procedure MeterBolas(id : integer; nbolas : integer) is begin -- Metemos las bolas en el Banco, en su cuenta Bolas(id) := nbolas; end MeterBolas; procedure DarBolas(id : integer; nbolas : out integer) is begin -- Sacamos las bolas de su cuenta. nbolas := Bolas(id); Bolas(id) := 0; -- Vaciamos su cuenta end DarBolas; procedure DarTodasBolas(nbolas : out integer) is begin -- Es para consultar en numero de bolas que hay en total nbolas := 0; for i in 1..MAXGOKUCIA loop nbolas := nbolas + Bolas(i); end loop; end DarTodasBolas; end BancoBolasGokuCia;

Código Fuente protected body BancoBolasEsbirros is procedure MeterBolas(id : integer; nbolas : integer) is begin -- Metemos las bolas en el Banco, en su cuenta Bolas(id) := nbolas; end MeterBolas; procedure DarBolas(id : integer; nbolas : out integer) is begin -- Sacamos las bolas de su cuenta. nbolas := Bolas(id); Bolas(id) := 0; -- Vaciamos su cuenta end DarBolas; procedure DarTodasBolas(nbolas : out integer) is begin -- Es para consultar en numero de bolas que hay en total nbolas := 0; for i in 1..MAXESBIRROS loop nbolas := nbolas + Bolas(i); end loop; end DarTodasBolas; end BancoBolasEsbirros;

Código Fuente task body GokuCIA is id: integer; bolas : integer := 0; nuestrasBolas : integer; enemigosBolas : integer; rand : float; salir : boolean := false; ciudad : integer := 1; algunAmigo : boolean; begin -- Inicializamos los valores id := idGokuCIA; Reset(G); loop ciudad := (ciudad mod MAXCIUDADES) + 1; Put("--> Goku o CIA con id:");Put(id,0);Put(" entra a la Ciudad ");Put(ciudad,0);New_Line; bancoGokuCIA.DarBolas(id, bolas); -- Cogemos las bolas para entrar en la Ciudad ciudades(ciudad).EntrarGokuCIA(id, bolas, algunAmigo);

Código Fuente if algunAmigo then -- Salimos de la ciudad porque ya hay otro e los nuestros Put("<-- Goku o CIA con id:");Put(id,0);Put(" se va de la Ciudad");Put(ciudad,0);Put(" porque había otro de su clan.");New_Line; else -- Generamos aleatoriamente el tiempo de búsqueda en la ciudad rand := Random(G); delay Duration (rand * 10.0); -- Tiempo de búsqueda ciudades(ciudad).SalirGokuCIA(bolas); -- Salimos de la ciudad con un numero de bolas Put("<$$ Goku o CIA con id:");Put(id,0);Put(" se va de la Ciudad");Put(ciudad,0);Put(" con ");Put(bolas,0);Put(" bolas.");New_Line; end if; bancoGokuCIA.MeterBolas(id, bolas); -- Metemos las bolas en el banco -- Vemos haber si alguien ha encontrado todas las bolas bancoEsbirros.DarTodasBolas(enemigosBolas); bancoGokuCIA.DarTodasBolas(nuestrasBolas); if nuestrasBolas = MAXBOLAS or enemigosBolas = MAXBOLAS then salir := true; end if; exit when salir; -- Salimos cuando ya no haya mas bolas rand := Random(G); delay Duration (rand * 20.0); -- Tiempo de cambiar de ciudad end loop;

Código Fuente if nuestrasBolas = MAXBOLAS then Put("<+++ Goku o CIA con id:");Put(id,0);Put(" ha finalizado su búsqueda porque han encontrado las todas las bolas.");New_Line; else Put("</// Goku o CIA con id:");Put(id,0);Put(" ha finalizado su búsqueda porque los esbirros han encontrado las bolas.");New_Line; end if; end GokuCIA; task body Esbirro is id: integer; bolas : integer := 0; nuestrasBolas : integer; enemigosBolas : integer; rand : float; salir : boolean := false; ciudad : integer := 0; algunAmigo : boolean; begin -- Inicializamos los valores id := idEsbirro; Reset(G);

Código Fuente loop ciudad := (ciudad mod MAXCIUDADES) + 1; Put("--> Esbirro con id:");Put(id,0);Put(" entra a la Ciudad ");Put(ciudad,0);New_Line; bancoEsbirros.DarBolas(id, bolas); -- Cogemos las bolas para entrar en la Ciudad ciudades(ciudad).EntrarEsbirros(id, bolas, algunAmigo); if algunAmigo then -- Salimos de la ciudad porque ya hay otro e los nuestros Put("<-- Esbirro con id:");Put(id,0);Put(" se va de la Ciudad");Put(ciudad,0);Put(" porque habia otro de su clan.");New_Line; else -- Generamos aleatoriamente el tiempo de búsqueda en la ciudad rand := Random(G); delay Duration (rand * 10.0); -- Tiempo de búsqueda ciudades(ciudad).SalirEsbirros(bolas); -- Salimos de la ciudad con un numero de bolas Put("<$$ Esbirro con id:");Put(id,0);Put(" se va de la Ciudad");Put(ciudad,0);Put(" con ");Put(bolas,0);Put(" bolas.");New_Line; end if; bancoEsbirros.MeterBolas(id, bolas); -- Metemos las bolas en el banco

Código Fuente -- Vemos haber si alguien ha encontrado todas las bolas bancoGokuCia.DarTodasBolas(enemigosBolas); bancoEsbirros.DarTodasBolas(nuestrasBolas); if nuestrasBolas = MAXBOLAS or enemigosBolas = MAXBOLAS then salir := true; end if; exit when salir; -- Salimos cuando ya no haya mas bolas rand := Random(G); delay Duration (rand * 20.0); -- Tiempo de cambiar de ciudad end loop; if nuestrasBolas = MAXBOLAS then Put("<+++ Esbirro con id:");Put(id,0);Put(" ha finalizado su búsqueda porque han encontrado las todas las bolas.");New_Line; else Put("</// Esbirro con id:");Put(id,0);Put(" ha finalizado su búsqueda porque Goku y sus amigos han encontrado las bolas.");New_Line; end if; end Esbirro;

Código Fuente begin Put("---- COMIENZAN LA AVENTURA");New_Line;New_Line; loop -- Repartimos las bolas cd := (cd mod MAXCIUDADES) + 1; Reset(G); aleatorio := Random(G); if not tieneBola(cd) then if aleatorio < 0.8 then -- Le damos una bola a esa ciudad. tieneBola(cd) := true; ciudades(cd).Iniciar(cd, true); reparto := reparto - 1; else ciudades(cd).Iniciar(cd, false); end if; exit when reparto = 0; end loop;

Código Fuente -- Arrancan Goku y sus amigos for i in 1..MAXGOKUCIA loop amigosGoku(i) := new GokuCIA(i); end loop; -- Arrancan los esbirros de Freeza for i in 1..MAXESBIRROS loop esbirros(i) := new Esbirro(i); end loop; end DragonBallTProtAda;

Ejemplo de Ejecución ---- COMIENZAN LA AVENTURA --> Goku o CIA con id:1 entra a la Ciudad 2 --> Goku o CIA con id:2 entra a la Ciudad 2 <-- Goku o CIA con id:2 se va de la Ciudad2 porque había otro de su clan. --> Goku o CIA con id:3 entra a la Ciudad 2 <-- Goku o CIA con id:3 se va de la Ciudad2 porque había otro de su clan. --> Esbirro con id:1 entra a la Ciudad 1 --> Esbirro con id:2 entra a la Ciudad 1 <-- Esbirro con id:2 se va de la Ciudad1 porque había otro de su clan. --> Esbirro con id:3 entra a la Ciudad 1 <-- Esbirro con id:3 se va de la Ciudad1 porque había otro de su clan. --> Esbirro con id:2 entra a la Ciudad 2 ¡¡¡ Ha habido una lucha y ha perdido Esbirro con id:2 !!! <$$ Goku o CIA con id:1 se va de la Ciudad2 con 1 bolas. <$$ Esbirro con id:1 se va de la Ciudad1 con 1 bolas. --> Goku o CIA con id:2 entra a la Ciudad 3 <$$ Goku o CIA con id:2 se va de la Ciudad3 con 1 bolas. --> Goku o CIA con id:3 entra a la Ciudad 3 <$$ Esbirro con id:2 se va de la Ciudad2 con 0 bolas. <$$ Goku o CIA con id:3 se va de la Ciudad3 con 0 bolas. --> Esbirro con id:3 entra a la Ciudad 2 --> Esbirro con id:1 entra a la Ciudad 2 <-- Esbirro con id:1 se va de la Ciudad2 porque había otro de su clan. <$$ Esbirro con id:3 se va de la Ciudad2 con 0 bolas.

Ejemplo de Ejecución --> Goku o CIA con id:1 entra a la Ciudad 3 --> Goku o CIA con id:2 entra a la Ciudad 4 --> Esbirro con id:1 entra a la Ciudad 3 ¡¡¡ Ha habido una lucha y ha perdido Esbirro con id:1 !!! <$$ Goku o CIA con id:1 se va de la Ciudad3 con 2 bolas. <$$ Esbirro con id:1 se va de la Ciudad3 con 0 bolas. --> Esbirro con id:2 entra a la Ciudad 3 <$$ Goku o CIA con id:2 se va de la Ciudad4 con 2 bolas. --> Goku o CIA con id:3 entra a la Ciudad 4 <$$ Esbirro con id:2 se va de la Ciudad3 con 0 bolas. --> Esbirro con id:3 entra a la Ciudad 3 --> Goku o CIA con id:1 entra a la Ciudad 4 <-- Goku o CIA con id:1 se va de la Ciudad4 porque había otro de su clan. <$$ Goku o CIA con id:3 se va de la Ciudad4 con 0 bolas. <$$ Esbirro con id:3 se va de la Ciudad3 con 0 bolas. --> Esbirro con id:1 entra a la Ciudad 4 --> Goku o CIA con id:3 entra a la Ciudad 5 --> Goku o CIA con id:2 entra a la Ciudad 5 <-- Goku o CIA con id:2 se va de la Ciudad5 porque había otro de su clan. --> Goku o CIA con id:2 entra a la Ciudad 6 --> Esbirro con id:2 entra a la Ciudad 4 <-- Esbirro con id:2 se va de la Ciudad4 porque había otro de su clan. <$$ Esbirro con id:1 se va de la Ciudad4 con 0 bolas. <$$ Goku o CIA con id:2 se va de la Ciudad6 con 3 bolas. <$$ Goku o CIA con id:3 se va de la Ciudad5 con 1 bolas. --> Esbirro con id:3 entra a la Ciudad 4 --> Goku o CIA con id:1 entra a la Ciudad 5 --> Esbirro con id:1 entra a la Ciudad 5 ¡¡¡ Ha habido una lucha y ha perdido Esbirro con id:1 !!!

Ejemplo de Ejecución <$$ Goku o CIA con id:1 se va de la Ciudad5 con 2 bolas. <$$ Esbirro con id:1 se va de la Ciudad5 con 0 bolas. <$$ Esbirro con id:3 se va de la Ciudad4 con 0 bolas. --> Esbirro con id:2 entra a la Ciudad 5 --> Goku o CIA con id:2 entra a la Ciudad 7 <$$ Esbirro con id:2 se va de la Ciudad5 con 0 bolas. --> Goku o CIA con id:3 entra a la Ciudad 6 --> Goku o CIA con id:1 entra a la Ciudad 6 <-- Goku o CIA con id:1 se va de la Ciudad6 porque había otro de su clan. <$$ Goku o CIA con id:2 se va de la Ciudad7 con 4 bolas. --> Esbirro con id:1 entra a la Ciudad 6 ¡¡¡ Ha habido una lucha y ha perdido Esbirro con id:1 !!! --> Goku o CIA con id:2 entra a la Ciudad 8 <-- Goku o CIA con id:2 se va de la Ciudad8 porque había otro de su clan. --> Esbirro con id:3 entra a la Ciudad 5 --> Goku o CIA con id:1 entra a la Ciudad 7 --> Goku o CIA con id:2 entra a la Ciudad 9 <-- Goku o CIA con id:2 se va de la Ciudad9 porque había otro de su clan. <$$ Goku o CIA con id:3 se va de la Ciudad6 con 1 bolas. <$$ Esbirro con id:1 se va de la Ciudad6 con 0 bolas. <$$ Goku o CIA con id:1 se va de la Ciudad7 con 2 bolas. <+++ Goku o CIA con id:1 ha finalizado su búsqueda porque han encontrado las todas las bolas.

Ejemplo de Ejecución <$$ Esbirro con id:3 se va de la Ciudad5 con 0 bolas. </// Esbirro con id:3 ha finalizado su búsqueda porque Goku y sus amigos han encontrado las bolas. --> Esbirro con id:2 entra a la Ciudad 6 <$$ Esbirro con id:2 se va de la Ciudad6 con 0 bolas. </// Esbirro con id:2 ha finalizado su búsqueda porque Goku y sus amigos han encontrado las bolas. --> Esbirro con id:1 entra a la Ciudad 7 --> Goku o CIA con id:2 entra a la Ciudad 10 <$$ Esbirro con id:1 se va de la Ciudad7 con 0 bolas. --> Goku o CIA con id:3 entra a la Ciudad 7 <$$ Goku o CIA con id:2 se va de la Ciudad10 con 4 bola. <$$ Goku o CIA con id:3 se va de la Ciudad7 con 1 bolas. <+++ Goku o CIA con id:3 ha finalizado su búsqueda porque han encontrado las todas las bolas. --> Esbirro con id:1 entra a la Ciudad 8 <-- Esbirro con id:1 se va de la Ciudad8 porque había otro de su clan. </// Esbirro con id:1 ha finalizado su búsqueda porque Goku y sus amigos han encontrado las bolas. --> Goku o CIA con id:2 entra a la Ciudad 1 <$$ Goku o CIA con id:2 se va de la Ciudad1 con 4 bolas. <+++ Goku o CIA con id:2 ha finalizado su búsqueda porque han encontrado las todas las bolas.