C sharp - Funcionamiento de botones

 
Vista:
sin imagen de perfil
Val: 121
Bronce
Ha aumentado 1 puesto en C sharp (en relación al último mes)
Gráfica de C sharp

Funcionamiento de botones

Publicado por Meta (67 intervenciones) el 31/03/2020 14:32:48
Buenas:

aaa-2111381

Este programa se trata de usar solo las teclas de las flechas y Enter. Ninguna más. Me funciona lo de cambiar un nombre con las teclas de las flechas. Una vez que tenga el nombre, si pulsas la Tecla Enter, tiene que aparecer este símbolo > al lado donde pone ATRÁS.

Tiene que aparecer así:

> ATRÁS GUARDAR


Desde que esté el signo > en ATRÁS, ya se puede mover hacia GUARDAR, puedes elegir con las flechas del teclado, izquierda y derecha.

Independientemente donde esté el > sea en ATRÁS o en GUARDAR, si pulsas las flechas arriba o abajo, se pone en la parte del nombre para cambiarlo otra vez, una vez que tenga el nombre que quieras, pulsas Enter otra vez y se va este > a ATRÁS como dije antes.

Si el > está en GUARDAR como indica abajo.

ATRÁS > GUARDAR

Si pulsas Enter, guarda el nombre que hayas puesto en la variable guardaNombre. Se queda simplemente almacenado ahí del programa.

Si vuelves con el > en ATRÁS y pulsas Enter. Muentra un mensaje en pantalla. Haz pulsado ATRÁS y el programa se queda ahí.

Espero que se entienda los paso que he escrito, si no se entiende algo, lo comentan.

Sólo he hecho esto.

Código C#:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
using System;
 
namespace LCD_nombre_archivo_consola_02
{
    class Programa
    {
 
        static string guardarNombre = "";
 
        static void Main(string[] args)
        {
            // Título de la pantalla.
            Console.Title = "Cambiar nombre";
 
            // Tamaño de la ventana.
            Console.SetWindowSize(20, 5);
 
            Inicio();
        }
 
        private static void Inicio()
        {
            int coordenadaX = 0;
            ConsoleKey key;
 
            char[] alfanumerico = new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
            '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', '.', ',', '-', '_', ':', ';', '¿', '?', '(', ')', '[', ']', '{', '}','=', '$',
            '&', '"', ' '};
 
            int[] indiceArray = new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
            string[] texto = new string[] { "ATRÁS", "GUARDAR" };
 
            // Fondo verde.
            Console.BackgroundColor = ConsoleColor.Blue;
 
            // Letras negras.
            Console.ForegroundColor = ConsoleColor.White;
 
            Console.Clear();
 
            Console.SetCursorPosition(0, 0);
            Console.Write("Nombre del relé 1:");
            Console.SetCursorPosition(0, 1);
            Console.Write("AAAAAAAAAAAAAAAA");
            Console.SetCursorPosition(2, 3);
            Console.Write(texto[0]);
            Console.SetCursorPosition(12, 3);
            Console.Write(texto[1]);
 
            while (true)
            {
                Console.SetCursorPosition(coordenadaX, 1);
 
                key = Console.ReadKey(true).Key;
 
                if ((key == ConsoleKey.RightArrow) && (coordenadaX < 15)) // Se cuanta del 0 al 15.
                {
                    coordenadaX++;
                }
                else if ((key == ConsoleKey.LeftArrow) && (coordenadaX > 0))
                {
                    coordenadaX--;
                }
                else if (key == ConsoleKey.UpArrow)
                {
                    indiceArray[coordenadaX]++;
 
                    if (indiceArray[coordenadaX] >= alfanumerico.Length)
                    {
                        indiceArray[coordenadaX] = 0;
                    }
 
                    Console.Write(alfanumerico[indiceArray[coordenadaX]]);
                }
                else if (key == ConsoleKey.DownArrow)
                {
                    indiceArray[coordenadaX]--;
 
                    if (indiceArray[coordenadaX] < 0)
                    {
                        indiceArray[coordenadaX] = alfanumerico.Length - 1;
                    }
 
                    Console.Write(alfanumerico[indiceArray[coordenadaX]]);
                }
            }
        }
    }
}

Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Funcionamiento de botones

Publicado por Nacho (109 intervenciones) el 31/03/2020 15:04:26
¿Y para hacer eso hacen falta 80 líneas de código?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 121
Bronce
Ha aumentado 1 puesto en C sharp (en relación al último mes)
Gráfica de C sharp

Funcionamiento de botones

Publicado por Meta (67 intervenciones) el 31/03/2020 15:21:40
No lo se.

Pareces que sabes hacerlo mejor.

Ojalá sean menos códigos y que se note la diferencia.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Funcionamiento de botones

Publicado por Nacho (109 intervenciones) el 31/03/2020 16:11:34
No sé....
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
using System;
 
namespace LCD_nombre_archivo_consola_02
{
    class Programa
    {
        static string guardarNombre = "";
 
        static void Main(string[] args)
        {
            // Título de la pantalla.
            Console.Title = "Cambiar nombre";
            // Tamaño de la ventana.
            Console.SetWindowSize(20, 5);
            Inicio();
        }
 
        private static void Inicio()
        {
            int coordenadaX = 0;
            ConsoleKey key;
 
            string[] texto = new string[] { "ATRÁS", "GUARDAR" };
            // Fondo verde.
            Console.BackgroundColor = ConsoleColor.Blue;
            // Letras negras.
            Console.ForegroundColor = ConsoleColor.White;
            Console.Clear();
            Console.SetCursorPosition(0, 0);
            Console.Write("Nombre del relé 1:");
            Console.SetCursorPosition(0, 1);
            Console.Write("AAAAAAAAAAAAAAAA");
            Console.SetCursorPosition(2, 3);
            Console.Write(texto[0]);
            Console.SetCursorPosition(12, 3);
            Console.Write(texto[1]);
 
            char asciiActual = '0';
            while (true)
            {
                Console.SetCursorPosition(coordenadaX, 1);
 
                key = Console.ReadKey(true).Key;
                switch(key)
                {
                    case ConsoleKey.RightArrow:
                        if (coordenadaX<15) coordenadaX++;
                        break;
                    case ConsoleKey.LeftArrow:
                        if (coordenadaX>0) coordenadaX--;
                        break;
                    case ConsoleKey.UpArrow:
                        CambiarChar(ref asciiActual, true);
                        Console.Write(asciiActual);
                        break;
                    case ConsoleKey.DownArrow:
                        CambiarChar(ref asciiActual, false);
                        Console.Write(asciiActual);
                        break;
                    case ConsoleKey.Enter:
                        // ¿que aquí tiene que hacer qué?
                        break;
                }
           }
        }
 
        public static void CambiarChar(ref char c, bool posterior)
        {
            if (posterior) c++;
            else c--;
            if (c > 126) c = '0';
            if (c < '0') c = '}';
        }
    }
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 121
Bronce
Ha aumentado 1 puesto en C sharp (en relación al último mes)
Gráfica de C sharp

Funcionamiento de botones

Publicado por Meta (67 intervenciones) el 31/03/2020 16:23:39
Impresionante. Y encima, con estilo.

Lo que tiene que hacer es:
Paso 1:
El cursor está parpadeando en la parte AAAAAAAAAAAA.
Cuando tenga ya el nombre hecho, pulsa Enter y se va a ATRÁS.

> ATRÁS GUADAR

Paso 2.
Cuando esté el > ATRÁS y GUARDAR. El símbolo > tiene que ser capaz de moverte en esos ámbitos. Si pulsa todo el rato por ejemplo a la izquierda, el > se va rotando, no que se quede pegado siempre a la izquierda.

Paso 3.
Estando todavía el > en ATRÁS o GUARDAR, desde que pulse una flecha arriba o bajo, se va directamente el cursor a donde pone AAAAAAAAAAA, para cambiar nombre otra vez. Para salir del AAAAAAAAAAA, pulsa Enter y vas directamente el cursor a > ATRÁS.

Paso 4.
Si ya estamos en la parte > ATRÁS y pulsas Enter. Se va el cursor hacia el AAAAAAAAAAA y aparece el mensaje "HAS PULSADO ATRÁS", tal como hicieste. Una vez cuando pulse Enter otra vez cuando ya estoy en la zona de AAAAAAAAAAAA, pasa a > ATRÁS y se quitta el mensaje "HAS PULSADO ATRÁS".

Paso 5.
Estando en > GUARDAR, pulsas Enter. Aparecerá el mensaje "HAS GUARDADO." Hay una variable llamdo:

string guardarNombre = "";

No se si esta está mejor.

string guardarNombre = string.Empty;

Que ahí se guarda el nombre seleccionado que cambiamos en AAAAAAAAAAAAAA.

¿Alguna otra duda?

En cuanto a tu código. Buen trabajo. ;)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Funcionamiento de botones

Publicado por Nacho (109 intervenciones) el 31/03/2020 18:03:12
Mucho vicio
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
using System;
 
 
namespace LCD_nombre_archivo_consola_02
{
    class Programa
    {
        static string guardarNombre = "";
 
        static void Main(string[] args)
        {
            // Título de la pantalla.
            Console.Title = "Cambiar nombre";
 
            // Tamaño de la ventana.
            Console.SetWindowSize(21, 5);
 
            Inicio();
        }
 
        private static void Inicio()
        {
            int coordenadaX = 0;
            ConsoleKey key;
 
           // Fondo verde.
            Console.BackgroundColor = ConsoleColor.Blue;
            // Letras negras.
            Console.ForegroundColor = ConsoleColor.White;
            Console.Clear();
            Console.SetCursorPosition(0, 0);
            Console.Write("Nombre del relé 1:");
            Console.SetCursorPosition(0, 1);
            Console.Write("AAAAAAAAAAAAAAAA");
            Botones(false, false);
 
            bool estoyconloshipopotamos = false;
            char asciiActual = '0';
            bool botonizq = true;
            while (true)
            {
                Console.SetCursorPosition(coordenadaX, 1);
                Console.CursorVisible = !estoyconloshipopotamos;
                key = Console.ReadKey(true).Key;
 
                if (estoyconloshipopotamos)
                {
                    switch(key)
                    {
                        case ConsoleKey.RightArrow:
                        case ConsoleKey.LeftArrow:
                            botonizq = !botonizq;
                            break;
                        case ConsoleKey.Enter:
                            estoyconloshipopotamos = !estoyconloshipopotamos;
                            break;
                    }
                    Botones(estoyconloshipopotamos, botonizq);
                }
                else
                switch(key)
                {
                    case ConsoleKey.RightArrow:
                        if (coordenadaX<15) coordenadaX++;
                        break;
                    case ConsoleKey.LeftArrow:
                        if (coordenadaX>0) coordenadaX--;
                        break;
                    case ConsoleKey.UpArrow:
                        CambiarChar(ref asciiActual, true);
                        Console.Write(asciiActual);
                        break;
                    case ConsoleKey.DownArrow:
                        CambiarChar(ref asciiActual, false);
                        Console.Write(asciiActual);
                        break;
                    case ConsoleKey.Enter:
                        estoyconloshipopotamos = !estoyconloshipopotamos;
                        Botones(estoyconloshipopotamos, true);
                        break;
 
                }
                while (Console.KeyAvailable) _ = Console.ReadKey(true).Key;
           }
        }
 
        public static void CambiarChar(ref char c, bool posterior)
        {
            if (posterior) c++;
            else c--;
            if (c > 126) c = '0';
            if (c < '0') c = '}';
        }
 
        public static void Botones(bool estoy, bool izq)
        {
            string[] texto = new string[] { "ATRÁS", "GUARDAR" };
            char sel1 = '<';
            char sel2 = '>';
            int posInicio1=2;
            int posInicio2=12;
            if (estoy)
            {
                if (izq)
                {
                    texto[0] = sel1 + texto[0] + sel2;
                    posInicio1 = 1;
                    posInicio2 = 12;
                }
                else
                {
                    texto[1] = sel1 + texto[1] + sel2;
                    posInicio1 = 2;
                    posInicio2 = 11;
                }
            }
            Console.BackgroundColor = ConsoleColor.Blue;
            Console.SetCursorPosition(1, 3);
            Console.Write("        ");
            Console.BackgroundColor = ConsoleColor.Red;
            Console.SetCursorPosition(posInicio1, 3);
            Console.Write(texto[0]);
 
            Console.BackgroundColor = ConsoleColor.Blue;
            Console.SetCursorPosition(11, 3);
            Console.Write("         ");
            Console.BackgroundColor = ConsoleColor.Red;
            Console.SetCursorPosition(posInicio2, 3);
            Console.Write(texto[1]);
 
            System.Threading.Thread.Sleep(50);
        }
    }
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 121
Bronce
Ha aumentado 1 puesto en C sharp (en relación al último mes)
Gráfica de C sharp

Funcionamiento de botones

Publicado por Meta (67 intervenciones) el 31/03/2020 18:27:26
Muy bueno.

No entiendo una cosa, solo una.

estoyconloshipopotamos

AJaj ajajjajajajja ja ja jajajjajaaa.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar