C sharp - Marcar hora en grande para consola RRS feed

 
Vista:
sin imagen de perfil
Val: 168
Bronce
Ha mantenido su posición en C sharp (en relación al último mes)
Gráfica de C sharp

Marcar hora en grande para consola RRS feed

Publicado por Meta (122 intervenciones) el 13/03/2022 08:48:49
Buenas:

No se si se puede mostrar la hora local en la consola C# en grande, he hecho una mini matriz del 0 al 9 de 5x7 píxeles.

Con los datos de la matriz tipo string. ¿Se puede mostrar la hora?

Dejo el código de la matriz.
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
using System;
 
namespace Reloj_Consola_01
{
    internal class Program
    {
        static void Main(string[] args)
        {
 
            string[] weekDays = new string[]
            {
                @"
░███░
█░░░█
█░░██
█░█░█
██░░█
█░░░█
░███░
",
                @"
░░░█░
░░██░
░░░█░
░░░█░
░░░█░
░░░█░
░░███
",
                @"
░███░
█░░░█
░░░░█
░░░█░
░░█░░
░█░░░
█████
",
                @"
█████
░░░█░
░░█░░
░░░█░
░░░░█
█░░░█
░███░
",
                @"
░░░█░
░░██░
░█░█░
█░░█░
█████
░░░█░
░░░█░
",
                @"
█████
█░░░░
████░
░░░░█
░░░░█
█░░░█
░███░
",
                @"
░░██░
░█░░░
█░░░░
████░
█░░░█
█░░░█
░███░
",
                @"
█████
░░░░█
░░░█░
░░█░░
░█░░░
░█░░░
░█░░░
",
                @"
░███░
█░░░█
█░░░█
░███░
█░░░█
█░░░█
░███░
",
                @"
░███░
█░░░█
█░░░█
░████
░░░░█
░░░█░
░██░░
"
            };
        }
    }
}

De alguna manera creo que se puede mostrar la hora con los datos de la matriz.

¿Es posible?

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
sin imagen de perfil
Val: 373
Plata
Ha aumentado su posición en 2 puestos en C sharp (en relación al último mes)
Gráfica de C sharp

Marcar hora en grande para consola RRS feed

Publicado por Agustin (171 intervenciones) el 13/03/2022 23:49:28
Varias cosas:

1 - no hace falta escribir una clase, un metodo main, y un namespace para aplicaciones de consola sencillas en C#. Basta con escribir el codigo directamente en la linea 1.

2 - convertí tu lista en un diccionario, para poder mapear los caracteres que muestran la hora a cada uno de los strings de los digitos.

3 - como esos strings son multilinea, y la consola funciona de una manera continua hacia la derecha, es necesario usar Console.SetCursosPosition() para setear el cursor de la consola en la posicion deseada y escribir asi los numeros "linea por linea" de cada una de sus 7 lineas horizontales.

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
var numbers = new Dictionary<char, string>
{
['0'] = @"
░███░
█░░░█
█░░██
█░█░█
██░░█
█░░░█
░███░
",
['1'] = @"
░░░█░
░░██░
░░░█░
░░░█░
░░░█░
░░░█░
░░███
",
['2'] = @"
░███░
█░░░█
░░░░█
░░░█░
░░█░░
░█░░░
█████
",
['3'] = @"
█████
░░░█░
░░█░░
░░░█░
░░░░█
█░░░█
░███░
",
['4'] = @"
░░░█░
░░██░
░█░█░
█░░█░
█████
░░░█░
░░░█░
",
['5'] = @"
█████
█░░░░
████░
░░░░█
░░░░█
█░░░█
░███░
",
['6'] = @"
░░██░
░█░░░
█░░░░
████░
█░░░█
█░░░█
░███░
",
['7'] = @"
█████
░░░░█
░░░█░
░░█░░
░█░░░
░█░░░
░█░░░
",
['8'] = @"
░███░
█░░░█
█░░░█
░███░
█░░░█
█░░░█
░███░
",
['9'] = @"
░███░
█░░░█
█░░░█
░████
░░░░█
░░░█░
░██░░
",
[':'] = @"
░░░░░
░░█░░
░░░░░
░░░░░
░░░░░
░░█░░
░░░░░"
};
 
while (true)
{
    Console.Clear();
    var currentTime = DateTime.Now.TimeOfDay.ToString(@"hh\:mm\:ss");
 
    var currentNumbers = currentTime.Select(c => numbers[c]).ToArray();
 
    for (int i = 0; i < currentNumbers.Length; i++)
    {
        var lines = currentNumbers[i].Split(Environment.NewLine, StringSplitOptions.RemoveEmptyEntries);
        for (int l = 0; l < lines.Length; l++)
        {
            Console.SetCursorPosition(i * 7, l);
            Console.Write(lines[l]);
        }
    }
 
    await Task.Delay(TimeSpan.FromSeconds(1));
}
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: 168
Bronce
Ha mantenido su posición en C sharp (en relación al último mes)
Gráfica de C sharp

Marcar hora en grande para consola RRS feed

Publicado por Meta (122 intervenciones) el 14/03/2022 21:57:50
No me deja ejecutarlo, me dan estos fallos.

Error CS1503 Argumento 1: no se puede convertir de 'string' a 'char'


Error CS1503 Argumento 2: no se puede convertir de 'System.StringSplitOptions' a 'char'


Error CS4033 El operador 'await' solo se puede usar dentro de un método asincrónico. Puede marcar este método con el modificador 'async' y cambiar su tipo de valor devuelto a 'Task'.
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: 373
Plata
Ha aumentado su posición en 2 puestos en C sharp (en relación al último mes)
Gráfica de C sharp

Marcar hora en grande para consola RRS feed

Publicado por Agustin (171 intervenciones) el 15/03/2022 14:26:01
Esta escrito en C# 10, .NET 6.0.

Si estas usando una version vieja no te va a compilar. Necesitas Visual Studio 2022 para compilarlo.

Y de nuevo, la linea 1 es la linea 1 efectivamente. Todo lo otro que tengas lo tenes que borrar.
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: 168
Bronce
Ha mantenido su posición en C sharp (en relación al último mes)
Gráfica de C sharp

Marcar hora en grande para consola RRS feed

Publicado por Meta (122 intervenciones) el 15/03/2022 17:43:50
Buenas:

Ya funciona co nel .Net 6.0 .
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
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
#region Configuración ventana.
// Título de la ventana.
Console.Title = "Reloj grande";
 
// Tamaño de la ventana, x, y.
// Tamaño de la ventana, x, y.
const int ancho = 55;
const int alto = 7;
Console.SetWindowSize(ancho, alto);
 
// Color de fondo.
Console.BackgroundColor = ConsoleColor.Green;
 
// Color de las letras.
Console.ForegroundColor = ConsoleColor.Black;
 
// Limpiar pantalla y dejarlo todo en color de fondo.
Console.Clear();
 
// Visible el cursor.
Console.CursorVisible = false;
#endregion
 
var numbers = new Dictionary<char, string>
 
{
 
    ['0'] = @"
 ███
█   █
█  ██
█ █ █
██  █
█   █
 ███
",
 
    ['1'] = @"
  ██
  ███
",
 
    ['2'] = @"
 ███
█   █
█████
",
 
    ['3'] = @"
█████
█   █
 ███
",
 
    ['4'] = @"
  ██
 █ █
█  █
█████
",
 
    ['5'] = @"
█████
████
█   █
 ███
",
 
    ['6'] = @"
  ██
████
█   █
█   █
 ███
",
 
    ['7'] = @"
█████
",
 
    ['8'] = @"
 ███
█   █
█   █
 ███
█   █
█   █
 ███
",
 
    ['9'] = @"
 ███
█   █
█   █
 ████
 ██
",
 
    [':'] = @"
"
 
};
 
Console.CursorVisible = false;
 
while (true)
{
    Console.Clear();
    var currentTime = DateTime.Now.TimeOfDay.ToString(@"hh\:mm\:ss");
    var currentNumbers = currentTime.Select(c => numbers[c]).ToArray();
 
    for (int i = 0; i < currentNumbers.Length; i++)
    {
        var lines = currentNumbers[i].Split(Environment.NewLine, StringSplitOptions.RemoveEmptyEntries);
        for (int l = 0; l < lines.Length; l++)
        {
            Console.SetCursorPosition(i * 7, l);
            Console.Write(lines[l]);
        }
    }
    await Task.Delay(TimeSpan.FromSeconds(1));
}

Muchs gracias.
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