Autor
|
Tema: Movimiento en un juego c++ (Leído 3,902 veces)
|
Jprogramer
Desconectado
Mensajes: 4
|
Necesito ayuda con una forma de hacer desplazar un carácter con tres ordenes "giro a la izquierda", "giro a la derecha" y que "avance", por el momento tengo el código para que se mueva con las letras "w,a,s,d" pero no es lo que necesito
|
|
|
En línea
|
|
|
|
Meta
|
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í. 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.
|
|
|
En línea
|
|
|
|
Jprogramer
Desconectado
Mensajes: 4
|
Gracias, pero por lo que veo en el código hace que el carácter se mueva con las flechas pero como lo mencione antes yo hago eso mismo en mi programa con las teclas w,a,s,d. Lo que estoy buscando es que al carácter yo le pueda dar una orientación (derecha, izquierda) y una vez dada la orientación hacer que el caracter avance.
Seria algo como el usuario digita la letra (D) que orientara el caracter hacia la derecha sin que avance y la letra (A) que haria que el caracter avance, el caracter que esta en la posicion 0,0 pasaria hacia la posicion 1,0
Cabe aclarar que antes de dar las instrucciones se debe ingresar hacia que lado esta apuntando el caracter sea arriba, abajo, derecha, izquierda. para hacer mas claro hacia donde desplazar el caracter
|
|
« Última modificación: 29 Marzo 2020, 21:09 pm por Jprogramer »
|
En línea
|
|
|
|
Meta
|
Como vez la fecla abajo en C#. tecla == ConsoleKey.DownArrow
Si quieres la de, solo tienes que poner la D, quedaría así. tecla == ConsoleKey.D
Saludos.
|
|
|
En línea
|
|
|
|
@XSStringManolo
Hacker/Programador
Colaborador
Desconectado
Mensajes: 2.399
Turn off the red ligth
|
No me queda claro si quieres mover un caracter desplazándolo del lugar de origen al lugar destino. O si quieres rotar 90 grados sin desplazar el caracter.
En el primer caso puedes almacenar todo el contenido de la pantalla en un array multidimensional y rescribirlo todo a tu gusto. Puedes usar windows.h para obtener la posición del buffer de la consola.
Para rotar tendrás que crear alguna fuente de texto o usar imágenes creo yo. Quizás sea más sencillo utilizar una biblioteca gráfica y hacer tu la propia consola en una ventana para tener control absoluto.
|
|
|
En línea
|
Mi perfil de patrocinadores de GitHub está activo! Puedes patrocinarme para apoyar mi trabajo de código abierto 💖
|
|
|
Jprogramer
Desconectado
Mensajes: 4
|
Gracias Si, lo que quiero es rotar 90 grados sin desplazar el carácter, aunque no me interesa por ahora tener una interfaz grafica
|
|
|
En línea
|
|
|
|
RayR
Desconectado
Mensajes: 243
|
En modo texto sólo es posible mostrar caracteres en su forma normal, y no se pueden girar. O usas alguna biblioteca gráfica, o lo simulas con caracteres distintos que den la ilusión de rotación. Por ejemplo: < ^ > v.
|
|
|
En línea
|
|
|
|
|
|