elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Lograr hacer bien el programa
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Lograr hacer bien el programa  (Leído 1,797 veces)
Meta


Desconectado Desconectado

Mensajes: 3.501



Ver Perfil WWW
Lograr hacer bien el programa
« en: 7 Julio 2020, 19:58 pm »

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#:
Código
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace LCD_nombre_archivo_consola_08
  8. {
  9.    class Program
  10.    {
  11.        static string guardarNombre = "";
  12.        static int coordenadaX = 0;
  13.        private static ConsoleKey tecla;
  14.  
  15.        // Caracteres de este array.
  16.        static readonly char[] roALFANUMERICO = new char[]
  17.        {
  18.            'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'Ñ', 'O', 'P',
  19.            'Q', 'R', 'S', 'T', 'U', 'V', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h',
  20.            'i', 'j', 'k', 'l', 'm', 'n', 'ñ', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'x', 'y',
  21.            'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9','.', ',', '-', '_', ':', ';',
  22.            '¿', '?', '(', ')', '[', ']', '{', '}','=', '$','&', '"', ' '
  23.        };
  24.  
  25.        // Dirección del carácter del array. El 80 presenta al espacio del array roALFANUMERICO.
  26.        static readonly int[] roINDICE_ARRAY = new int[]
  27.        {
  28.            80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80
  29.        };
  30.  
  31.        private static readonly string[] roTEXTO = new string[] { "ATRÁS", "GUARDAR" };
  32.  
  33.        static int index = 0;
  34.        static void Main(string[] args)
  35.        {
  36.            // Título de la pantalla.
  37.            Console.Title = "Cambiar nombre";
  38.  
  39.            Inicio();
  40.        }
  41.  
  42.        #region Inico.
  43.        private static void Inicio()
  44.        {
  45.            // Tamaño de la ventana.
  46.            Console.SetWindowSize(20, 5); // X
  47.  
  48.            // Fondo verde, azul, gris.
  49.            Console.BackgroundColor = ConsoleColor.Gray;
  50.  
  51.            // Letras negras, blanco, negro.
  52.            Console.ForegroundColor = ConsoleColor.Black;
  53.  
  54.            // Limpiar pantalla.
  55.            Console.Clear();
  56.  
  57.            Console.SetCursorPosition(0, 0);
  58.            Console.Write("Nombre del relé 1:  ");
  59.            Console.SetCursorPosition(0, 1);
  60.            //Console.Write("AAAAAAAAAAAAAAAA");
  61.  
  62.            // Recorre todo el índice del array y el de los datos alfanumérico
  63.            // y los rellena.
  64.            for (int i = 0; i < roINDICE_ARRAY.Length; i++)
  65.            {
  66.                Console.Write(roALFANUMERICO[roINDICE_ARRAY[i]]);
  67.            }
  68.  
  69.            Console.SetCursorPosition(2, 3);
  70.            Console.Write(roTEXTO[0]); // ATRÁS.
  71.            Console.SetCursorPosition(12, 3);
  72.            Console.Write(roTEXTO[1]); // GUARDAR.
  73.  
  74.            while (true)
  75.            {
  76.                Console.SetCursorPosition(coordenadaX, 1);
  77.  
  78.                // Almacena cualquier tecla pulsada en la variable key.
  79.                tecla = Console.ReadKey(true).Key;
  80.                switch (tecla)
  81.                {
  82.                    case ConsoleKey.RightArrow:
  83.                        if (coordenadaX < 15)
  84.                        {
  85.                            coordenadaX++;
  86.                        }
  87.                        break;
  88.  
  89.                    case ConsoleKey.LeftArrow:
  90.                        if (coordenadaX > 0)
  91.                        {
  92.                            coordenadaX--;
  93.                        }
  94.                        break;
  95.  
  96.                    case ConsoleKey.UpArrow:
  97.                        roINDICE_ARRAY[coordenadaX]++;
  98.                        if (roINDICE_ARRAY[coordenadaX] >= roALFANUMERICO.Length)
  99.                        {
  100.                            roINDICE_ARRAY[coordenadaX] = 0;
  101.                        }
  102.                        Console.Write(roALFANUMERICO[roINDICE_ARRAY[coordenadaX]]);
  103.                        break;
  104.  
  105.                    case ConsoleKey.DownArrow:
  106.                        roINDICE_ARRAY[coordenadaX]--;
  107.                        if (roINDICE_ARRAY[coordenadaX] < 0)
  108.                        {
  109.                            roINDICE_ARRAY[coordenadaX] = roALFANUMERICO.Length - 1;
  110.                        }
  111.                        Console.Write(roALFANUMERICO[roINDICE_ARRAY[coordenadaX]]);
  112.                        break;
  113.  
  114.                    case ConsoleKey.Enter:
  115.                        Console.SetCursorPosition(1, 3);
  116.                        Console.CursorVisible = false;
  117.                        Console.Write(">");
  118.  
  119.                        while (true)
  120.                        {
  121.                            tecla = Console.ReadKey(true).Key;
  122.  
  123.                            switch (tecla)
  124.                            {
  125.                                case ConsoleKey.RightArrow:
  126.                                case ConsoleKey.LeftArrow:
  127.                                    index = 1 - index;
  128.                                    break;
  129.  
  130.                                case ConsoleKey.UpArrow:
  131.                                case ConsoleKey.DownArrow:
  132.                                    Console.SetCursorPosition(coordenadaX, 1);
  133.                                    break;
  134.  
  135.                                case ConsoleKey.Enter:
  136.  
  137.                                    break;
  138.                            }
  139.  
  140.                            for (int a = 0; a < 2; a++)
  141.                            {
  142.                                Console.SetCursorPosition(1 + (10 * a), 3);
  143.                                if (a == index)
  144.                                {
  145.                                    Console.Write(">");
  146.                                }
  147.                                else
  148.                                {
  149.                                    Console.Write(" ");
  150.                                }
  151.                            }
  152.  
  153.                            if (index == 0)  // se pulsó Atrás
  154.                            {
  155.                                Atras();
  156.                                //break;  // vuelve a la edición de letras
  157.                            }
  158.  
  159.                            if (index == 1)  // se pulsó Guardar
  160.                            {
  161.                                Guardar();
  162.                            }
  163.                        }
  164.                }
  165.            }
  166.        }
  167.        #endregion
  168.  
  169.        private static void Atras()
  170.        {
  171.            Console.Clear();
  172.            Console.SetCursorPosition(0, 1);
  173.            Console.Write("HAS PULSADO ATRÁS   ");
  174.            Console.ReadKey(); // Pulse cualquier tecla para salir.
  175.        }
  176.  
  177.        private static void Guardar()
  178.        {
  179.            Console.Clear();
  180.            Console.SetCursorPosition(0, 1);
  181.            Console.Write("HAS GUARDADO       ");
  182.            for (int a = 0; a < roINDICE_ARRAY.Length; a++)
  183.            {
  184.                guardarNombre += roALFANUMERICO[roINDICE_ARRAY[a]].ToString();
  185.            }
  186.            Console.SetCursorPosition(0, 2);
  187.            Console.Write(guardarNombre);
  188.        }
  189.    }
  190. }
  191.  

Gracias.


« Última modificación: 7 Julio 2020, 20:00 pm por Meta » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Lograr que funcione bien un richTextBox
.NET (C#, VB.NET, ASP)
Meta 3 5,655 Último mensaje 9 Diciembre 2009, 21:22 pm
por Meta
Lograr hacer esta descripticón.
Java
Meta 2 2,185 Último mensaje 7 Abril 2011, 17:28 pm
por Meta
hacer mas corto el programa y si esta bien hecho
Programación C/C++
creiko 3 4,411 Último mensaje 22 Septiembre 2016, 05:18 am
por dato000
¿Es muy complicado lograr hacer múltiples cosas con un doble clic?
Windows
Tachikomaia 0 2,539 Último mensaje 29 Abril 2024, 02:53 am
por Tachikomaia
Lograr que el pasto quede bien.
Programación General
Tachikomaia 1 1,439 Último mensaje 27 Agosto 2024, 08:49 am
por Tachikomaia
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines