예제 #1
0
        public override int[] moverse(Terreno terrenoActual, Johto region, int direccionMov)
        {
            int filaActual = terrenoActual.getFila();
            int colActual  = terrenoActual.getColumna();

            return(new int[] { filaActual, colActual });
        }
예제 #2
0
        public override int[] moverse(Terreno terrenoActual, Johto region, int direccionMov)
        {
            int filaActual = terrenoActual.getFila();
            int colActual  = terrenoActual.getColumna();
            int filaNueva  = 0;
            int colNueva   = 0;

            switch (direccionMov)
            {
            // Se mueve al terreno de arriba
            case 0:
                filaNueva = filaActual - 1;
                colNueva  = colActual;
                break;

            // Se mueve al terreno de la deracha
            case 1:
                colNueva  = colActual + 1;
                filaNueva = filaActual;
                break;

            // Se mueve al terreno de abajo
            case 2:
                filaNueva = filaActual + 1;
                colNueva  = colActual;
                break;

            // Se mueve al terreno de la izquierda
            case 3:
                colNueva  = colActual - 1;
                filaNueva = filaActual;
                break;

            // Se mantiene en el mismo terreno
            case 4:
                colNueva  = colActual;
                filaNueva = filaActual;
                break;

            default:
                colNueva  = colActual;
                filaNueva = filaActual;
                break;
            }

            //Valida si se puede mover o no , dependiendo de las dimensiones del mapa.
            if (puedeMoverse(colNueva, filaNueva, direccionMov, region) == true)
            {
                return(new int[] { filaNueva, colNueva });
            }
            else
            {
                return(new int[] { filaActual, colActual });
            }
        }
예제 #3
0
        public override void breed(Johto region, Terreno terreno, Bitmon reproductor)
        {
            TiposBitmons tipos = new TiposBitmons();

            int    randomBitmon      = random.Next(0, 6);
            string tipoBitmon        = tipos.tipo[randomBitmon];
            int    randomTerrenoFila = random.Next(0, region.alto);
            int    randomTerrenoCol  = random.Next(0, region.ancho);

            if ((region.mapaRegion[randomTerrenoFila, randomTerrenoCol].getTipo() != "Volcan") && (region.mapaRegion[randomTerrenoFila, randomTerrenoCol].getTipo() != "Acuatico"))
            {
                region.mapaRegion[randomTerrenoFila, randomTerrenoCol].bitmonsTerreno.Add(new Ent());
                reproductor.tiempoVida      += reproductor.tiempoVidaPerdido * 0.3;
                reproductor.cantidadDeHijos += 1;
            }
        }
예제 #4
0
        private bool puedeMoverse(int colNueva, int filaNueva, int direccionMov, Johto region)
        {
            bool retorno = true;

            switch (direccionMov)
            {
            case 0:
                if (filaNueva < 0)
                {
                    retorno = false;
                }
                break;

            case 1:
                if (colNueva / region.ancho > 0)
                {
                    retorno = false;
                }
                break;

            case 2:
                if (filaNueva / region.alto > 0)
                {
                    retorno = false;
                }
                break;

            case 3:
                if (colNueva < 0)
                {
                    retorno = false;
                }
                break;

            case 4:
                retorno = false;
                break;

            default:
                retorno = false;
                break;
            }
            return(retorno);
        }
예제 #5
0
        public override void breed(Johto region, Terreno terreno, Bitmon reproductor)
        {
            TiposBitmons tipos = new TiposBitmons();

            foreach (Bitmon bitmon in terreno.bitmonsTerreno)
            {
                if (bitmon != reproductor)
                {
                    if ((reproductor.bitmonsAfines.Contains(bitmon.getTipo()) && bitmon.bitmonsAfines.Contains(reproductor.getTipo())))
                    {
                        reproductor.yaSeReprodujo = true;
                        bitmon.yaSeReprodujo      = true;

                        if (bitmon.cantidadDeHijos == reproductor.cantidadDeHijos)
                        {
                            int    randomBitmon      = random.Next(0, 6);
                            string tipoBitmon        = tipos.tipo[randomBitmon];
                            int    randomTerrenoFila = random.Next(0, region.alto);
                            int    randomTerrenoCol  = random.Next(0, region.ancho);

                            switch (tipoBitmon)
                            {
                            case "Dorvalo":
                                region.mapaRegion[randomTerrenoFila, randomTerrenoCol].bitmonsTerreno.Add(new Dorvalo());
                                break;

                            case "Doti":
                                region.mapaRegion[randomTerrenoFila, randomTerrenoCol].bitmonsTerreno.Add(new Doti());
                                break;

                            case "Ent":
                                break;

                            case "Gofue":
                                region.mapaRegion[randomTerrenoFila, randomTerrenoCol].bitmonsTerreno.Add(new Gofue());
                                break;

                            case "Taplan":
                                region.mapaRegion[randomTerrenoFila, randomTerrenoCol].bitmonsTerreno.Add(new Taplan());
                                break;

                            case "Wetar":
                                if (region.mapaRegion[randomTerrenoFila, randomTerrenoCol].getTipo() != "Acuatico")
                                {
                                    continue;
                                }
                                else
                                {
                                    region.mapaRegion[randomTerrenoFila, randomTerrenoCol].bitmonsTerreno.Add(new Wetar());
                                    break;
                                }
                            }
                            bitmon.cantidadDeHijos      += 1;
                            reproductor.cantidadDeHijos += 1;
                        }

                        else
                        {
                            int randomBitmon = random.Next(0, 7);
                            if (randomBitmon == 6)
                            {
                                if (reproductor.cantidadDeHijos > bitmon.cantidadDeHijos)
                                {
                                    foreach (KeyValuePair <int, string> pair in tipos.tipo)
                                    {
                                        if (pair.Value == reproductor.getTipo())
                                        {
                                            randomBitmon = pair.Key;
                                        }
                                    }
                                }

                                else if (reproductor.cantidadDeHijos < bitmon.cantidadDeHijos)
                                {
                                    foreach (KeyValuePair <int, string> pair in tipos.tipo)
                                    {
                                        if (pair.Value == bitmon.getTipo())
                                        {
                                            randomBitmon = pair.Key;
                                        }
                                    }
                                }
                            }

                            string tipoBitmon        = tipos.tipo[randomBitmon];
                            int    randomTerrenoFila = random.Next(0, region.alto);
                            int    randomTerrenoCol  = random.Next(0, region.ancho);

                            switch (tipoBitmon)
                            {
                            case "Dorvalo":
                                region.mapaRegion[randomTerrenoFila, randomTerrenoCol].bitmonsTerreno.Add(new Dorvalo());
                                break;

                            case "Doti":
                                region.mapaRegion[randomTerrenoFila, randomTerrenoCol].bitmonsTerreno.Add(new Doti());
                                break;

                            case "Ent":
                                break;

                            case "Gofue":
                                region.mapaRegion[randomTerrenoFila, randomTerrenoCol].bitmonsTerreno.Add(new Gofue());
                                break;

                            case "Taplan":
                                region.mapaRegion[randomTerrenoFila, randomTerrenoCol].bitmonsTerreno.Add(new Taplan());
                                break;

                            case "Wetar":
                                if (region.mapaRegion[randomTerrenoFila, randomTerrenoCol].getTipo() != "Acuatico")
                                {
                                    continue;
                                }
                                else
                                {
                                    region.mapaRegion[randomTerrenoFila, randomTerrenoCol].bitmonsTerreno.Add(new Wetar());
                                    break;
                                }
                            }
                            bitmon.cantidadDeHijos      += 1;
                            reproductor.cantidadDeHijos += 1;
                        }

                        reproductor.yaSeReprodujo = true;
                        reproductor.tiempoVida   += reproductor.tiempoVidaPerdido * 0.3;
                        bitmon.yaSeReprodujo      = true;
                        bitmon.tiempoVida        += bitmon.tiempoVidaPerdido * 0.3;

                        break;
                    }
                }
            }
        }
예제 #6
0
 public abstract void breed(Johto region, Terreno terreno, Bitmon reproductor);
예제 #7
0
 public abstract int[] moverse(Terreno terreno, Johto region, int direccionMov);
예제 #8
0
        static void Main(string[] args)

        {   //Creacion de las 3 cofiguraciones, con mapa y bitmons correspondientes.
            Johto config1 = new Johto(0, 3, 3);
            Johto config2 = new Johto(1, 4, 4);
            Johto config3 = new Johto(2, 5, 5);

            config1.crearMapa();
            config2.crearMapa();
            config3.crearMapa();
            config1.crearBitmons();
            config2.crearBitmons();
            config3.crearBitmons();

            string opcion1 = "[Opción 1] Dimesiones mapa: 3x3, Terrenos(N° Bitmons iniciales): \n\n";
            string opcion2 = "[Opción 2] Dimesiones mapa: 4x4, Terrenos(N° Bitmons iniciales): \n\n";
            string opcion3 = "[Opción 3] Dimesiones mapa: 5x5, Terrenos(N° Bitmons iniciales): \n\n";

            int contadorfila = 0;

            foreach (Terreno terreno in config1.mapaRegion)
            {
                opcion1 += terreno.getTipoAbrev() + "(" + terreno.numBitmons() + ") - ";
                contadorfila++;
                if (contadorfila % 3 == 0)
                {
                    opcion1  = opcion1.Substring(0, opcion1.Length - 2);
                    opcion1 += "\n";
                }
            }
            contadorfila = 0;
            foreach (Terreno terreno in config2.mapaRegion)
            {
                opcion2 += terreno.getTipoAbrev() + "(" + terreno.numBitmons() + ") - ";
                contadorfila++;
                if (contadorfila % 4 == 0)
                {
                    opcion2  = opcion2.Substring(0, opcion2.Length - 2);
                    opcion2 += "\n";
                }
            }
            contadorfila = 0;
            foreach (Terreno terreno in config3.mapaRegion)
            {
                opcion3 += terreno.getTipoAbrev() + "(" + terreno.numBitmons() + ") - ";
                contadorfila++;
                if (contadorfila % 5 == 0)
                {
                    opcion3  = opcion3.Substring(0, opcion3.Length - 2);
                    opcion3 += "\n";
                }
            }

            // Definicion de terrenos,region y mundoBitmons
            // Console.WindowWidth = 90;
            //Console.WindowHeight = 50;
            Console.SetWindowPosition(0, 0);

            MapasConsola mapas = new MapasConsola();

            Console.WriteLine(mapas.logo);
            Console.WriteLine("Configuraciones iniciales disponibles: \n");
            Console.WriteLine("\nTipos Terreno--> Ac=Acuatico , De=Desierto , Ni=Nieve , Ve=Vegetacion , Vo=Volcan \n\n");
            Console.WriteLine(opcion1);
            Console.WriteLine(opcion2);
            Console.WriteLine(opcion3);
            Console.WriteLine("Elija una opción: ");

            int dimensionMapa = Convert.ToInt32(Console.ReadLine());

            dimensionMapa = dimensionMapa - 1;

            Console.WriteLine("\nIngrese cuantos meses quiere simular: ");
            int mesesSimulacion = Convert.ToInt32(Console.ReadLine());


            Johto regionElegida;

            switch (dimensionMapa)
            {
            case 0:
                regionElegida = config1;
                break;

            case 1:
                regionElegida = config2;
                break;

            case 2:
                regionElegida = config3;
                break;

            default:
                regionElegida = config1;
                break;
            }


            Simulador simulador = new Simulador(dimensionMapa, regionElegida, mesesSimulacion);

            simulador.comenzarSimulacion();
        }