elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Movimiento en un juego c++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Movimiento en un juego c++  (Leído 3,254 veces)
Jprogramer

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Movimiento en un juego c++
« en: 28 Marzo 2020, 21:33 pm »

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


Desconectado Desconectado

Mensajes: 3.438



Ver Perfil WWW
Re: Movimiento en un juego c++
« Respuesta #1 en: 29 Marzo 2020, 03:27 am »

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í.

Código
  1. using System;
  2.  
  3. namespace Menu_consola_26_cs
  4. {
  5.    class Program
  6.    {
  7.        static void Main(string[] args)
  8.        {
  9.            int xMax = 80;
  10.            int yMax = 25;
  11.            int x = 1;
  12.            int y = 1;
  13.  
  14.            Console.Title = "Moviendo cursor con las flechas del teclado.";
  15.            Console.SetWindowSize(xMax + 1, yMax + 2);
  16.            Console.CursorVisible = false;
  17.            DrawMarco(0, 0, xMax, yMax);
  18.  
  19.            do
  20.            {
  21.                gotoxy(x, y, "█"); // ♠
  22.                ConsoleKey tecla = Console.ReadKey(true).Key;
  23.  
  24.                if (tecla == ConsoleKey.Enter)
  25.                {
  26.                    gotoxy(5, yMax, $" posicion del cursor es x:{x} y:{y} ══════");
  27.                    continue;
  28.                }
  29.                gotoxy(x, y, " ");
  30.                if (tecla == ConsoleKey.DownArrow)
  31.                {
  32.                    if (y < yMax - 1)
  33.                        y++;
  34.                }
  35.                if (tecla == ConsoleKey.UpArrow)
  36.                {
  37.                    if (y > 1)
  38.                        y--;
  39.                }
  40.                if (tecla == ConsoleKey.RightArrow)
  41.                {
  42.                    if (x < xMax - 1)
  43.                        x++;
  44.                }
  45.                if (tecla == ConsoleKey.LeftArrow)
  46.                {
  47.                    if (x > 1)
  48.                        x--;
  49.                }
  50.                if (tecla == ConsoleKey.Escape)
  51.                    break;
  52.            } while (true);
  53.            Console.CursorVisible = true;
  54.        }
  55.  
  56.        // Generar marco.
  57.        private static void DrawMarco(int v1, int v2, int v3, int v4)
  58.        {
  59.            gotoxy(v1, v2, "&#9556;");
  60.            gotoxy(v1, v4, "&#9562;");
  61.            gotoxy(v3, v2, "&#9559;");
  62.            gotoxy(v3, v4, "&#9565;");
  63.  
  64.            for (int i = v1 + 1; i < v3; i++)
  65.            {
  66.                gotoxy(i, v2, "&#9552;");
  67.                gotoxy(i, v4, "&#9552;");
  68.            }
  69.            for (int i = v2 + 1; i < v4; i++)
  70.            {
  71.                gotoxy(v1, i, "&#9553;");
  72.                gotoxy(v3, i, "&#9553;");
  73.            }
  74.        }
  75.  
  76.        public static void gotoxy(int x, int y, string cad)
  77.        {
  78.            Console.SetCursorPosition(x, y);
  79.            Console.Write(cad);
  80.        }
  81.    }
  82. }
  83.  

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 Desconectado

Mensajes: 4


Ver Perfil
Re: Movimiento en un juego c++
« Respuesta #2 en: 29 Marzo 2020, 20:22 pm »

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


Desconectado Desconectado

Mensajes: 3.438



Ver Perfil WWW
Re: Movimiento en un juego c++
« Respuesta #3 en: 29 Marzo 2020, 21:55 pm »

Como vez la fecla abajo en C#.
Código
  1. tecla == ConsoleKey.DownArrow

Si quieres la de, solo tienes que poner la D, quedaría así.

Código
  1. tecla == ConsoleKey.D

Saludos.
En línea

@XSStringManolo
Hacker/Programador
Colaborador
***
Desconectado Desconectado

Mensajes: 2.397


Turn off the red ligth


Ver Perfil WWW
Re: Movimiento en un juego c++
« Respuesta #4 en: 30 Marzo 2020, 01:45 am »

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 Desconectado

Mensajes: 4


Ver Perfil
Re: Movimiento en un juego c++
« Respuesta #5 en: 30 Marzo 2020, 03:04 am »

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 Desconectado

Mensajes: 239


Ver Perfil
Re: Movimiento en un juego c++
« Respuesta #6 en: 30 Marzo 2020, 04:53 am »

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

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Publicidad Fastidiosa en juego del movimiento cocacola
Juegos y Consolas
skrount 2 1,451 Último mensaje 3 Agosto 2006, 22:44 pm
por skrount
Array en movimiento
Java
Morriganx 1 2,539 Último mensaje 25 Febrero 2008, 23:55 pm
por Lu15_CL4
dar movimiento a una imagen
Java
bengy 2 4,122 Último mensaje 7 Septiembre 2012, 03:32 am
por bengy
Constructor de movimiento y asignacion de movimiento
Programación C/C++
AnthonyS 2 1,904 Último mensaje 1 Marzo 2017, 19:32 pm
por AnthonyS
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines