예제 #1
0
파일: Torneo.cs 프로젝트: karv/ApreTa
        /// <summary>
        /// Ejecuta un encuentro entre dos individuos.
        /// </summary>
        public void Encuentro(EstructuraIndividuo I, EstructuraIndividuo J)
        {
            EstructuraIndividuo[] Ind = new EstructuraIndividuo[2];
            Historial             H   = new Historial();

            if (r.Next(2) == 0)
            {
                Ind [0] = I;
                Ind [1] = J;
            }
            else
            {
                Ind [0] = J;
                Ind [1] = I;
            }
            H.Ind [0] = Ind [0].Indiv;
            H.Ind [1] = Ind [1].Indiv;

            if (Ind [0].Siguiendo || Ind [1].Siguiendo)
            {
                Console.Write("");
            }

            // Ejecutar las rondas
            while (H.Actual < IteracionesPorEncuentro)
            {
                // H.Actual++;

                int a;
                int b;

                a = Ind [0].Indiv.Ejecutar(H);
                b = Ind [1].Indiv.Ejecutar(H.Invertir());

                // Los jugadores escogen a y b respectivamente.
                //Agrega en el historial las últimas desiciones.
                H.AgregaTurno(a, b);

                // Modificar la puntuación
                Ind [0].Punt += Torneo.Puntuación(a, b) / IteracionesPorEncuentro;
                Ind [1].Punt += Torneo.Puntuación(b, a) / IteracionesPorEncuentro;
            }
            if (Ind [0].Siguiendo || Ind [1].Siguiendo)
            {
                Console.WriteLine(string.Format("{0}:{1}\n{2}:{3}", Ind [0].Indiv, H.ObtenerPuntuación(0), Ind [1].Indiv, H.ObtenerPuntuación(1)));
                if (Console.ReadLine() != "")
                {
                    // Mostrar el historial
                    for (int i = 0; i < 2; i++)
                    {
                        for (int j = 0; j < H.Count; j++)
                        {
                            Console.Write(H [i, j]);
                        }
                        Console.WriteLine(" - " + H.Ind [i]);
                    }
                }
            }
        }
예제 #2
0
파일: Torneo.cs 프로젝트: karv/ApreTa
        public float ObtenerPuntuación(int i)
        {
            if (i < 0 || i > 1)
            {
                throw new IndexOutOfRangeException();
            }
            float ret = 0;

            for (int j = 0; j < Actual; j++)
            {
                ret += Torneo.Puntuación(this [i, j], this [1 - i, j]);
            }
            return(ret);
        }
예제 #3
0
파일: Torneo.cs 프로젝트: karv/ApreTa
        public static int Encuentro(Individuo I, Individuo J, int Long)
        {
            Torneo Trn = new Torneo();

            EstructuraIndividuo[] EI = new EstructuraIndividuo[2];
            EI [0] = new EstructuraIndividuo(I);
            EI [1] = new EstructuraIndividuo(J);
            Trn.Individuos.Add(new EstructuraIndividuo(I));
            Trn.Individuos.Add(new EstructuraIndividuo(J));
            Trn.IteracionesPorEncuentro = Long;
            Trn.NumRondas = 1;
            Trn.MaxIndiv  = 2;
            Trn.MinIndiv  = 2;
            Trn.RunOnce(true);

            return(Trn.Individuos [0].Punt < Trn.Individuos [1].Punt ? 0 : 1);
        }
예제 #4
0
        public static void Main(string[] args)
        {
            // Inicializar la pantalla
            Console.SetWindowSize(ColSize * NumCol, 24);
            Console.CursorVisible = false;
            //Console.BufferWidth = ColSize * NumCol;
            //Console.SetBufferSize (ColSize * NumCol, 10);
            //JRápido Jue = new JRápido();
            //Evol Ev = new Evol ();


            //Ev.Run ();

            Torneo T = new Torneo();

            T.IteracionesPorEncuentro = 100;
            T.NumRondas = 1000;
            T.InicializaTorneo();
            T.Run();
        }
예제 #5
0
파일: Torneo.cs 프로젝트: karv/ApreTa
        /// <summary>
        /// Entra al ciclo principal.
        /// </summary>
        public void Run()
        {
            while (true)
            {
                RunOnce();
                MatarMenosAdaptados();
                MuestraStats();
                ReplicarAdaptados();
                ResetScore();

                while (Console.KeyAvailable)
                {
                    ConsoleKeyInfo kp = Console.ReadKey(true);
                    if (kp.KeyChar == ' ')                      // Humano vs individuo al azar
                    {
                        Torneo.Encuentro(new IndividuoHumano(), Individuos [r.Next(Individuos.Count)].Indiv, IteracionesPorEncuentro);
                    }
                    if (kp.KeyChar == '<')                      // Agrega un individuo en observacion
                    {
                        Individuo           I = new Individuo(Console.ReadLine());
                        EstructuraIndividuo J = new EstructuraIndividuo(I);
                        J.Siguiendo = true;
                        Individuos.Add(J);
                    }
                    if (kp.KeyChar == 'z')                      // Peleas contra 1h
                    {
                        Individuo I = new Individuo("1h0i0=?");

                        Torneo.Encuentro(new IndividuoHumano(), I, IteracionesPorEncuentro);
                    }
                    if (kp.KeyChar == 'f')                       // Sigue a in individuo al azar
                    {
                        Individuos [r.Next(Individuos.Count)].Siguiendo = true;
                    }
                }
            }
        }