Manejo de cursores
Publicado por Meta (138 intervenciones) el 20/08/2024 23:12:36
Teniendo este ejemplo que se muestra abajo, me funciona una parte del programa, pero no todo.

Como puedes ver, el programa se ejecuta y si te fijas bien, hay un > en > Vol: ■■■■■■-- 6.
Si pulsas izquierda o derecha con la flecha del teclado, se mueve la barra y el número del 0 al 8, en este ejemplo se muestra el 6.
Lo que no me funciona es, que debo pulsar la tecla Enter, y el símbolo >, se muestra en > ATRÁS.
Si está el símbolo > en ATRÁS, puedes mover las flechas izquierdas y derecha y el > se muestra en ATRÁS o en INICIO.
Si estás en > ATRÁS, pulsas Enter, muestras un mensaje: ¡Mensaje ATRÁS!, si seleccionas con el > en INICIO y pulsas Enter, muestra el mensaje ¡Mensaje INICIO!, pulsas Enter y vuelves a la pantalla principal.
Estando en > ATRÁS INICIO, pulsas una de las flechas arriba o abajo, vuelve en > Vol: ■■■■■■-- 6 en e cual puedes regular otra vez el volumen.
El código que he hecho hasta el momento es este.
¿Alguna idea?
Se que entender es lioso.
Gracias.

Como puedes ver, el programa se ejecuta y si te fijas bien, hay un > en > Vol: ■■■■■■-- 6.
Si pulsas izquierda o derecha con la flecha del teclado, se mueve la barra y el número del 0 al 8, en este ejemplo se muestra el 6.
Lo que no me funciona es, que debo pulsar la tecla Enter, y el símbolo >, se muestra en > ATRÁS.
Si está el símbolo > en ATRÁS, puedes mover las flechas izquierdas y derecha y el > se muestra en ATRÁS o en INICIO.
Si estás en > ATRÁS, pulsas Enter, muestras un mensaje: ¡Mensaje ATRÁS!, si seleccionas con el > en INICIO y pulsas Enter, muestra el mensaje ¡Mensaje INICIO!, pulsas Enter y vuelves a la pantalla principal.
Estando en > ATRÁS INICIO, pulsas una de las flechas arriba o abajo, vuelve en > Vol: ■■■■■■-- 6 en e cual puedes regular otra vez el volumen.
El código que he hecho hasta el momento es este.
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
using System;
namespace LCD_Volumen_Consola_01
{
internal class Program
{
static void Main(string[] args)
{
Console.CursorVisible = false;
// Variables.
string[] TEXTO =
{
" ** VOLUMEN ** ", // Posición 0.
" Vol: ", // 1
"■", // 2
"-", // 3
" ATRÁS", // 4
"INICIO", // 5
">", // 6
" " // 7
};
int volumen = 6;
const int VOLMEN_MAX = 8;
#region Volumen.
void Volumen()
{
ConsoleKey teclaVolumen;
// Limpiar pantalla.
Console.Clear();
Console.SetCursorPosition(0, 3);
Console.Write(TEXTO[4]); // ATRÁS
// Este es temporal solo para ver las coordenadas de posicionar el >.
//Console.SetCursorPosition(11, 3);
//Console.Write(TEXTO[6]); // >
Console.SetCursorPosition(13, 3);
Console.Write(TEXTO[5]); // INICIO
Console.SetCursorPosition(0, 1);
Console.Write(TEXTO[6]); // >
do
{
Console.SetCursorPosition(0, 0);
Console.Write(TEXTO[0]); // ** VOLUMEN **
Console.SetCursorPosition(1, 1);
Console.Write(TEXTO[1]); // Vol:
for (int i = 0; i < volumen; i++)
{
Console.Write(TEXTO[2]); // ■ ASCII 254.
}
for (int j = 0; j < (VOLMEN_MAX - volumen); j++)
{
Console.Write(TEXTO[3]); // -
}
// Mostrar el volumen en número.
Console.SetCursorPosition(16, 1);
Console.Write(volumen);
// Almacena el teclado pulsado en la variable teclaBrillo.
teclaVolumen = Console.ReadKey(true).Key;
// ¿Se pulsó el flecha derecha?
if (teclaVolumen == ConsoleKey.RightArrow)
{
// Sí. ¿Volumen es menor que VOLUMEN_MAX?
if (volumen < VOLMEN_MAX)
{
// Sí, incrementa 1.
volumen++;
}
}
// ¿Se pulsó flecha izquierda?
if (teclaVolumen == ConsoleKey.LeftArrow)
{
// Sí. ¿Volumen es mayor que cero?
if (volumen > 0)
{
// Sí, decremmenta 1.
volumen--;
}
}
//Console.SetCursorPosition(0, 1);
//Console.Write(TEXTO[7]); //
//Console.SetCursorPosition(0, 3);
//Console.Write(TEXTO[4]); // ATRÁS
//Console.SetCursorPosition(0, 3);
//Console.Write(TEXTO[6]); // >
//Console.SetCursorPosition(0, 1);
//Console.Write(TEXTO[7]); //
//Console.SetCursorPosition(11, 3);
//Console.Write(TEXTO[5]); // INICIO
//Console.SetCursorPosition(11, 3);
//Console.Write(TEXTO[6]); // >
} while (teclaVolumen != ConsoleKey.Enter);
}
#endregion
// Inicio.
Volumen();
}
}
}
¿Alguna idea?
Se que entender es lioso.
Gracias.
Valora esta pregunta


0