Hola, perdón por haber tardado en responder
.
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.
#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;
}