Buenas:
Hoy me volví loco de la cabeza. Entrego código incompleto, lo entrego como curiosidad. Lo intentaré acabarlo al 100 %.
Hay una parte en Ver Radio que no me sale. Si pulso la fecla del teclado arriba, me sale "Radio: On". Si sigo pulsado la fecla arriba otra vez, se queda en On, lo mismo hacia abajo, que se queda en Off.
¿Hay alguna manera de que si pulso la tecla flecha arriba todo el rato o abajo se cambie en On y Off?
El código es esta función.
Saludos
Hoy me volví loco de la cabeza. Entrego código incompleto, lo entrego como curiosidad. Lo intentaré acabarlo al 100 %.
Código (csharp) [Seleccionar]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Menu_consola_09_cs
{
class Program
{
// Variables globales.
public static int luz = 6;
public const int BRILLO_MAX = 8;
public static bool radio = false;
static void Main(string[] args)
{
// Título de la ventana.
Console.Title = "Menú de opciones";
// Tamaño ventana consola.
// X anchura.
Console.WindowWidth = 16;
// Y altura.
Console.WindowHeight = 2;
// Oculto el cursor.
Console.CursorVisible = false;
ConsoleKey teclaInicial;
Console.BackgroundColor = ConsoleColor.Green;
// Letras negras.
Console.ForegroundColor = ConsoleColor.Black;
// Limpiar pantalla.
do
{
Console.Clear();
Console.WriteLine(DateTime.Now.ToString("dd/MM/yyyy"));
teclaInicial = Console.ReadKey(true).Key;
if(teclaInicial == ConsoleKey.Enter)
{
menuPrincipal();
}
} while (teclaInicial != ConsoleKey.Escape); // SANTIAGOOOOO.
}
public static void menuPrincipal()
{
// Contador de teclas y navegador.
int opcion = 0;
bool salir = false;
// Capturar tecla para luego validar.
ConsoleKey tecla;
do
{
//******************************************************************
// Dibujo el menú.
// Rellenar fondo verde.
Console.BackgroundColor = ConsoleColor.Green;
// Letras negras.
Console.ForegroundColor = ConsoleColor.Black;
// Limpiar pantalla.
Console.Clear();
switch (opcion)
{
case 0:
Console.SetCursorPosition(0, 0);
Console.Write("Language");
break;
case 1:
Console.SetCursorPosition(0, 0);
Console.WriteLine("Ajustar hora ->");
break;
case 2:
Console.SetCursorPosition(0, 0);
Console.WriteLine("Ajustar fecha ->");
break;
case 3:
Console.SetCursorPosition(0, 0);
Console.WriteLine("Brillo");
break;
case 4:
Console.SetCursorPosition(0, 0);
Console.WriteLine("Ver radio");
break;
case 5:
Console.SetCursorPosition(0, 0);
Console.WriteLine("Vol. avisos");
break;
case 6:
Console.SetCursorPosition(0, 0);
Console.WriteLine("Vol. teclas");
break;
case 7:
Console.SetCursorPosition(0, 0);
Console.WriteLine("Salir menú");
break;
default:
Console.WriteLine("Fuera de rango.");
break;
}
// Fin de pintar el menú.
//******************************************************************
// Leer tecla ingresada por el usuario.
tecla = Console.ReadKey(true).Key;
// Validar el tipo de tecla.
if (tecla == ConsoleKey.Enter)
{
switch (opcion)
{
case 3:
brillo();
break;
case 4:
radiazo();
break;
case 7:
salir = true;
break;
default:
break;
}
}
if (tecla == ConsoleKey.DownArrow)
{
opcion += 1;
}
if (tecla == ConsoleKey.UpArrow)
{
opcion -= 1;
}
// Si está en la última opción, salta a la primera.
if (opcion > 7)
{
opcion = 0;
}
// Si está en la primera posición, salta a la última.
if (opcion < 0)
{
opcion = 7;
}
// Uso la tecla escape como salida.
} while (salir==false);
}
#region Brillo (3).
public static void brillo()
{
ConsoleKey teclaBrillo;
Console.Clear();
do
{
Console.SetCursorPosition(0, 0);
Console.Write("Luz: ");
for (int i = 0; i < luz; i++)
{
Console.Write("X");
}
for (int j = 0; j < (BRILLO_MAX - luz); j++)
{
Console.Write("-");
}
teclaBrillo = Console.ReadKey(true).Key;
// ¿Se pulsó el cursor arriba?
if (teclaBrillo == ConsoleKey.UpArrow)
{
//¿no llega al limite?
if (luz < BRILLO_MAX)
{
// Incrementa 1.
luz++;
}
}
if (teclaBrillo == ConsoleKey.DownArrow)
{
if (luz > 0)
{
// Decremmenta 1.
luz--;
}
}
} while (teclaBrillo != ConsoleKey.Enter);
}
#endregion
#region Radio (4).
public static void radiazo()
{
ConsoleKey teclaRadio;
Console.Clear();
do
{
Console.SetCursorPosition(0, 0);
Console.Write("Radio: ");
if (radio == true)
{
Console.SetCursorPosition(7, 0);
Console.Write("On ");
}
else
{
Console.SetCursorPosition(7, 0);
Console.Write("Off");
}
teclaRadio = Console.ReadKey(true).Key;
if (teclaRadio == ConsoleKey.UpArrow)
{
Console.SetCursorPosition(7, 0);
Console.Write("On ");
radio = true;
}
if (teclaRadio == ConsoleKey.DownArrow)
{
Console.SetCursorPosition(7, 0);
Console.Write("Off");
radio = false;
}
} while (teclaRadio != ConsoleKey.Enter);
}
#endregion
}
}
Hay una parte en Ver Radio que no me sale. Si pulso la fecla del teclado arriba, me sale "Radio: On". Si sigo pulsado la fecla arriba otra vez, se queda en On, lo mismo hacia abajo, que se queda en Off.
¿Hay alguna manera de que si pulso la tecla flecha arriba todo el rato o abajo se cambie en On y Off?
El código es esta función.
Código (csharp) [Seleccionar]
public static void radiazo()
{
ConsoleKey teclaRadio;
Console.Clear();
do
{
Console.SetCursorPosition(0, 0);
Console.Write("Radio: ");
if (radio == true)
{
Console.SetCursorPosition(7, 0);
Console.Write("On ");
}
else
{
Console.SetCursorPosition(7, 0);
Console.Write("Off");
}
teclaRadio = Console.ReadKey(true).Key;
if (teclaRadio == ConsoleKey.UpArrow)
{
Console.SetCursorPosition(7, 0);
Console.Write("On ");
radio = true;
}
if (teclaRadio == ConsoleKey.DownArrow)
{
Console.SetCursorPosition(7, 0);
Console.Write("Off");
radio = false;
}
} while (teclaRadio != ConsoleKey.Enter);
}
Saludos