Exemple #1
0
 public Model(int seed, int m)
 {
     this.seed            = seed;
     this.meses_a_simular = m;
     bitmonlandia         = new Bitmonlandia(seed);
     tablero = bitmonlandia.GetMapa().GetTablero();
 }
Exemple #2
0
        /* Reproduccion de Bitmons consiste en que si la pareja es compatible, se instancia dentro de la lista de Bitmons
         * un nuevo Bitmon de una especie aleatoria
         */
        public override void Reproduccion(Bitmon pareja, int size, Bitmonlandia bitmonlandia)
        {
            if (pareja.GetNombre() == "Gofue" || pareja.GetNombre() == "Dorvalo" || pareja.GetNombre() == "Doti")
            {
                tiempo_De_Vida += (tiempo_De_Vida * 3) / 10;
                pareja.SetTiempoDeVida(pareja.GetTiempoDeVida() + (pareja.GetTiempoDeVida() * 3) / 10);
                int c1 = random.Next(size); // Asignacion de una coordenada aleatoria
                int c2 = random.Next(size); // Asignacion de una coordenada aleatoria

                //Veo si el bitmon caera fuera de los limites del mapa:
                int cont_de_escape = 0;
                while (bitmonlandia.GetMapa().GetTablero()[c1, c2, 1] != "   " && bitmonlandia.GetMapa().GetTablero()[c1, c2, 2] != "   ")
                {
                    //condicion de escape
                    if (cont_de_escape > 20)
                    {
                        return;
                    }
                    c1 = random.Next(size); // Asignacion de una coordenada aleatoria
                    c2 = random.Next(size); // Asignacion de una coordenada aleatoria
                    cont_de_escape++;
                }

                int[] tupla = { c1, c2 };

                //Estadisticas
                int pa = random.Next(10, ((puntos_De_Ataque + pareja.GetPuntosDeAtaque()) / 2));
                int pv = random.Next(10, ((puntos_De_Vida + pareja.GetPuntosDeVida()) / 2));

                //Veamos la cantidad de hijos que han tenido ambos
                int    hijos_padre  = hijos;
                int    hijos_pareja = pareja.GetHijos();
                string especie_hijo = "";

                int probabilidad = random.Next(0, 101);

                if (hijos_padre > hijos_pareja)
                {
                    if (probabilidad <= 70)
                    {
                        especie_hijo = tipo_De_Bitmon;
                    }

                    else
                    {
                        especie_hijo = pareja.GetNombre();
                    }
                }

                else if (hijos_padre < hijos_pareja)
                {
                    if (probabilidad <= 70)
                    {
                        especie_hijo = pareja.GetNombre();
                    }

                    else
                    {
                        especie_hijo = tipo_De_Bitmon;
                    }
                }

                else
                {
                    if (probabilidad <= 50)
                    {
                        especie_hijo = pareja.GetNombre();
                    }

                    else
                    {
                        especie_hijo = tipo_De_Bitmon;
                    }
                }

                switch (especie_hijo)
                {
                case "Gofue":
                    bitmonlandia.añadir_bitmon(new Gofue("Gofue", 15, pa, pv, tupla));
                    break;

                case "Dorvalo":
                    bitmonlandia.añadir_bitmon(new Dorvalo("Dorvalo", 20, pa, pv, tupla));
                    break;

                case "Doti":
                    bitmonlandia.añadir_bitmon(new Doti("Doti", 30, pa, pv, tupla));
                    break;
                }
                Console.WriteLine("Ha nacido un {0}", especie_hijo);
                hijos += 1;
                pareja.SetHijos();
            }
        }
Exemple #3
0
        public void Simulacion()
        {
            registro = "";
            //Verficamos si termino la simulacion
            if (mes_contador > meses_a_simular)
            {
                return;
            }

            if (turno % 2 == 0)
            {
                //ciclo for para que los bitmons se muevan
                for (int bit = 0; bit < bitmonlandia.GetLista().Count; bit++)
                {
                    //vemos si es que el bitmon no esta muerto
                    if (bitmonlandia.GetLista()[bit].GetEstadoDeVida() == false)
                    {
                        continue;
                    }

                    string especie = bitmonlandia.GetLista()[bit].GetNombre();

                    //Movimiento:
                    if (especie != "Ent")
                    {
                        bitmonlandia.GetLista()[bit].Movimiento(bitmonlandia.GetMapa());
                    }
                }


                turno++;
            }

            else if (turno % 2 == 1)
            {
                //Se recorre la lista de bitmons para ver si hay bitmons en la misma casilla
                for (int bit = 0; bit < bitmonlandia.GetLista().Count; bit++)
                {
                    // vemos si es que el bitmon no esta muerto
                    if (bitmonlandia.GetLista()[bit].GetEstadoDeVida() == false)
                    {
                        continue;
                    }

                    //Selecciono el primer bitmon y veo su especie tambien:
                    string especie = bitmonlandia.GetLista()[bit].GetNombre();


                    //Y recorro la lista en busca de una coincidencia
                    for (int pareja = bit + 1; pareja < bitmonlandia.GetLista().Count; pareja++)
                    {
                        if (bitmonlandia.GetLista()[pareja].GetEstadoDeVida() == false)
                        {
                            continue;
                        }

                        if (bitmonlandia.GetLista()[bit].GetPosicion()[0] == bitmonlandia.GetLista()[pareja].GetPosicion()[0] && bitmonlandia.GetLista()[bit].GetPosicion()[1] == bitmonlandia.GetLista()[pareja].GetPosicion()[1
                            ])
                        {
                            //Primero intentamos con pelea
                            bitmonlandia.GetLista()[bit].Pelea(bitmonlandia.GetLista()[pareja]);
                            registro += String.Format("{0} peleó con {1}\n", bitmonlandia.GetLista()[bit].GetNombre(), bitmonlandia.GetLista()[pareja].GetNombre());

                            //Si no funciona, significa que se llevan bien para reproducirse
                            if (bitmonlandia.GetLista()[bit].GetEstadoDeVida() == true && bitmonlandia.GetLista()[pareja].GetEstadoDeVida() == true)
                            {
                                int prob = random.Next(101);
                                if (prob <= 15)
                                {//probabilidad del 15% de reproducirse
                                    registro = String.Format("{0} se reprodujo con {1}\n", bitmonlandia.GetLista()[bit].GetNombre(), bitmonlandia.GetLista()[pareja].GetNombre());
                                    bitmonlandia.GetLista()[bit].Reproduccion(bitmonlandia.GetLista()[pareja], seed, bitmonlandia);
                                }
                            }
                        }



                        if (bitmonlandia.GetLista()[bit].GetEstadoDeVida() == false)
                        {
                            bitmonlandia.GetMapa().RemoveBitmon(bitmonlandia.GetLista()[bit].GetPosicion()[0], bitmonlandia.GetLista()[bit].GetPosicion()[1], bitmonlandia.GetLista()[bit].GetCelda());
                            bitmonlandia.GetLista()[bit].LimpiarCadaver();
                        }

                        if (bitmonlandia.GetLista()[pareja].GetEstadoDeVida() == false)
                        {
                            bitmonlandia.GetMapa().RemoveBitmon(bitmonlandia.GetLista()[pareja].GetPosicion()[0], bitmonlandia.GetLista()[pareja].GetPosicion()[1], bitmonlandia.GetLista()[pareja].GetCelda());
                            bitmonlandia.GetLista()[pareja].LimpiarCadaver();
                        }
                    }

                    /*Comprobamos si sigue vivo este bitmon, para asi saber si moverlo y cambiar el terreno
                     * si corresponde*/
                    if (bitmonlandia.GetLista()[bit].GetEstadoDeVida() == false)
                    {
                        continue;
                    }

                    //Ahora que sabemos que esta vivo cambiamos el terreno si corresponde
                    //Transformar terreno:
                    if (especie == "Gofue")
                    {
                        bitmonlandia.GetLista()[bit].Secar(bitmonlandia.GetMapa());
                    }

                    else if (especie == "Taplan")
                    {
                        bitmonlandia.GetLista()[bit].Plantar(bitmonlandia.GetMapa());
                    }

                    //Si sigue vivo despues de todo, hacerlo envejecer
                    if (bitmonlandia.GetLista()[bit].GetEstadoDeVida() == true)
                    {
                        bitmonlandia.GetLista()[bit].Envejecer(bitmonlandia.GetMapa());
                    }
                }

                //Si han pasado 3 meses y algun Ent sigue vivo, spawnear uno
                if (mes_contador % 3 == 0 && mes_contador != 0)
                {
                    bitmonlandia.PlantarEnt(seed);
                }

                mes_contador++;
                turno++;
            }
        }