Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Luxus01

#11
Me podrías explicar como usar tu programa. Porque sinceramente no tengo ni idea de que hacer con él.
#12
Si, después de publicar el mensaje empece a darle vueltas mi di cuenta de que en vez de analizar el recorrido del objeto podía almacenar en una cadena cada pulsación de las teclas
como números y luego asignar esos números a un movimiento determinado.
Lo siento, no entiendo a que te refieres con almacenar los movimientos en un entero, tenerlos en un arreglo me permite tenerlos secuenciados.
Otra cosa, al poner cstdlib y cstdio me salta un error

Ahora tengo problemas con la comunicación serial por que no tengo ni idea de como funciona.
#13
Hola, perdón por haber tardado en responder :laugh:.
En el anterior mensaje no explique bien lo que quería hacer aqui, tienes el codigo con comentarios. Aun no esta terminado, me falta conectar el c++ y el arduino (algo que no se como hacer todavia) pero lo del recorrido ya esta hecho.

Código (cpp) [Seleccionar]
#include<stdio.h>  //Declara las librerias, variables y definiciones
#include<windows.h>
#include<conio.h>
#include<stdlib.h>
#include<list>
#include<iostream>
using namespace std;

#define ARRIBA 72
#define IZQUIERDA 75
#define DERECHA 77
#define ABAJO 80

bool fina = false; //Esta variable pone fin al programa si es necesario
int recorrido[20]; //En este array se almacena el recorrido en forma de numeros

void gotoxy(int x, int y) //Funcion para situar el cursor en el lugar deseado
{
HANDLE hCon;
hCon = GetStdHandle (STD_OUTPUT_HANDLE);
COORD dwPos;
dwPos.X =x;
dwPos.Y =y;

SetConsoleCursorPosition(hCon, dwPos);
}

void OcultarCursor()//Oculta el cursor

{

HANDLE hCon;
hCon = GetStdHandle (STD_OUTPUT_HANDLE);
CONSOLE_CURSOR_INFO cci;
cci.dwSize = 2;
cci.bVisible = false;

SetConsoleCursorInfo (hCon,&cci);

}

class Inicio //Es el objeto que se mueve por el camino
{
private:
    int x, y;
public:
    Inicio(int _x,int _y): x(_x), y(_y){}
    void pintar();
    void mover();
};



void Inicio::mover()//Esta es la funcion mas importante, permite hacer el camino y lo traduce a numeros
{   int i;
    if(kbhit() && recorrido[20] == 0)//Detecta si se a presionado una tecla y si la ultima cifra del recorrido es cero
        {
        char tecla = getch();
        if(tecla == ARRIBA )//Detecta que flecha se a pulsado(en este caso arriba)
        {
        y--;
        for(i=0;i<21;i++)//En este for se recorre el arreglo y se guarda el numero correspondiente en el siguiente hueco distinto a cero
        {
            if(recorrido[i] == 0)
            {
                recorrido[i] = 72;
                break;
            }
        }

        }
        if(tecla == IZQUIERDA )
        {
            x--;
            for(i=0;i<21;i++)
            {
                if(recorrido[i] == 0)
                    {
                    recorrido[i] = 75;
                    break;
                    }
            }




        }
        if(tecla == DERECHA )
        {
            x++;
            for(i=0;i<21;i++)
            {
                if(recorrido[i] == 0)
                    {
                    recorrido[i] = 77;
                    break;
                    }
            }

        }
        if(tecla == ABAJO )
        {
            y++;
            for(i=0;i<21;i++)
            {
                if(recorrido[i] == 0)
                    {
                    recorrido[i] = 80;
                    break;
                    }
            }

        }
        gotoxy(x,y); printf("*");//Imprime un asterisco para que la trayectoria sea visible
        gotoxy(0,0);//Situa el cursor en la esquina superior izquierdaa
        for(i=0;i<21;i++)//Imprime la secuencia en el margen
        {
            cout<< recorrido[i]<<"\n";
        }

    }
    if(recorrido[20] != 0)//Comprueba si la ultima cifra del recorrido es distinta de cero, en tal caso, el programa le manda la secuencia al robot
    {
        fina = true;
        gotoxy(0,0); printf("Se ha completado la trayectoria, puedes mandar los datos al robot");
    }
}

void Inicio::pintar()//Pone el primer objeto para que sea visible
{
    gotoxy(x,y); printf("%c",223);
}

int main()
{
    OcultarCursor();
    int recorrido[20];
    int i;
    for(i=0;i<21;i++)//Despues de mandar la secuencia al robot vuelve el recorrido a cero para poder volver a utilizarla
    {
        recorrido[i]=0;
    }
    Inicio In(60,60);
    In.pintar();
    while(!fina)//Inicia el bucle que permite la creacion del recorrido
    {
        In.mover();

    }

return 0;
}


#14
Hola a todos, soy nuevo y estoy empezando ha programar en c++.

Estoy haciendo un programa con el que "dibujar" un recorrido en la consola, el programa lee ese recorrido y lo procese para transformarlo en instrucciones para un robot en la vida real (con arduino). Y me gustaría saber si hay algún operador, función o librería que sea capaz de detectar ese recorrido, o al menos de ayudarme a hacer una función que lo detecte.

Gracias por adelantado  :D