Hola:
En C++ no te puedo ayudar mucho y es lo primero que te diego, pero hay peros, puedes transformar son tu astucia que no tengo, pasarlo de C# a C++. Si lo haces, lo muestras aquí.
Pulsas las flechas del teclado pra mover en la pantalla un caracter, pulsa Enter para indicar la posición de donde está.
¿Es algo parecido a lo que buscas?
Saludos.
En C++ no te puedo ayudar mucho y es lo primero que te diego, pero hay peros, puedes transformar son tu astucia que no tengo, pasarlo de C# a C++. Si lo haces, lo muestras aquí.
Código (csharp) [Seleccionar]
using System;
namespace Menu_consola_26_cs
{
class Program
{
static void Main(string[] args)
{
int xMax = 80;
int yMax = 25;
int x = 1;
int y = 1;
Console.Title = "Moviendo cursor con las flechas del teclado.";
Console.SetWindowSize(xMax + 1, yMax + 2);
Console.CursorVisible = false;
DrawMarco(0, 0, xMax, yMax);
do
{
gotoxy(x, y, "█"); // ♠
ConsoleKey tecla = Console.ReadKey(true).Key;
if (tecla == ConsoleKey.Enter)
{
gotoxy(5, yMax, $" posicion del cursor es x:{x} y:{y} ══════");
continue;
}
gotoxy(x, y, " ");
if (tecla == ConsoleKey.DownArrow)
{
if (y < yMax - 1)
y++;
}
if (tecla == ConsoleKey.UpArrow)
{
if (y > 1)
y--;
}
if (tecla == ConsoleKey.RightArrow)
{
if (x < xMax - 1)
x++;
}
if (tecla == ConsoleKey.LeftArrow)
{
if (x > 1)
x--;
}
if (tecla == ConsoleKey.Escape)
break;
} while (true);
Console.CursorVisible = true;
}
// Generar marco.
private static void DrawMarco(int v1, int v2, int v3, int v4)
{
gotoxy(v1, v2, "╔");
gotoxy(v1, v4, "╚");
gotoxy(v3, v2, "╗");
gotoxy(v3, v4, "╝");
for (int i = v1 + 1; i < v3; i++)
{
gotoxy(i, v2, "═");
gotoxy(i, v4, "═");
}
for (int i = v2 + 1; i < v4; i++)
{
gotoxy(v1, i, "║");
gotoxy(v3, i, "║");
}
}
public static void gotoxy(int x, int y, string cad)
{
Console.SetCursorPosition(x, y);
Console.Write(cad);
}
}
}
Pulsas las flechas del teclado pra mover en la pantalla un caracter, pulsa Enter para indicar la posición de donde está.
¿Es algo parecido a lo que buscas?
Saludos.