Пример #1
0
 /// <summary>
 /// Valida si dos territoios tienen el mismo amo o no
 /// </summary>
 /// <param name="t1">Territorio 1</param>
 /// <param name="t2">Territorio 2</param>
 /// <returns>Verdadero si comparten amo</returns>
 public bool validarConquistador(Territorio t1, Territorio t2)
 {
     if (t1.amo == t2.amo)
     {
         return(true);
     }
     return(false);
 }
Пример #2
0
 public Movimiento()
 {
     descrip     = "";
     numMov      = 1000;
     jugador     = new Jugador();
     territorio1 = new Territorio();
     territorio2 = new Territorio();
 }
Пример #3
0
 /// <summary>
 /// Asigna un nuevo amo a un terrotorio cuando es conquistado
 /// </summary>
 /// <param name="p">Jugador que conquista</param>
 /// <param name="l">Territorio conquistado</param>
 public void asignarAmo(Jugador p, Territorio l)
 {
     foreach (Territorio item in territorios)
     {
         if (item == l)
         {
             if (item.conquistado)
             {
                 item.amo.conquistados.Remove(l);
             }
             item.conquistado = true;
             item.amo         = p;
             p.conquistados.Add(item);
         }
     }
 }
Пример #4
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();
                    }
                }
            }
        }