dragon ball sergio pérez camacho matías blanco león

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

Upload: ynez-jorge

Post on 29-Jan-2016

223 views

Category:

Documents


0 download

TRANSCRIPT

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

DRAGON BALLSergio Pérez Camacho

Matías Blanco León

Page 2: 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.

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

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.

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

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.

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

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.

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

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;

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

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;

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

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;

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

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;

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

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;

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

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 if; end EntrarGokuCIA;

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

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);

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

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 if; end EntrarEsbirros;

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

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;

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

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;

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

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;

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

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);

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

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;

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

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);

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

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

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

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;

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

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; end if;

exit when reparto = 0; end loop;

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

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;

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

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.

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

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 !!!

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

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.

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

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.