1. Con una cuenta podrás:

    • Publicar preguntas y pedir ayuda
    • Crear tutoriales
    • Acceder a contenido privado
    • Convertirte en un Héroe de la web
    Cerrar notificación
  2. Eres nuevo en la comunidad y necesitas ayuda?
    Sigue estos pasos y recomendaciones antes de publicar tu duda:
    Cerrar notificación

Tutorial Juego del GATO en C#

Tema en 'C / C++' comenzado por neftaliacosta, 6 de Mayo de 2016.

  1. neftaliacosta

    neftaliacosta Miembro

    Se incorporó:
    12 de Junio de 2015
    Mensajes:
    52
    Me gusta recibidos:
    7
    Puntos de trofeos:
    8
    Género:
    Hombre
    Hola a todos, pues estaba recordando viejos tiempos y me di a la tarea de realizar este pequeño juego en C#. Yo utilizo Visual Studio Comunity 2015 así que si deseas poner en práctica sus conocimientos pueden descargar esa versión gratuita de Visual.

    [​IMG]

    Requerimientos iniciales:

    Se requiere una aplicación en donde se pueda jugar el juego: “el gato “ Que el juego permita jugar el juego, bajo el siguiente criterio

    • El juego solicitará la posición (Ingrese una fila, Ingrese una columna) .
    • El sistema validara que no exista valor en esa posición, en caso de que ya exista, notificará al usuario y volverá a solicitar el valor.
    • Cada que ingresen un nuevo valor, mostrar los datos en pantalla
    • Gana el jugador que logre poner 3 figuras en una línea (vertical, horizontal o diagonal).
    • En el caso de que se ocupen todas las casillas y ningún jugador haya realizado una línea recta, se declara empate.
    Modificaciones

    • El juego solo solicitará una sola posición del mapa del 1 al 9
    • El juego validará el caractér ingresado, validará si es número
    • El juego validará si la posición ingresada está disponible, si no está disponible el jugador pierde el turno
    • El juego asigna aleatoreamente el signo de “X” o “O” para cada jugador.
    Nota: Utilizo php para que se vea el código en colores, pero es C sharp. (C#)
    1.- Creamos dos clases una llamada jugador y otra llamada tablero (con sus respectivas propiedades)
    PHP:
    namespace Gato
    {
        class jugador
        {

            public string nombre { get; set; }
            public string caracter{ get; set; }
            public int puntos { get; set; }

        }

        class tablero
        {
            public string[] position = new string[9];
        }
     

     
    }
    2.- En la función main hacemos una instancia de esa clase, mandamos a llamar a la función instrucciones (), y solicitamos los nombres a los usuarios, el juego genera un número random del 0 al 10 y en base ase número aleatorio asigna los caracteres a cada jugador. Para finalizar le enviamos 4 parametros a una función inicial del juego. Nombre del jugador 1, cracter del juego 1, nombre del jugador 2, caracter del jugador 2.

    La función instrucciones solo imprime en pantalla un texto con las instrucciones del juego.
    PHP:
      static void Main(string[] args)
            {
             
                jugador jugador1 = new jugador();
                jugador jugador2 = new jugador();
             

                instrucciones();
                Console.WriteLine("Escriba el nombre del jugador 1");
                jugador1.nombre = Console.ReadLine();
                Console.WriteLine("Escriba el nombre del jugador 2");
                jugador2.nombre = Console.ReadLine();
                Random r = new Random(DateTime.Now.Millisecond);
                int n = r.Next(0, 10);

                if (n > 5)
                {
                    jugador1.caracter = "X";
                    jugador2.caracter = "O";
                }
                else
                {
                    jugador1.caracter = "O";
                    jugador2.caracter = "X";
                }
                Console.WriteLine("---ASIGNACION---");
                Console.WriteLine(jugador1.nombre + ":" + jugador1.caracter);
                Console.WriteLine(jugador2.nombre + ":" + jugador2.caracter);
                Console.WriteLine("¡Preparando la partida!.........");
                System.Threading.Thread.Sleep(2000);
                ipartida(jugador1.nombre, jugador1.caracter, jugador2.nombre, jugador2.caracter);
         
            }
    3.- creamos la función instrucciones:

    PHP:
    static void instrucciones()
            {
                tablero mitab = new tablero();
                Console.Clear();
                Console.WriteLine("Bienvenido al juego del gato. A continuación dos jugadores deben de colocar un símbolo en el tablero uno a la vez, el jugador que logre completar una linea de tres simbolos completos ganará el juego, en caso que ninguno lo logre se considerará empate. El juego asigna aleatoriamente el simbolo para cada jugador.");
                formateador(mitab.position);
            }
    4.- Creamos la función ipartida(), esta funcion contiene toda la lógia de nuestro juego, recibe 4 aparámetros que le envía la función main(), el nombre del jugador 1, cracter del jugador 1, nombre del jugador 2, caracter del jugador 2.


    5.- Función formateador(). Esta función la utilizo para gratificar en pantalla las posiciones "tiradas" por cada jugador, agregándole un número a las posiciones libres.
    PHP:
     static void formateador(string[] tab)
            {
                var nuevoTab = new string[tab.Length];
                tab.CopyTo(nuevoTab, 0);
                for (int i=0; i<=8; i++)
                {
                    if (nuevoTab[i]== null)
                    {
                        int x = i + 1;
                        nuevoTab[i]= Convert.ToString(x);
                    }
                }
                Console.WriteLine("\n     " + nuevoTab[0] + " | " + nuevoTab[1] + "  | " + nuevoTab[2]);
                Console.WriteLine("\n   ___  ___  ___");
                Console.WriteLine("\n     " + nuevoTab[3] + " | " + nuevoTab[4] + "  | " + nuevoTab[5]);
                Console.WriteLine("\n   ___  ___  ___");
                Console.WriteLine("\n     " + nuevoTab[6] + " | " + nuevoTab[7] + "  | " + nuevoTab[8]);

             

            }
    6.- Función validador (). Esta función la utilizo para validar si existe algún ganador por cada tiro que se ejecuta en el juego.
    PHP:
    static string validarganador(string[] array)
            {
                string ganador="";
                if(array[0]=="X" && array[1]=="X" && array[2]=="X")
                {
                    ganador = "X";
                }
                else if (array[0] == "O" && array[1] == "O" && array[2] == "O")
                {
                    ganador = "O";
                }
                else if (array[3] == "X" && array[4] == "X" && array[5] == "X")
                {
                    ganador = "X";
                }
                else if (array[3] == "O" && array[4] == "O" && array[5] == "O")
                {
                    ganador = "O";
                }
                else if (array[6] == "X" && array[7] == "X" && array[8] == "X")
                {
                    ganador = "X";
                }
                else if (array[6] == "O" && array[7] == "O" && array[8] == "O")
                {
                    ganador = "O";
                }
                else if (array[0] == "X" && array[3] == "X" && array[6] == "X")
                {
                    ganador = "X";
                }
                else if (array[0] == "O" && array[3] == "O" && array[6] == "O")
                {
                    ganador = "O|";
                }
                else if (array[1] == "X" && array[4] == "X" && array[7] == "X")
                {
                    ganador = "X";
                }
                else if (array[1] == "O" && array[4] == "O" && array[7] == "O")
                {
                    ganador = "O";
                }
                else if (array[2] == "X" && array[5] == "X" && array[8] == "X")
                {
                    ganador = "X";
                }
                else if (array[2] == "O" && array[5] == "O" && array[8] == "O")
                {
                    ganador = "O";
                }
                else if (array[0] == "X" && array[4] == "X" && array[8] == "X")
                {
                    ganador = "X";
                }
                else if (array[0] == "O" && array[4] == "O" && array[8] == "O")
                {
                    ganador = "O";
                }
                else if (array[2] == "X" && array[4] == "X" && array[6] == "X")
                {
                    ganador = "X";
                }
                else if (array[2] == "O" && array[4] == "O" && array[6] == "O")
                {
                    ganador = "O";
                }
             
             
                return ganador;
            }



    Los invito a "jugar a que programamos" les dejo el repositorio original de este juego hospedado en Github, la idea es hacer de este juego más dinámico y en menos líneas de código. ¿Se animan? :)

    Descargar código juego gato c# desde github: https://neftaliacosta.com/doij
    Descarga el ejecutable (descarga directa desde mi host privado):https://neftaliacosta.com/az9t



    Les dejo el link del post de mi blog, probablemente lo actualice.
    https://neftaliacosta.com/codigo-juego-gato-c-sharp/


    Saludos ;)
     
  2. neftaliacosta

    neftaliacosta Miembro

    Se incorporó:
    12 de Junio de 2015
    Mensajes:
    52
    Me gusta recibidos:
    7
    Puntos de trofeos:
    8
    Género:
    Hombre
    Pongo la función ipartida acá abajo porque el foro no me dejaba postear porque estába muy grande el post :(

    PHP:
    [php]        static void ipartida(string n1, string c1, string n2, string c2)
            {
                Console.Clear();
                jugador j1 = new jugador();
                jugador j2 = new jugador();
                tablero mytablero = new tablero();
                j1.nombre = n1;
                j1.caracter = c1;
                j2.nombre = n2;
                j2.caracter = c2;

                string spotition;
                string var="";
                int var2 = 0;
                int ipotition;
                int njugador = 1;
                bool ganador = true;

             
                while (ganador)
                {
                    Console.Clear();
                    formateador(mytablero.position);

                    if (njugador == 1)
                    {
                     
                        Console.Write(j1.nombre +  " selecciona una posición");
                        spotition = Console.ReadLine();
                        try
                        {
                            ipotition = Convert.ToInt16(spotition);
                            ipotition = ipotition - 1;
                            if(ipotition < 0 || ipotition > 8)
                            {
                                Console.WriteLine("La posicion no existe, perdiste el turno :(");
                                System.Threading.Thread.Sleep(1000);

                            }
                            else if(String.IsNullOrEmpty(mytablero.position[ipotition])){
                                mytablero.position[ipotition] = j1.caracter;
                                var2 = var2 + 1;
                            }
                            else
                            {
                                Console.WriteLine("Posicion ocupada, perdiste el turno :(");
                                System.Threading.Thread.Sleep(1000);
                             
                            }
                        }
                        catch(FormatException)
                        {
                            Console.WriteLine("Posicion invalidad, turno perdido :(");
                        }              
                     
                    }
                    if (njugador == 2)
                    {

                        Console.Write(j2.nombre + " selecciona una posición");
                        spotition = Console.ReadLine();
                        try
                        {
                            ipotition = Convert.ToInt16(spotition);
                            ipotition = ipotition - 1;
                            if (ipotition < 0 || ipotition > 8)
                            {
                                Console.WriteLine("La posicion no existe, perdiste el turno :(");
                                System.Threading.Thread.Sleep(1000);

                            }
                            else if (String.IsNullOrEmpty(mytablero.position[ipotition]))
                            {
                                mytablero.position[ipotition] = j2.caracter;
                                var2 = var2 + 1;
                            }
                            else
                            {
                                Console.WriteLine("Posicion ocupada, perdiste el turno :(");
                                System.Threading.Thread.Sleep(1000);

                            }
                        }
                        catch (FormatException)
                        {
                            Console.WriteLine("Posicion invalidad, turno perdido :(");
                        }

                    }

                    var= validarganador(mytablero.position);
                    if (var == "X")
                    {
                        if (j1.caracter == "X")
                        {
                            Console.WriteLine("¡¡¡Felicidades "+ j1.nombre + " ganaste la partida!!!");
                            System.Threading.Thread.Sleep(6000);
                        }
                        else
                        {
                            Console.WriteLine("¡¡¡Felicidades " + j2.nombre + " ganaste la partida!!!");
                            System.Threading.Thread.Sleep(6000);
                        }
                        ganador = false;
                    }
                    else if (var == "O")
                    {
                        if (j1.caracter == "O")
                        {
                            Console.WriteLine("¡¡¡Felicidades " + j1.nombre + " ganaste la partida!!!");
                            System.Threading.Thread.Sleep(6000);
                        }
                        else
                        {
                            Console.WriteLine("¡¡¡Felicidades " + j2.nombre + " ganaste la partida!!!");
                            System.Threading.Thread.Sleep(6000);
                        }
                        ganador = false;
                    }

                    if (var2 == 9)
                    {
                        Console.WriteLine("Esta machaca fue empate!!!");
                        System.Threading.Thread.Sleep(6000);
                        ganador = false;
                    }

                    if (njugador == 1)
                    {
                        njugador = 2;
                    }
                    else if (njugador == 2)
                    {
                        njugador = 1;
                    }
                }
             


            }
    [/php]
     

Comparte esta página