none
De C# a F# RRS feed

  • Pregunta

  • Buenas:

    Quiero adaptar el código de C# a F#.

    using System;
    
    namespace radioButton_consola_02_cs
    {
        class Program
        {
            #region Variables.
            private static readonly string[] TEXTO = new string[]
            {
                "( ) Opción A        ",
                "( ) Opción B        ",
                "( ) Opción C        ",
                "    SALIR"
            };
    
            private static int itemSeñalado;
    
            private static int itemSeleccionado;
            #endregion
    
            static void Main(string[] args)
            {
                // Título de la ventana.
                Console.Title = "RadioButton";
    
                // Tamaño de la ventana.
                Console.SetWindowSize(20, 5);
    
                // Fondo verde.
                Console.BackgroundColor = ConsoleColor.Blue;
    
                // Letras negras.
                Console.ForegroundColor = ConsoleColor.White;
    
                // Oculto el cursor.
                Console.CursorVisible = false;
    
                // Almacena la tecla pulsada en la variable.
                ConsoleKey teclaInicial;
    
                do
                {
                    // Limpiar pantalla.
                    Console.Clear();
    
                    // Posición del cursor del título del MENÚ PRINCIPAL.
                    Console.SetCursorPosition(0, 0);
    
                    // Título.
                    Console.Write("   MENÚ PRINCIPAL   ");
    
                    // Pocisión de la hora.
                    Console.SetCursorPosition(4, 2);
    
                    // Formato numérico dd/MM/yyyy.
                    Console.Write(DateTime.Now.ToString("ddd dd MMM"));
    
                    // Almacena en la variable una tecla pulsada.
                    teclaInicial = Console.ReadKey(true).Key;
    
                    // ¿Haz pulsado la tecla Enter?
                    if (teclaInicial == ConsoleKey.Enter)
                    {
                        // Sí. Se ejecuta esta función.
                        MenuPrincipal();
                    }
                } while (teclaInicial != ConsoleKey.Escape);
            }
    
            #region Menú Principal.
            private static void MenuPrincipal()
            {
                bool salir = false;
    
                // En itemSelecionado:
                // -1 = Sin seleccionar con * ninguna opción.
                // 0 = Seleccionar con * la Opción A.
                // 1 = Seleccionar con * la Opción B.
                // 2 = Seleccionar con * la opción C.
    
                // Capturar tecla para luego validar.
                ConsoleKey tecla;
    
                // Cada vez que se vuelva al menú, está señalizado con el *.
                itemSeñalado = 0;  
    
                do
                {
                    //******************************************************************
                    // Dibujo el menú principal.
    
                    // Limpiar pantalla.
                    Console.Clear();
    
                    for (int k = 0; k < TEXTO.Length; k++)
                    {
                        Console.SetCursorPosition(0, k);
                        Console.Write(itemSeñalado == k ? "> " : "  ");
                        Console.Write(TEXTO[k]);
                        Console.SetCursorPosition(3, k);
                        Console.Write(itemSeleccionado == k ? "*" : " ");
                    }
    
                    // Fin de pintar el menú principal.
                    //******************************************************************
    
                    // Leer tecla ingresada por el usuario.
                    tecla = Console.ReadKey(true).Key;
    
                    switch (tecla)
                    {
                        case ConsoleKey.Enter:
                            if (itemSeñalado < 3)
                            {
                                itemSeleccionado = itemSeñalado;
                            }
                            salir = (itemSeñalado == TEXTO.Length - 1);
                            break;
    
                        case ConsoleKey.DownArrow:
                            if (++itemSeñalado >= TEXTO.Length)
                            {
                                itemSeñalado = 0;
                            }
                            break;
    
                        case ConsoleKey.UpArrow:
                            if (--itemSeñalado < 0)
                            {
                                itemSeñalado = TEXTO.Length - 1;
                            }
                            break;
                    }
                    // Uso la tecla escape como salida.
                } while (!salir);
            }
            #endregion
        }
    }

    Saludos.


    http://electronica-pic.blogspot.com

    miércoles, 17 de junio de 2020 8:10