示例#1
0
        static void carrera(object obj)
        {
            Caballo caba      = (Caballo)obj;
            Random  generador = new Random();

            while (flag)
            {
                if (flag)
                {
                    lock (l)
                    {
                        Console.SetCursorPosition(caba.PosX, caba.PosY);
                        Console.WriteLine(" ");
                        caba.PosX += generador.Next(2, 10);
                        Console.SetCursorPosition(caba.PosX, caba.PosY);

                        if (caba.PosX < 100)
                        {
                            Console.WriteLine(caba.NumCaballo);
                        }
                        else
                        {
                            campeon = caba.PosX;
                            Console.WriteLine("Campeon " + campeon);
                            flag = false;
                            Monitor.Pulse(l);
                        }
                    }
                }
            }
            Thread.Sleep(generador.Next(100, 400));
        }
示例#2
0
        static void Main(string[] args)
        {
            Thread[]  hilos    = new Thread[5];
            Caballo[] caballos = new Caballo[5];

            int  volverJugar;
            bool flag2;
            int  opcionJugador;

            do
            {
                flag          = false;
                opcionJugador = pedirCaballo();


                for (int i = 0; i < caballos.Length; i++)
                {
                    caballos[i] = new Caballo(i, i);
                    Console.SetCursorPosition(0, i);
                    Console.WriteLine(caballos[i].NumCaballo);
                    hilos[i] = new Thread(carrera);
                }

                for (int i = 0; i < caballos.Length; i++)
                {
                    hilos[i].Start(caballos[i]);
                    flag = true;
                }

                lock (l)
                {
                    while (flag)
                    {
                        Monitor.Wait(l);
                    }
                }
                Console.SetCursorPosition(0, 10);
                Console.WriteLine("CAMPEON " + campeon);

                if (opcionJugador == campeon)
                {
                    Console.Clear();
                    Console.WriteLine("Enhorabuena ganaste !!!");
                }
                else
                {
                    Console.WriteLine("Perdiste !!!");
                    do
                    {
                        flag2 = true;
                        try
                        {
                            Console.WriteLine("Volver a jugar ?? (1-Si/2-No)");
                            volverJugar = Convert.ToInt32(Console.ReadLine());

                            if (volverJugar == 1)
                            {
                                flag = true;
                                Console.Clear();
                            }
                        }
                        catch (Exception)
                        {
                            flag2 = false;
                            Console.WriteLine("Error selecciona una opcion");
                        }
                    } while (!flag2);
                }
            } while (flag);
        }