⚡ Descuentos en cursos en video - Lleva tu aprendizaje técnico al siguiente nivel y aprovecha precios especiales antes de que termine la oferta. 🔥 Aprovechar oferta ahora 🔥
Programación y Desarrollo

Intemtar lograr el programa deseado

Meta
Meta
39
hace 5 años
hace 5 años
Hola: Este código funciona a medias. Más bien, no logro situarlo. Está escrito en consola C#. Lo que hace el programa: Se usa solo las teclas flechas del teclado y la tecla Enter. El programa empieza así; Como puedes ver arriba, puedes escribir con las flechas arriba y abajo letras para poner un nombre. Por ejemplo, voy a poner Hola amigo. Lo puedes ver en la captura de abajo. Pulsa Enter. Se muestra el > al lado de ATRÁS. Tal como muestra abajo. Lo que debe hace en esta parte indicado en la imagen de arriba es: 1. Si toco las flechas del teclado izquierda y derecha, me señala con > Atrás o en GUARDAR. 2. Si pulso las flecha arriba o abajo, puedes volver a editar la palabra "Hola amigo", puedes corregir o escribir otra cosa. 3. Si pulsas Enter donde estabas escribiendo "Hola amigo", vuelves en ATRÁS con el >. 4. Estando en > ATRÁS, si pulsas Enter, muestra un mensaje tal como muestra en la captura de abajo y el programa se acaba ahí. El problema que no me funciona esta parte y la que voy a indicar ahora tampoco me funciona. Si estoy en > ATRÁS, al pulsas las flechas derecha o izquierda, debo estar ya en > GUARDAR. Precisamente no me sale. A parte de esto, si pulsas Enter cuando estés en > GUARDAR. Se queda guardado el texto "Hola amigo" guardado en una variable que en este caso se llama static string guardarNombre = ""; Se tiene que mostrar la imagen de abajo. Y se acaba el programa. Me perdí. Alguna idea como se programa esto. Código C#: [code]using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace LCD_nombre_archivo_consola_08 {     class Program     {         static string guardarNombre = "";         static int coordenadaX = 0;         private static ConsoleKey tecla;         // Caracteres de este array.         static readonly char[] roALFANUMERICO = new char[]         {             'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'Ñ', 'O', 'P',             'Q', 'R', 'S', 'T', 'U', 'V', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h',             'i', 'j', 'k', 'l', 'm', 'n', 'ñ', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'x', 'y',             'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9','.', ',', '-', '_', ':', ';',             '¿', '?', '(', ')', '[', ']', '{', '}','=', '$','&', '"', ' '         };         // Dirección del carácter del array. El 80 presenta al espacio del array roALFANUMERICO.         static readonly int[] roINDICE_ARRAY = new int[]         {             80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80         };         private static readonly string[] roTEXTO = new string[] { "ATRÁS", "GUARDAR" };         static int index = 0;         static void Main(string[] args)         {             // Título de la pantalla.             Console.Title = "Cambiar nombre";             Inicio();         }         #region Inico.         private static void Inicio()         {             // Tamaño de la ventana.             Console.SetWindowSize(20, 5); // X             // Fondo verde, azul, gris.             Console.BackgroundColor = ConsoleColor.Gray;             // Letras negras, blanco, negro.             Console.ForegroundColor = ConsoleColor.Black;             // Limpiar pantalla.             Console.Clear();             Console.SetCursorPosition(0, 0);             Console.Write("Nombre del relé 1:  ");             Console.SetCursorPosition(0, 1);             //Console.Write("AAAAAAAAAAAAAAAA");             // Recorre todo el índice del array y el de los datos alfanumérico             // y los rellena.             for (int i = 0; i < roINDICE_ARRAY.Length; i++)             {                 Console.Write(roALFANUMERICO[roINDICE_ARRAY[i]]);             }             Console.SetCursorPosition(2, 3);             Console.Write(roTEXTO[0]); // ATRÁS.             Console.SetCursorPosition(12, 3);             Console.Write(roTEXTO[1]); // GUARDAR.             while (true)             {                 Console.SetCursorPosition(coordenadaX, 1);                 // Almacena cualquier tecla pulsada en la variable key.                 tecla = Console.ReadKey(true).Key;                 switch (tecla)                 {                     case ConsoleKey.RightArrow:                         if (coordenadaX < 15)                         {                             coordenadaX++;                         }                         break;                     case ConsoleKey.LeftArrow:                         if (coordenadaX > 0)                         {                             coordenadaX--;                         }                         break;                     case ConsoleKey.UpArrow:                         roINDICE_ARRAY[coordenadaX]++;                         if (roINDICE_ARRAY[coordenadaX] >= roALFANUMERICO.Length)                         {                             roINDICE_ARRAY[coordenadaX] = 0;                         }                         Console.Write(roALFANUMERICO[roINDICE_ARRAY[coordenadaX]]);                         break;                     case ConsoleKey.DownArrow:                         roINDICE_ARRAY[coordenadaX]--;                         if (roINDICE_ARRAY[coordenadaX] < 0)                         {                             roINDICE_ARRAY[coordenadaX] = roALFANUMERICO.Length - 1;                         }                         Console.Write(roALFANUMERICO[roINDICE_ARRAY[coordenadaX]]);                         break;                     case ConsoleKey.Enter:                         Console.SetCursorPosition(1, 3);                         Console.CursorVisible = false;                         Console.Write(">");                         while (true)                         {                             tecla = Console.ReadKey(true).Key;                             switch (tecla)                             {                                 case ConsoleKey.RightArrow:                                 case ConsoleKey.LeftArrow:                                     index = 1 - index;                                     break;                                 case ConsoleKey.UpArrow:                                 case ConsoleKey.DownArrow:                                     Console.SetCursorPosition(coordenadaX, 1);                                     break;                                 case ConsoleKey.Enter:                                                                         break;                             }                             for (int a = 0; a < 2; a++)                             {                                 Console.SetCursorPosition(1 + (10 * a), 3);                                 if (a == index)                                 {                                     Console.Write(">");                                 }                                 else                                 {                                     Console.Write(" ");                                 }                             }                             if (index == 0)  // se pulsó Atrás                             {                                 Atras();                                 //break;  // vuelve a la edición de letras                             }                             if (index == 1)  // se pulsó Guardar                             {                                 Guardar();                             }                         }                 }             }         }         #endregion         private static void Atras()         {             Console.Clear();             Console.SetCursorPosition(0, 1);             Console.Write("HAS PULSADO ATRÁS   ");             Console.ReadKey(); // Pulse cualquier tecla para salir.         }         private static void Guardar()         {             Console.Clear();             Console.SetCursorPosition(0, 1);             Console.Write("HAS GUARDADO       ");             for (int a = 0; a < roINDICE_ARRAY.Length; a++)             {                 guardarNombre += roALFANUMERICO[roINDICE_ARRAY[a]].ToString();             }             Console.SetCursorPosition(0, 2);             Console.Write(guardarNombre);         }     } } [/code] Gracias.

¿Conoces una solución?

¡Aprende a reparar con estos cursos YoReparo!

4.93
(14)

Curso Reparación de Equipos de Audio de Alta Fidelidad

Maximiliano Resch
$ 60 USD
$ 20 USD
4.84
(25)

Curso Práctico de Reparación y Bobinado de Motores Eléctricos

Héctor Castiñeira
$ 60 USD
$ 20 USD
4.6
(10)

Curso Localización de Fallas en Refrigeración en Heladeras/Neveras On/Off

Yamil Alarcón
$ 29 USD
$ 12 USD
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos?
Regístrate gratis