コード例 #1
0
        private void button1_Click(object sender, EventArgs e)
        {
            if (contador <= meses)
            {
                if (contador == meses)
                {
                    button1.Text = "Pasar a resultados";
                }
                label1.Text = $"Mes {contador}";
                if (contador % 3 == 0 && contador != 0 && bitmons.RevisarMapa())
                {
                    Bitmon bitmon = new Bitmon("Ent");
                    while (true)
                    {
                        int fila  = rnd.Next(0, columnas);
                        int colun = rnd.Next(0, filas);
                        if (bitmons.bitmons_simulacion[colun, fila].Count() < 2)
                        {
                            bitmons.bitmons_simulacion[colun, fila].Add(bitmon);
                            bitmons.bitmons_s.Add(bitmon);
                            break;
                        }
                        else
                        {
                            continue;
                        }
                    }
                }

                for (int i = 0; i < filas; i++)
                {
                    for (int j = 0; j < columnas; j++)
                    {
                        if (bitmons.bitmons_simulacion[i, j].Count() == 2)
                        {
                            Bitmon b1 = bitmons.bitmons_simulacion[i, j][0];
                            Bitmon b2 = bitmons.bitmons_simulacion[i, j][1];
                            if (b1.rivalidad.Contains(b2.especie))
                            {
                                bitmons.Peleas(b1, b2);
                            }
                            else
                            {
                                bitmons.Relaciones(b1, b2, filas, columnas);
                            }
                        }
                    }
                }
                controlador.Entorno(mapa, bitmons);
                bitmons.Bithalla();
                bitmons.movimientos(mapa);

                TableLayoutPanelCellPosition posicion;
                foreach (Button boton in MapaSimulacion.Controls)
                {
                    posicion = MapaSimulacion.GetPositionFromControl(boton);
                    int    i     = posicion.Row;
                    int    j     = posicion.Column;
                    string texto = "";
                    foreach (Bitmon bitmon in bitmons.bitmons_simulacion[i, j])
                    {
                        texto += $"{bitmon.especie}\n";
                    }
                    boton.Text      = texto;
                    boton.Tag       = mapa.Mterrenos[i, j].tipo;
                    boton.BackColor = mapa.MostrarMapa(mapa.Mterrenos[i, j].tipo);
                }
                contador += 1;
            }
            else
            {
                Resultados resultados = new Resultados(bitmons);
                this.Hide();
                resultados.ShowDialog();
                this.Close();
            }
        }
コード例 #2
0
        //retorna el multiplicador del bitmon
        public double Atacar(Bitmon bitmon1, Bitmon bitmon2)
        {
            double multiplicador = 1;

            //multiplicador varia por especie
            if (bitmon1.especie == "Taplan")
            {
                if (bitmon2.especie == "Wetar")
                {
                    multiplicador = 1.5;
                }
                if (bitmon2.especie == "Gofue")
                {
                    multiplicador = 1.15;
                }
            }
            if (bitmon1.especie == "Wetar")
            {
                if (bitmon2.especie == "Taplan")
                {
                    multiplicador = 1.1;
                }
                if (bitmon2.especie == "Gofue")
                {
                    multiplicador = 2;
                }
                if (bitmon2.especie == "Dorvalo")
                {
                    multiplicador = 0.2;
                }
            }
            if (bitmon1.especie == "Gofue")
            {
                if (bitmon2.especie == "Taplan")
                {
                    multiplicador = 2;
                }
                if (bitmon2.especie == "Wetar")
                {
                    multiplicador = 0.8;
                }
            }
            if (bitmon1.especie == "Dorvalo")
            {
                if (bitmon2.especie == "Wetar")
                {
                    multiplicador = 3;
                }
                if (bitmon2.especie == "Ent")
                {
                    multiplicador = 1;
                }
            }
            if (bitmon1.especie == "Doti")
            {
                if (bitmon2.especie == "Ent")
                {
                    multiplicador = 2.2;
                }
            }
            if (bitmon1.especie == "Ent")
            {
                if (bitmon1.especie == "Doti")
                {
                    multiplicador = 1;
                }
                if (bitmon2.especie == "Dorvalo")
                {
                    multiplicador = 1.3;
                }
            }
            else
            {
                multiplicador = 1;
            }
            return(multiplicador);
        }
コード例 #3
0
        //relacion de reproduccion entre bitmons
        //luego de reproducirse recuperan el 30% de tiempo de vida
        public void Relaciones(Bitmon bitmon1, Bitmon bitmon2, int filas, int columnas)
        {
            if (RevisarMapa())
            {
                //probabilidad de la especie del hijo
                int IP_hijo = rnd.Next(0, 101);
                //para calcular la probabilidad que sea de un padre o el otro
                int total   = bitmon1.Hijos + bitmon2.Hijos + 2;
                int IP_bit1 = ((bitmon1.Hijos + 1) * 100) / total;
                int IP_bit2 = ((bitmon2.Hijos + 1) * 100) / total;

                string hijo;

                //probabilidad de ser bitmon 1 mayor a la de bitmon 2
                if (IP_bit1 >= IP_bit2)
                {
                    if (IP_bit1 <= IP_hijo)
                    {
                        //es de la clase bitmon 2
                        hijo           = bitmon2.especie;
                        bitmon2.Hijos += 1;
                    }
                    else
                    {
                        //es de la clase bitmon 1
                        hijo           = bitmon1.especie;
                        bitmon1.Hijos += 1;
                    }
                }

                //probabilidad de ser bitmon 2 mayor a la de bitmon 1
                else
                {
                    if (IP_bit2 <= IP_hijo)
                    {
                        //es de la clase bitmon 1
                        hijo           = bitmon1.especie;
                        bitmon1.Hijos += 1;
                    }
                    else
                    {
                        //es de la clase bitmon 2
                        hijo           = bitmon2.especie;
                        bitmon2.Hijos += 1;
                    }
                }

                bitmon1.TiempoVida += (bitmon1.TiempoVida) * (30 / 100);
                bitmon2.TiempoVida += (bitmon2.TiempoVida) * (30 / 100);

                Bitmon bitmon_hijo = new Bitmon(hijo);
                bool   a           = true;
                while (a == true)
                {
                    int fila  = rnd.Next(0, filas - 1);
                    int colun = rnd.Next(0, columnas - 1);
                    if (bitmons_simulacion[fila, colun].Count <= 2)
                    {
                        bitmons_simulacion[colun, fila].Add(bitmon_hijo);
                        bitmons_s.Add(bitmon_hijo);
                        a = false;
                    }
                    else
                    {
                        continue;
                    }
                }
            }
        }
コード例 #4
0
        //configuracion inicial del mapa
        public void Spawn(Mapa mapa)
        {
            int filas    = mapa.Mterrenos.GetUpperBound(0) + 1;
            int columnas = mapa.Mterrenos.GetUpperBound(1) + 1;

            //creacion de arrays para los bitmons y terrenos del usuario
            bitmons_simulacion = new List <Bitmon> [filas, columnas];

            for (int i = 0; i < filas; i++)
            {
                for (int j = 0; j < columnas; j++)
                {
                    bitmons_simulacion[i, j] = new List <Bitmon> {
                    };
                }
            }

            while (true)
            {
                int f;
                int c;
                int t;

                Console.WriteLine("Generando mapa \n1.-Ingresar Bitmon \n2.-Continuar");
                if (Console.ReadLine() == "1")
                {
                    Console.WriteLine("Generando Bitmons, escoja fila y columna donde crear Bitmon:");
                    Console.Write("Fila: ");
                    string fs = Console.ReadLine();
                    int.TryParse(fs, out f);
                    while (f.ToString() != fs || f < 1 || f > filas)
                    {
                        Console.Write("Numero de fila fuera de rango \nFila: ");
                        fs = Console.ReadLine();
                        int.TryParse(fs, out f);
                    }
                    Console.Write("Columna: ");
                    string cs = Console.ReadLine();
                    int.TryParse(cs, out c);
                    while (c.ToString() != cs || c < 1 || c > columnas)
                    {
                        Console.Write("Numero de columna fuera de rango \nColumna: ");
                        cs = Console.ReadLine();
                        int.TryParse(cs, out c);
                    }
                    List <string> tipos = new List <string> {
                        "Taplan", "Wetar", "Gofue", "Dorvalo", "Doti", "Ent"
                    };
                    Console.WriteLine("Introduzca la clase de bitmon que desea:");
                    Console.WriteLine("1.-Taplan \n2.-Wetar \n3.-Gofue \n4.-Dorvalo \n5.-Doti \n6.-Ent");
                    string ts = Console.ReadLine();
                    int.TryParse(ts, out t);
                    while (t.ToString() != ts || t < 1 || t > 6)
                    {
                        Console.WriteLine("Introduzca clase de Bitmon valida:");
                        Console.WriteLine("1.-Taplan \n2.-Wetar \n3.-Gofue \n4.-Dorvalo \n5.-Doti \n6.-Ent");
                        ts = Console.ReadLine();
                        int.TryParse(ts, out t);
                    }

                    if ((mapa.Mterrenos[f - 1, c - 1].tipo != "Agua" && tipos[t - 1] == "Wetar") || bitmons_simulacion[f - 1, c - 1].Count() >= 2)
                    {
                        Console.WriteLine("No se puede introducir el bitmon");
                    }
                    else
                    {
                        Bitmon b = new Bitmon(tipos[t - 1]);
                        bitmons_simulacion[f - 1, c - 1].Add(b);
                        bitmons_s.Add(b);
                    }
                }
                else
                {
                    break;
                }
            }
        }
コード例 #5
0
        //relacion de pelea entre bitmons
        //relacion de pelea entre bitmons
        public void Peleas(Bitmon bitmon1, Bitmon bitmon2)
        {
            //bitmon ataque simultaneo
            //daño = puntos de ataque*multiplicador
            //cada bitmon descuenta de sus puntos de vida el daño
            bitmon2.PuntosDeVida -= bitmon2.PuntosDeVida * (bitmon1.PuntosDeAtaque * Convert.ToInt32(bitmon2.Atacar(bitmon1, bitmon2)));
            bitmon1.PuntosDeVida -= bitmon1.PuntosDeVida * (bitmon2.PuntosDeAtaque * Convert.ToInt32(bitmon1.Atacar(bitmon1, bitmon2)));


            //pueden ambos irse a bithalla despues
            if (bitmon1.PuntosDeVida == 0 && bitmon2.PuntosDeVida == 0)
            {
                bithalla.Add(bitmon1);
                bithalla.Add(bitmon2);

                //elimina el bitmon de la lista de la simulacion
                bitmons_s.Remove(bitmon1);
                bitmons_s.Remove(bitmon2);

                //elimina el bitmon del array de la simulacion
                for (int i = 0; i <= bitmons_simulacion.GetUpperBound(0); i++)
                {
                    for (int j = 0; j <= bitmons_simulacion.GetUpperBound(1); j++)
                    {
                        if (bitmons_simulacion[i, j].Contains(bitmon1) && bitmons_simulacion[i, j].Contains(bitmon2))
                        {
                            bitmons_simulacion[i, j].Remove(bitmon1);
                            bitmons_simulacion[i, j].Remove(bitmon2);
                        }
                        else
                        {
                            continue;
                        }
                    }
                }
            }

            //si uno muere el otro recupera los puntos de vida que perdio

            else if (bitmon1.PuntosDeVida <= 0)
            {
                bithalla.Add(bitmon1);

                //elimina el bitmon de la lista de la simulacion
                bitmons_s.Remove(bitmon1);

                //elimina el bitmon del array de la simulacion
                for (int i = 0; i <= bitmons_simulacion.GetUpperBound(0); i++)
                {
                    for (int j = 0; j <= bitmons_simulacion.GetUpperBound(1); j++)
                    {
                        if (bitmons_simulacion[i, j].Contains(bitmon1))
                        {
                            bitmons_simulacion[i, j].Remove(bitmon1);
                        }
                        else
                        {
                            continue;
                        }
                    }
                }
                bitmon2.PuntosDeVida += bitmon2.PuntosDeVida * (bitmon1.PuntosDeAtaque * Convert.ToInt32(bitmon2.Atacar(bitmon1, bitmon2)));
            }

            else if (bitmon2.PuntosDeVida <= 0)
            {
                bithalla.Add(bitmon2);
                bitmon1.PuntosDeVida += bitmon1.PuntosDeVida * (bitmon2.PuntosDeAtaque * Convert.ToInt32(bitmon1.Atacar(bitmon1, bitmon2)));

                //elimina el bitmon de la lista de la simulacion
                bitmons_s.Remove(bitmon2);

                //elimina el bitmon del array de la simulacion
                for (int i = 0; i <= bitmons_simulacion.GetUpperBound(0); i++)
                {
                    for (int j = 0; j <= bitmons_simulacion.GetUpperBound(1); j++)
                    {
                        if (bitmons_simulacion[i, j].Contains(bitmon2))
                        {
                            bitmons_simulacion[i, j].Remove(bitmon2);
                        }
                        else
                        {
                            continue;
                        }
                    }
                }
            }
        }