Beispiel #1
0
        /// <summary>
        /// Metodo para eliminar los movimientos repetidos en una lista de movimientos
        /// </summary>
        /// <param name="aux">Lista de movimientos</param>
        public void eliminarRepetidos(List <Movimiento> aux)
        {
            Movimiento temp = new Movimiento();

            int sum = 0;

            //Ciclo para recorrer la lista
            for (int i = 0; i < aux.ToArray().Length; i++)
            {
                if (aux.ToArray()[i] != null)
                {
                    temp = aux.ToArray()[i];

                    //Ciclo para llevar la cuenta de cuantas veces aparece el movimiento en la lista
                    for (int j = 0; j < aux.ToArray().Length; j++)
                    {
                        if (aux.ToArray()[j] == temp)
                        {
                            sum++;
                        }
                    }

                    //Valida que solo este una vez si no, elimina
                    if (sum > 1)
                    {
                        //Si es mayor el ciclo elimina todos los iguales
                        for (int j = 0; j < aux.ToArray().Length; j++)
                        {
                            if (aux.ToArray()[j] == temp)
                            {
                                aux.Remove(temp);
                            }
                        }

                        //Luego de eliminarlos todo inserta solo uno
                        //aux.Add(temp);
                    }

                    sum = 0;
                }
            }
        }
Beispiel #2
0
 /// <summary>
 /// Metodo para los movimientos que son de asignar tropas porque estos
 /// se ejecutan de forma directa
 /// </summary>
 /// <param name="player">Nombre del jugador que lo realiza</param>
 /// <param name="mov">Movimiento</param>
 public void nuevoAsignar(string player, Movimiento mov)
 {
     mov.territorio1.tropas   += mov.tropas;
     mov.territorio1.auxTropas = mov.territorio1.tropas;
     moves.Add(mov);
 }
Beispiel #3
0
        /// <summary>
        /// Boton para terminar el turno y que se ejecuten todos los
        /// movimientos guardados
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button6_Click(object sender, EventArgs e)
        {
            if (ClaseGeneral.nuevoJuego.player1.tropas > 0)
            {
                MessageBox.Show("Aun tiene tropas disponibles, debe utilizarlas");
            }
            else
            {
                /*ACA HAY QUE PONER EL METODO O LO QUE SEA DONDE EL IA
                 * HACE TODO SUS MOVIMIENTOS*/
                /*Con la logica que implementada en el boton5 se guardan los movs
                 * del IA para que se ejecuten de manera simultanea con los
                 * guardados por el jugador en el metodo de abajo */
                List <Territorio> AuxiliarIA = new List <Territorio>();
                AuxiliarIA = ClaseGeneral.nuevoJuego.player2.conquistados;

                Random obj  = new Random();
                int    opc1 = 10;

                opc1 = obj.Next(0, AuxiliarIA.Count - 1);

                Territorio        evaluar;
                List <Territorio> evaluar2 = new List <Territorio>();



                if (AuxiliarIA.Exists(x => (x.tropas < 3) && x.vecinos.Exists(y => y.amo.Equals(ClaseGeneral.nuevoJuego.player1))))
                {
                    evaluar = AuxiliarIA.Find(x => (x.tropas < 3) && x.vecinos.Exists(y => y.amo.Equals(ClaseGeneral.nuevoJuego.player1)));

                    int minno = evaluar.vecinos.Min(x => x.tropas);

                    Territorio vecino = evaluar.vecinos.Find(x => x.tropas == minno);
                    if (vecino.amo == ClaseGeneral.nuevoJuego.player1)
                    {
                        int ataque_defensa = 3;
                        ataque_defensa = obj.Next(0, 2);

                        if (ataque_defensa == 0)
                        {
                            Movimiento nuevo = new Movimiento();
                            int        trop  = 0;

                            nuevo.jugador     = ClaseGeneral.nuevoJuego.player2;
                            nuevo.territorio1 = ClaseGeneral.nuevoJuego.encontrarTerritorio(evaluar.nombre);

                            if (vecino.tropas < evaluar.tropas)
                            {
                                trop = vecino.tropas + 1;
                            }
                            else
                            {
                                trop = evaluar.tropas;
                            }

                            nuevo.tropas = 5;



                            //Actuliza las tropas que le quedan por asignar al IA

                            ClaseGeneral.nuevoJuego.player2.tropas = 0;

                            nuevo.descrip = "asignar";
                            ClaseGeneral.nuevoJuego.nuevoAsignar(ClaseGeneral.nuevoJuego.player2.nick, nuevo);

                            if (trop != 0)
                            {
                                nuevo.tropas = trop;
                                string t1 = evaluar.nombre; string t2 = vecino.nombre;

                                if (ClaseGeneral.nuevoJuego.validarConquistador(ClaseGeneral.nuevoJuego.encontrarTerritorio(t1),
                                                                                ClaseGeneral.nuevoJuego.encontrarTerritorio(t2)))
                                {
                                    nuevo.descrip = "mover";
                                }
                                else
                                {
                                    nuevo.descrip = "atacar";
                                }

                                nuevo.territorio2 = ClaseGeneral.nuevoJuego.encontrarTerritorio(vecino.nombre);
                                ClaseGeneral.nuevoJuego.nuevoMovimiento(ClaseGeneral.nuevoJuego.player2.nick, nuevo);
                            }
                        }
                    }
                    else
                    {
                        Movimiento nuevo = new Movimiento();
                        int        trop  = 0;

                        nuevo.jugador     = ClaseGeneral.nuevoJuego.player2;
                        nuevo.territorio1 = ClaseGeneral.nuevoJuego.encontrarTerritorio(evaluar.nombre);
                        if (vecino.tropas < evaluar.tropas)
                        {
                            trop = vecino.tropas + 1;
                        }
                        else
                        {
                            trop = evaluar.tropas;
                        }

                        nuevo.tropas = 5;



                        //Actuliza las tropas que le quedan por asignar al IA

                        ClaseGeneral.nuevoJuego.player2.tropas = 0;

                        nuevo.descrip = "asignar";
                        ClaseGeneral.nuevoJuego.nuevoAsignar(ClaseGeneral.nuevoJuego.player2.nick, nuevo);

                        if (trop != 0)
                        {
                            nuevo.tropas = trop;
                            string t1 = evaluar.nombre; string t2 = vecino.nombre;

                            if (ClaseGeneral.nuevoJuego.validarConquistador(ClaseGeneral.nuevoJuego.encontrarTerritorio(t1),
                                                                            ClaseGeneral.nuevoJuego.encontrarTerritorio(t2)))
                            {
                                nuevo.descrip = "mover";
                            }
                            else
                            {
                                nuevo.descrip = "atacar";
                            }

                            nuevo.territorio2 = ClaseGeneral.nuevoJuego.encontrarTerritorio(vecino.nombre);
                            ClaseGeneral.nuevoJuego.nuevoMovimiento(ClaseGeneral.nuevoJuego.player2.nick, nuevo);
                        }
                    }
                }
                else
                {
                    int minnoeva = AuxiliarIA.Min(x => x.tropas);
                    evaluar = AuxiliarIA.Find(x => (x.tropas == minnoeva));
                    int maxno = AuxiliarIA.Max(x => x.tropas);

                    evaluar2 = AuxiliarIA.FindAll(x => x.tropas <= maxno || (x.tropas >= maxno - 2) && (x.vecinos.Exists(y => y.tropas < 2 && (y.vecinos.Exists(c => c.tropas < 2)))));

                    if (evaluar2.Count == 0)
                    {
                        evaluar2 = AuxiliarIA.FindAll(x => x.tropas == maxno || (x.tropas >= maxno - 2));
                    }

                    Movimiento nuevo = new Movimiento();
                    int        trop  = 0;

                    nuevo.jugador     = ClaseGeneral.nuevoJuego.player2;
                    nuevo.territorio1 = ClaseGeneral.nuevoJuego.encontrarTerritorio(evaluar.nombre);


                    nuevo.tropas = 5;
                    ClaseGeneral.nuevoJuego.player2.tropas = 0;
                    nuevo.descrip = "asignar";
                    ClaseGeneral.nuevoJuego.nuevoAsignar(ClaseGeneral.nuevoJuego.player2.nick, nuevo);

                    //Actuliza las tropas que le quedan por asignar al IA



                    foreach (Territorio item in evaluar2)
                    {
                        int minno = item.vecinos.Min(x => x.tropas);

                        Territorio vecino = item.vecinos.Find(x => x.tropas == minno);
                        if (vecino.amo == ClaseGeneral.nuevoJuego.player1)
                        {
                            int ataque_defensa = 3;
                            ataque_defensa = obj.Next(0, 2);

                            if (ataque_defensa == 0)
                            {
                                nuevo.jugador     = ClaseGeneral.nuevoJuego.player2;
                                nuevo.territorio1 = ClaseGeneral.nuevoJuego.encontrarTerritorio(item.nombre);

                                if (vecino.tropas < item.tropas)
                                {
                                    trop = vecino.tropas + 1;
                                }
                                else
                                {
                                    trop = item.tropas;
                                }

                                nuevo.tropas = 5;



                                //Actuliza las tropas que le quedan por asignar al IA

                                ClaseGeneral.nuevoJuego.player2.tropas = 0;


                                if (trop != 0)
                                {
                                    nuevo.tropas = trop;
                                    string t1 = item.nombre; string t2 = vecino.nombre;

                                    if (ClaseGeneral.nuevoJuego.validarConquistador(ClaseGeneral.nuevoJuego.encontrarTerritorio(t1),
                                                                                    ClaseGeneral.nuevoJuego.encontrarTerritorio(t2)))
                                    {
                                        nuevo.descrip = "mover";
                                    }
                                    else
                                    {
                                        nuevo.descrip = "atacar";
                                    }

                                    nuevo.territorio2 = ClaseGeneral.nuevoJuego.encontrarTerritorio(vecino.nombre);
                                    ClaseGeneral.nuevoJuego.nuevoMovimiento(ClaseGeneral.nuevoJuego.player2.nick, nuevo);
                                }
                            }
                        }
                        else
                        {
                            nuevo.jugador     = ClaseGeneral.nuevoJuego.player2;
                            nuevo.territorio1 = ClaseGeneral.nuevoJuego.encontrarTerritorio(item.nombre);
                            if (vecino.tropas < item.tropas)
                            {
                                trop = vecino.tropas + 1;
                            }
                            else
                            {
                                trop = item.tropas;
                            }

                            if (trop != 0)
                            {
                                nuevo.tropas = trop;
                                string t1 = item.nombre; string t2 = vecino.nombre;

                                if (ClaseGeneral.nuevoJuego.validarConquistador(ClaseGeneral.nuevoJuego.encontrarTerritorio(t1),
                                                                                ClaseGeneral.nuevoJuego.encontrarTerritorio(t2)))
                                {
                                    nuevo.descrip = "mover";
                                }
                                else
                                {
                                    nuevo.descrip = "atacar";
                                }

                                nuevo.territorio2 = ClaseGeneral.nuevoJuego.encontrarTerritorio(vecino.nombre);
                                ClaseGeneral.nuevoJuego.nuevoMovimiento(ClaseGeneral.nuevoJuego.player2.nick, nuevo);
                            }
                        }
                    }
                }

                radioButton1.Enabled = true;
                ClaseGeneral.nuevoJuego.EjecutarMovimientos();
                cargarDatos();



                if (ClaseGeneral.nuevoJuego.gameover())
                {
                    DialogResult boton = MessageBox.Show("GAME OVER", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    if (boton == DialogResult.OK)
                    {
                        Form1 vent1 = new Form1();
                        vent1.Show();
                        this.Hide();
                    }
                }


                if (ClaseGeneral.nuevoJuego.ganar())
                {
                    DialogResult boton = MessageBox.Show("USTED HA GANADO!!!", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    if (boton == DialogResult.OK)
                    {
                        Form1 vent1 = new Form1();
                        vent1.Show();
                        this.Hide();
                    }
                }
            }
        }