- Desde
- 6 Ago 2024
- Mensajes
- 15
Buenos días programadores:Quiero hacer un programa en consola con C# usando como si estuviera con radioButton, hay tres opciones y se selecciona con el >, al pulsar Enter, se marca por ejemplo así, (x) Opción B.
Solo se puede controlar la consola con las flechas del teclado, y Enter.
En la primera ventana se muestra así:
Como muestra en la imagen de arriba, está seleccionado con > en este caso la ( ) Opción A, con las flechas de arriba y abajo escoges la opción que quieras y solo se queda una opción marcada con una x. No puede haber varios seleccionado en un radioButton, solo uno. Una vez elegida una opción, se marca o desmarca pulsando la tecla Enter.
Si sigues indicando con la flecha del teclado, llega a la otra opción SALIR como indica abajo y pulsas Enter, simplemente sales del programa.
A parte de todo esto, la información o las opciones queda guardada en un archivo de texto, si no existe, lo crea al lado del ejecutable, si existe, solo lee la información al volver a ejecutar el programa.
¿Cómo se hace?
Por ahora solo he hecho esto, un código muy malo y sin acabar.
Saludos.
Solo se puede controlar la consola con las flechas del teclado, y Enter.
En la primera ventana se muestra así:
Como muestra en la imagen de arriba, está seleccionado con > en este caso la ( ) Opción A, con las flechas de arriba y abajo escoges la opción que quieras y solo se queda una opción marcada con una x. No puede haber varios seleccionado en un radioButton, solo uno. Una vez elegida una opción, se marca o desmarca pulsando la tecla Enter.
Si sigues indicando con la flecha del teclado, llega a la otra opción SALIR como indica abajo y pulsas Enter, simplemente sales del programa.
A parte de todo esto, la información o las opciones queda guardada en un archivo de texto, si no existe, lo crea al lado del ejecutable, si existe, solo lee la información al volver a ejecutar el programa.
¿Cómo se hace?
Por ahora solo he hecho esto, un código muy malo y sin acabar.
C#:
using System;
namespace Pruebas_Opcioines_Consola_01
{
internal class Program
{
static void Main(string[] args)
{
#region Configuración ventana.
// Título de la ventana.
Console.Title = "Opciones";
// Tamaño de la ventana, x, y o, ancho y alto.
const byte ancho = 20, alto = 5;
Console.SetWindowSize(ancho, alto);
// Quitar scroll laterales. Derecho y abajo.
Console.SetBufferSize(ancho, alto);
// Color de fondo.
Console.BackgroundColor = ConsoleColor.Black;
// Color de las letras.
Console.ForegroundColor = ConsoleColor.Gray;
// Limpiar pantalla y dejarlo todo en color de fondo.
Console.Clear();
// Visible el cursor. // No! Así lo haces invisible.
Console.CursorVisible = false;
#endregion
Menu();
void Menu()
{
sbyte indiceSeleccionado = 0; // Índice seleccionado de cada opción del menú.
bool salir = false; // Para salir del menú principal al INICIO.
sbyte SELECCION_OPCIONES_TOTALES = 3; // Total de opciones para seleccionar y fija.
bool opcionA = true;
bool opcionB = false;
bool opcionC = false;
// Capturar tecla para luego validar.
ConsoleKey tecla;
do
{
//******************************************************************
// Dibujo el menú principal.
switch (indiceSeleccionado)
{
case 0:
Console.SetCursorPosition(0, 0);
Console.Write(" ** TÍTULO ** ");
Console.SetCursorPosition(0, 1);
Console.Write("> ( ) Opción A ");
Console.SetCursorPosition(0, 2);
Console.Write(" ( ) Opción B ");
Console.SetCursorPosition(0, 3);
Console.Write(" ( ) Opción C ");
if ((opcionA == true) && (opcionB == false) && (opcionC == false))
{
Console.SetCursorPosition(3, 1);
Console.Write("x");
Console.SetCursorPosition(3, 2);
Console.Write(" ");
Console.SetCursorPosition(3, 3);
Console.Write(" ");
}
else
{
Console.SetCursorPosition(3, 1);
Console.Write(" ");
}
break;
case 1:
Console.SetCursorPosition(0, 0);
Console.Write(" ** TÍTULO ** ");
Console.SetCursorPosition(0, 1);
Console.Write(" ( ) Opción A ");
Console.SetCursorPosition(0, 2);
Console.Write("> ( ) Opción B ");
Console.SetCursorPosition(0, 3);
Console.Write(" ( ) Opción C ");
if (opcionA == false && opcionB == true && opcionC == false)
{
Console.SetCursorPosition(3, 1);
Console.Write(" ");
Console.SetCursorPosition(3, 2);
Console.Write("x");
Console.SetCursorPosition(3, 3);
Console.Write(" ");
}
else
{
Console.SetCursorPosition(3, 2);
Console.Write(" ");
}
break;
case 2:
Console.SetCursorPosition(0, 0);
Console.Write(" ** TÍTULO ** ");
Console.SetCursorPosition(0, 1);
Console.Write(" ( ) Opción A ");
Console.SetCursorPosition(0, 2);
Console.Write(" ( ) Opción B ");
Console.SetCursorPosition(0, 3);
Console.Write("> ( ) Opción C ");
if (opcionA == false && opcionB == false && opcionC == true)
{
Console.SetCursorPosition(3, 1);
Console.Write(" ");
Console.SetCursorPosition(3, 2);
Console.Write(" ");
Console.SetCursorPosition(3, 3);
Console.Write("x");
}
else
{
Console.SetCursorPosition(3, 3);
Console.Write(" ");
}
break;
case 3:
Console.SetCursorPosition(0, 0);
Console.Write(" ** TÍTULO ** ");
Console.SetCursorPosition(0, 1);
Console.Write("> SALIR ");
Console.SetCursorPosition(0, 2);
Console.Write(" ");
Console.SetCursorPosition(0, 3);
Console.Write(" ");
break;
default:
Console.Write("Fuera de rango. ");
break;
}
// Fin de pintar el menú principal.
//******************************************************************
// Leer tecla ingresada por el usuario.
tecla = Console.ReadKey(true).Key;
// Validar el tipo de tecla.
if (tecla == ConsoleKey.Enter)
{
switch (indiceSeleccionado)
{
case 0:
opcionA = true;
opcionB = false;
opcionC = false;
break;
case 1:
opcionA = false;
opcionB = true;
opcionC = false;
break;
case 2:
opcionA = false;
opcionB = false;
opcionC = true;
break;
case 3:
indiceSeleccionado = 0; // Restaurar índice antes de salir.
salir = true; // Salir
break;
default:
Console.Write("Fuera de rango. ");
break;
}
}
// ¿Has pulsado tecla flecha Abajo?
if (tecla == ConsoleKey.DownArrow)
{
indiceSeleccionado++;
}
// Entonces si pulsas tecla flecha Arriba.
if (tecla == ConsoleKey.UpArrow)
{
indiceSeleccionado--;
}
// Si está en la última opción, salta a la primera.
if (indiceSeleccionado > SELECCION_OPCIONES_TOTALES)
{
indiceSeleccionado = 0;
}
// Si está en la primera posición, salta a la última.
if (indiceSeleccionado < 0)
{
indiceSeleccionado = SELECCION_OPCIONES_TOTALES;
}
// Uso la tecla escape como salida.
} while (!salir);
}
}
}
}
Saludos.