Exemplo n.º 1
0
        public static void Main(string[] args)
        {
            ColocacionDeBarcos colocBarcos = new ColocacionDeBarcos();
            Turnos             turnos      = new Turnos();
            Cliente            cliente     = new Cliente();
            Servidor           servidor    = new Servidor();

            System.Media.SoundPlayer player = new System.Media.SoundPlayer();

            Console.Title = "Hundir la flota 0.4";
            bool   validar = false, volverAtras = true, sonido = false;
            int    opcion1 = 0, opcion2 = 0, opcion3 = 0, barcosIniciales = 6;
            string nombreJ1 = null, nombreJ2 = null;

            do // Validación del menu principal
            {
                if (sonido == true)
                {
                    player.SoundLocation = ".\\sonido\\FondoDeUnaCueva.wav";
                    player.Play();
                }
                colocBarcos.menu();
                Console.SetCursorPosition(24, 11); Console.Write("#############################");
                Console.SetCursorPosition(24, 12); Console.Write("#			    #");
                Console.SetCursorPosition(24, 13); Console.Write("# Selecciona una categoría: #");
                Console.SetCursorPosition(24, 14); Console.Write("#			    #");
                Console.SetCursorPosition(24, 15); Console.Write("# (1)  Comenzar            #");
                Console.SetCursorPosition(24, 16); Console.Write("# (2)  Opciones            #");
                Console.SetCursorPosition(24, 17); Console.Write("# (3)  Salir               #");
                Console.SetCursorPosition(24, 18); Console.Write("#		Versión 0.4 #");
                Console.SetCursorPosition(24, 19); Console.Write("#			    #");
                Console.SetCursorPosition(24, 20); Console.Write("#############################\n\n");
                for (int i = 0; i <= 79; i++)
                {
                    Console.Write("_");
                }
                for (int i = 0; i <= 79; i++)
                {
                    Console.Write("=");
                    Thread.Sleep(8);
                }
                Console.Write(">>> ");
                validar = int.TryParse(Console.ReadLine(), out opcion1);

                switch (opcion1)
                {
                case 1:
                    do
                    {
                        colocBarcos.menu();
                        Console.SetCursorPosition(24, 11); Console.Write("Elije el modo de juego\n");
                        Console.SetCursorPosition(24, 12); Console.Write("----------------------\n");
                        Console.SetCursorPosition(24, 13); Console.Write("(1)  Contra la máquina");
                        Console.SetCursorPosition(24, 14); Console.Write("(2)  Multijugador");
                        Console.SetCursorPosition(24, 15); Console.Write("(3)  Online");
                        Console.SetCursorPosition(24, 16); Console.Write("(4)  Volver al menú");
                        Console.SetCursorPosition(24, 18); Console.Write(">>> ");
                        validar = int.TryParse(Console.ReadLine(), out opcion2);
                        switch (opcion2)
                        {
                        case 1:
                            do
                            {
                                if (sonido == true)
                                {
                                    player.SoundLocation = ".\\sonido\\MenuOpciones.wav";
                                    player.Play();
                                }
                                colocBarcos.menu();
                                Console.SetCursorPosition(24, 11); Console.Write("Introduce tu nombre: ");
                                nombreJ1 = Console.ReadLine();
                                while (nombreJ1.Length < 1 || nombreJ1.Length > 10)
                                {
                                    while (nombreJ1.Length > 10)
                                    {
                                        colocBarcos.menu();
                                        Console.SetCursorPosition(24, 11); Console.Write("                         ");
                                        Console.SetCursorPosition(24, 11); Console.Write("Pon un nombre más corto: ");
                                        nombreJ1 = Console.ReadLine();
                                    }
                                    while (nombreJ1.Length < 1)
                                    {
                                        colocBarcos.menu();
                                        Console.SetCursorPosition(24, 11); Console.Write("                         ");
                                        Console.SetCursorPosition(24, 11); Console.Write("Debes colocar un nombre: ");
                                        nombreJ1 = Console.ReadLine();
                                    }
                                }
                                turnos.setNombreJ1(nombreJ1);
                                colocBarcos.setNombreJ1(nombreJ1);
                                Console.SetCursorPosition(24, 13); Console.Write("Coloca tus embarcaciones\n");
                                Console.SetCursorPosition(24, 14); Console.Write("------------------------\n");
                                Console.SetCursorPosition(24, 15); Console.Write("(1)  Automáticamente\n");
                                Console.SetCursorPosition(24, 16); Console.Write("(2)  Manualmente\n");
                                Console.SetCursorPosition(24, 18); Console.Write(">>> ");
                                validar = int.TryParse(Console.ReadLine(), out opcion3);
                            }while(opcion3 != 1 && opcion3 != 2);
                            switch (opcion3)
                            {
                            case 1:
                                colocBarcos.colocacionBarcosAutomatJ1();
                                break;

                            case 2:
                                colocBarcos.colocacionBarcosManualJ1();
                                break;
                            }
                            colocBarcos.colocacionBarcosAutomatJ2();

                            turnos.setTablero1(colocBarcos.getTableroJ1());
                            turnos.setTablero2(colocBarcos.getTableroJ2());
                            turnos.setPosJ2(colocBarcos.getPosJ2());
                            turnos.setBarcosJ1(colocBarcos.getBarcosJ1());
                            turnos.setBarcosJ2(colocBarcos.getBarcosJ2());

                            cliente.setTablero1(colocBarcos.getTableroJ1());                                    // Pasamos el tablero C al S para que en esa
                            servidor.setTablero1(colocBarcos.getTableroJ1());                                   // clase se lo pase a la otra por Sock. Luego

                            //turnos.setTablero2(cliente.getTableroJ2());       // Lo ponemos en clase turnos como tableroJ2
                            //turnos.setTablero2(servidor.getTableroJ2());

                            do                                                                                                  // Cambia el turno de J1 a J2 y viceversa
                            {
                                do                                                                                              // Vuelve a tirar J1 si hunde un barco
                                {
                                    turnos.introducirFila();
                                    turnos.introducirColumna();
                                    turnos.realizarComprobacionesJ1();
                                }while(colocBarcos.getTableroJ2()[turnos.getFila() - 1, turnos.getColumna() - 1] == (char)'X' && turnos.getRepetirTirada() == true);

                                do                                                                                              // Vuelve a tirar J2 si hunde un barco
                                {
                                    turnos.ataqueAlAzarDeJ2();
                                    turnos.realizarComprobacionesJ2();
                                }while(colocBarcos.getTableroJ1()[turnos.getFila() - 1, turnos.getColumna() - 1] == (char)'X' && turnos.getRepetirTirada() == true);

                                if (turnos.getBarcosJ1() == 0)
                                {
                                    Console.Write("Has perdido la partida. La próxima vez será.");
                                    Console.ReadKey();
                                    break;
                                }
                            }while(turnos.getBarcosJ2() != 0 || turnos.getBarcosJ1() != 0);                                     // Si todos los barcos enemigos están hundidos, se acabó la partida
                            if (turnos.getBarcosJ1() == 0)
                            {
                                Console.Write("Has perdido. La próxima vez será.");
                            }
                            else if (turnos.getBarcosJ2() == 0)
                            {
                                Console.Write("Has ganado la partida. Enhorabuena!!");
                            }
                            Thread.Sleep(2500);
                            break;

                        case 2:                         // Multijugador

                            break;

                        case 3:                         // Online
                            colocBarcos.menu();
                            Console.SetCursorPosition(24, 11); Console.Write("¿Quién vas a ser?");
                            Console.SetCursorPosition(24, 12); Console.Write("-----------------");
                            Console.SetCursorPosition(24, 13); Console.Write("(1)  Cliente");
                            Console.SetCursorPosition(24, 14); Console.Write("(2)  Servidor");
                            Console.SetCursorPosition(24, 16); Console.Write(">>> ");
                            validar = int.TryParse(Console.ReadLine(), out opcion3);
                            switch (opcion3)
                            {
                            case 1:
                                cliente.cliente();
                                break;

                            case 2:
                                servidor.servidor();
                                break;
                            }
                            break;

                        case 4:
                            volverAtras = false;
                            break;
                        }
                    }while(volverAtras == true);
                    break;              // Fin case 1 - Comenzar a jugar

                case 2:
                    do
                    {
                        if (sonido == true)
                        {
                            player.SoundLocation = ".\\sonido\\FondoDeUnaCueva.wav";
                            player.Play();
                        }
                        colocBarcos.menu();
                        Console.SetCursorPosition(24, 11); Console.Write("(1)  Elegir cantidad de barcos\n");
                        Console.SetCursorPosition(24, 12); Console.Write("(2)  Poner nombre al jugador 2\n");
                        Console.SetCursorPosition(24, 13); Console.Write("(3)  Activar efectos de sonido\n");
                        Console.SetCursorPosition(24, 14); Console.Write("(4)  Volver al menú\n");
                        Console.SetCursorPosition(24, 16); Console.Write(">>> ");
                        validar = int.TryParse(Console.ReadLine(), out opcion2);
                        switch (opcion2)
                        {
                        case 1:
                            do
                            {
                                colocBarcos.menu();
                                Console.SetCursorPosition(24, 11); Console.Write("¿Con cuántos barcos quieres jugar? (Máx 30)");
                                Console.SetCursorPosition(24, 13); Console.Write(">>> ");
                                validar = int.TryParse(Console.ReadLine(), out barcosIniciales);
                            }while(barcosIniciales < 1 || barcosIniciales > 30);
                            colocBarcos.setBarcosIniciales(barcosIniciales);
                            Console.SetCursorPosition(24, 15); Console.Write("Cambios guardados correctamente!");
                            Thread.Sleep(1250);
                            break;

                        case 2:
                            colocBarcos.menu();
                            Console.SetCursorPosition(24, 11); Console.Write("Introduce el nombre de tu oponente ");
                            Console.SetCursorPosition(24, 13); Console.Write(">>> ");
                            nombreJ2 = Console.ReadLine();
                            while (nombreJ2.Length > 7)
                            {
                                colocBarcos.menu();
                                Console.SetCursorPosition(24, 11); Console.Write("Pon un nombre más corto");
                                Console.SetCursorPosition(24, 13); Console.Write(">>> ");
                                nombreJ2 = Console.ReadLine();
                            }
                            turnos.setNombreJ2(nombreJ2);
                            Console.SetCursorPosition(24, 15); Console.Write("Nombre guardado correctamente!");
                            Thread.Sleep(1250);
                            break;

                        case 3:
                            colocBarcos.menu();
                            Console.SetCursorPosition(24, 11); Console.Write("¿Qué desea hacer?");
                            Console.SetCursorPosition(24, 12); Console.Write("-----------------");
                            Console.SetCursorPosition(24, 13); Console.Write("(1)  Activar efectos de sonido ");
                            Console.SetCursorPosition(24, 14); Console.Write("(2)  Desactivar efectos de sonido (defecto)");
                            Console.SetCursorPosition(24, 16); Console.Write(">>> ");
                            validar = int.TryParse(Console.ReadLine(), out opcion3);
                            if (opcion3 == 1)
                            {
                                DirectoryInfo DIR = new DirectoryInfo(".\\sonido");
                                if (!DIR.Exists)
                                {
                                    Console.SetCursorPosition(24, 18); Console.Write("Error. No se encuentra la carpeta 'sonido'.");
                                    Thread.Sleep(1750);
                                }
                                else
                                {
                                    sonido = true;
                                    Console.SetCursorPosition(24, 18); Console.Write("Sonido activado correctamente!");
                                    Thread.Sleep(1250);
                                }
                            }
                            else if (opcion3 == 2)
                            {
                                sonido = false;
                                Console.SetCursorPosition(24, 18); Console.Write("Sonido desactivado correctamente!");
                                Thread.Sleep(1250);
                            }
                            turnos.setSonido(sonido);
                            colocBarcos.setSonido(sonido);
                            break;

                        case 4:
                            volverAtras = false;
                            break;
                        }
                    }while(volverAtras == true);
                    break;

                case 3:
                    break;

                case 4:
                    Console.Write("1- Cliente\n2- Servidor");
                    Console.Write("\n>>> ");
                    validar = int.TryParse(Console.ReadLine(), out opcion3);
                    switch (opcion3)
                    {
                    case 1:
                        cliente.cliente();
                        break;

                    case 2:
                        servidor.servidor();
                        break;
                    }
                    break;
                }
            }while(opcion1 != 3);
        }