コード例 #1
0
        public static void Main(string[] args)
        {
            //Creando el tablero
            Program.juego.Tablero = new Tablero();
            Char[,] tabla         = new Char[8, 9];
            for (int i = 1; i <= 6; i++)
            {
                for (int j = 1; j <= 7; j++)
                {
                    tabla[i, j] = '-';
                }
            }
            Program.juego.Tablero.EstructuraTablero = tabla;               //Creando la estructura del tablero
            Program.juego.Tablero.Jugadas           = new List <Jugada>(); // Creando una nueva lista de jugadas para el juego
            //Creando los dos tipos de monedas del juego
            Moneda tipomoneda1 = new Moneda('O');
            Moneda tipomoneda2 = new Moneda('C');
            //Creando la lista de monedas de los jugadores del juego
            List <Moneda> monedasJugador1 = new List <Moneda>();
            List <Moneda> monedasJugador2 = new List <Moneda>();

            for (int i = 0; i < 21; i++)
            {
                monedasJugador1.Add(tipomoneda1);
                monedasJugador2.Add(tipomoneda2);
            }
            //Anadiendo las monedas a sus jugadores especificos
            jugador1.Monedas = monedasJugador1;
            jugador2.Monedas = monedasJugador2;

            bool turno    = true;  // Turno de los dos jugadores
            bool gameOver = false; // Especifica si el juego ha terminado

            int contadorJugador1 = 0;
            int contadorJugador2 = 0;

            while (!gameOver)
            {
                if (turno)
                {
                    Console.WriteLine("Turno jugador 1");
                    char key = Console.ReadKey().KeyChar;
                    Console.Write("\b \b"); //limpiar el caracter justamente entrado
                    while (!char.IsDigit(key) || (char)Char.GetNumericValue(key) < 1 || (char)Char.GetNumericValue(key) > 7)
                    {
                        Console.WriteLine("\nDebes entrar un numero entre 1 y 7");
                        key = Console.ReadKey().KeyChar;
                        Console.Write("\b \b"); //limpiar el caracter justamente entrado
                    }
                    int integerKeyPressed = (char)Char.GetNumericValue(key);

                    Jugada nuevaJugada = new Jugada();//Creando una nueva jugada
                    nuevaJugada.JUGADOR = jugador1;
                    nuevaJugada.Moneda  = tipomoneda1;
                    jugador1.Monedas.RemoveAt(jugador1.Monedas.Count - 1);
                    turno = false;
                    crearTabla(nuevaJugada, integerKeyPressed);
                    contadorJugador1++;
                    bool resultadoJugador1 = false;
                    if (contadorJugador1 >= 4)
                    {
                        resultadoJugador1 = chequearJuego(nuevaJugada);
                        Console.WriteLine(resultadoJugador1);
                    }
                    if (resultadoJugador1)
                    {
                        Console.WriteLine("jugador 1 gana");
                        gameOver = true;
                    }
                }
                else
                {
                    Console.WriteLine("Turno jugador 2");
                    char key = Console.ReadKey().KeyChar;
                    Console.Write("\b \b"); //limpiar el caracter justamente entrado
                    while ((!char.IsDigit(key) || (char)Char.GetNumericValue(key) < 1 || (char)Char.GetNumericValue(key) > 7))
                    {
                        Console.WriteLine("\nDebes entrar un numero entre 1 y 7");
                        key = Console.ReadKey().KeyChar;
                        Console.Write("\b \b"); //limpiar el caracter justamente entrado
                    }
                    int integerKeyPressed = (char)Char.GetNumericValue(key);

                    Jugada nuevaJugada = new Jugada();//Creando una nueva jugada
                    nuevaJugada.JUGADOR = jugador2;
                    nuevaJugada.Moneda  = tipomoneda2;
                    jugador2.Monedas.RemoveAt(jugador2.Monedas.Count - 1);
                    turno = true;
                    crearTabla(nuevaJugada, integerKeyPressed);
                    contadorJugador2++;
                    bool resultadoJugador2 = false;
                    if (contadorJugador2 >= 4)
                    {
                        resultadoJugador2 = chequearJuego(nuevaJugada);
                        Console.WriteLine(resultadoJugador2);
                    }
                    if (resultadoJugador2)
                    {
                        Console.WriteLine("jugador 2 gana");
                        gameOver = true;
                    }
                }
            }
            Console.ReadKey();
        }
コード例 #2
0
        private static bool chequearJuego(Jugada jugada)
        {
            Char[,] tabla = Program.juego.Tablero.EstructuraTablero;
            int fila = 6, columna = 7;

            for (int i = fila; i >= 1; i--)
            {
                for (int j = 1; j <= columna; j++)
                {
                    if (tabla[i, j] != '-')
                    {
                        if (tabla[i, j] == jugada.Moneda.Letra)
                        {
                            for (int k = 1; k < 8; k++)
                            {
                                switch (k)
                                {
                                //horizontal derecha
                                case 1:

                                    if (columna - j >= 3)
                                    {
                                        if (tabla[i, j] == tabla[i, j + 1] && tabla[i, j] == tabla[i, j + 2] && tabla[i, j] == tabla[i, j + 3])
                                        {
                                            return(true);
                                        }
                                    }

                                    break;

                                //horizontal izquierda
                                case 2:
                                    if (j - 1 >= 3)
                                    {
                                        if (tabla[i, j] == tabla[i, j - 1] && tabla[i, j] == tabla[i, j - 2] && tabla[i, j] == tabla[i, j - 3])
                                        {
                                            return(true);
                                        }
                                    }
                                    break;

                                // Vertical Abajo
                                case 3:
                                    if (fila - i >= 3)
                                    {
                                        if (tabla[i, j] == tabla[i + 1, j] && tabla[i, j] == tabla[i + 2, j] && tabla[i, j] == tabla[i + 3, j])
                                        {
                                            return(true);
                                        }
                                    }
                                    break;

                                //Vertical Arriba
                                case 4:
                                    if (i - 1 >= 3)
                                    {
                                        if (tabla[i, j] == tabla[i - 1, j] && tabla[i, j] == tabla[i - 2, j] && tabla[i, j] == tabla[i - 3, j])
                                        {
                                            return(true);
                                        }
                                    }
                                    break;

                                //diagonal derecha arriba
                                case 5:
                                    if (i - 1 >= 3 && columna - j >= 3)
                                    {
                                        if (tabla[i, j] == tabla[i - 1, j + 1] && tabla[i, j] == tabla[i - 2, j + 2] && tabla[i, j] == tabla[i - 3, j + 3])
                                        {
                                            return(true);
                                        }
                                    }
                                    break;

                                //diagonal izquierda arriba
                                case 6:
                                    if (i - 1 >= 3 && j - 1 >= 3)
                                    {
                                        if (tabla[i, j] == tabla[i - 1, j - 1] && tabla[i, j] == tabla[i - 2, j - 2] && tabla[i, j] == tabla[i - 3, j - 3])
                                        {
                                            return(true);
                                        }
                                    }
                                    break;

                                //diagonal derecha abajo
                                case 7:

                                    if (fila - i >= 3 && columna - j >= 3)
                                    {
                                        if (tabla[i, j] == tabla[i + 1, j + 1] && tabla[i, j] == tabla[i + 2, j + 2] && tabla[i, j] == tabla[i + 3, j + 3])
                                        {
                                            return(true);
                                        }
                                    }
                                    break;

                                //diagonal izquierda abajo
                                case 8:
                                    if (fila - i >= 3 && j - 1 >= 3)
                                    {
                                        if (tabla[i, j] == tabla[i + 1, j - 1] && tabla[i, j] == tabla[i + 2, j - 2] && tabla[i, j] == tabla[i + 3, j - 3])
                                        {
                                            return(true);
                                        }
                                    }
                                    break;

                                default:
                                    return(false);
                                }
                            }
                        }
                    }
                }
            }
            return(false);
        }