Mensaje en Movimiento Borland C++

Iniciado por Black Lotus, 15 Marzo 2013, 22:23 PM

0 Miembros y 1 Visitante están viendo este tema.

Black Lotus

Tengo que hacer un programa que me nuestre en pantalla un mensaje en movimiento que recorra toda la pantalla (arriba abajo, izquierda derecha) y que al presionar una tecla especifica(definida por el programador) se detenga... Yo solo se mover el texto en forma vertical y horizontal pero sin embargo no se como mezclar ambos movimientos...

ESTE ES PARA EL MOVIMIENTO EN VERTICAL(ESTE CODIGO USO YO)

Código (cpp) [Seleccionar]

#include <iostream> //usar cout
#include <conio>    //usar getch ()
#include <windows>  //usar la función sleep
int main ()
{
int i;
for (i==1; i<24; i++) //que inicie en la posición 1(ya sea x,y en este caso en y) y que al llegar a la posición 24 se detenga
{ clrscr();gotoxy(32,i);cout<<"Hola";  //borropantalla y coloco texto sin dejar rastro del texto
Sleep(100);
}getch();
}


Y ESTE CODIGO ES PARA EL MOVIMIENTO EN HORIZONTAL
Código (cpp) [Seleccionar]

#include <iostream> //usar cout
#include <conio>    //usar getch ()
#include <windows>  //usar la función sleep
int main ()
{
int i;
for (i==1; i<75; i++) //que inicie en la posición 1(ya sea x,y en este caso en x) y que al llegar a la posición 75 se detenga
{ clrscr();gotoxy(i,12);cout<<"Hola";
Sleep(100);
}getch();
}


Entonces me darian idea o codigo(si en caso pueden o tengan ganas) para hacer un movimiento que recorra toda la pantalla (arriba abajo, izquierda derecha)

avesudra

#1
Creo que esto debería funcionar ( no lo he comprobado pues estoy en Ubuntu y no sé como va aquí lo de mover las cosas por la pantalla, supongo que con ncurses EDITADO: funciona solo en Windows ). Bueno te he corregido algunas cosas como las asignaciones de los for's al valor de la variable "i" ya que lo haces usando el operador "==" (comparador lógico, lo cual conlleva error) y tienes que usar este "=" (operador de asignación). Bueno te dejo el código a ver si funciona:
Código (cpp) [Seleccionar]
##include <iostream> //usar cout
#include <cstdio>
#include <cstdlib>


#ifdef _WIN32
#include <windows.h>
#define cls system("CLS");
void sleep(unsigned milliseconds)
{
   Sleep(milliseconds);
}
void gotoxy( int column, int line )
{
   COORD coord;
   coord.X = column;
   coord.Y = line;
   SetConsoleCursorPosition(
       GetStdHandle( STD_OUTPUT_HANDLE ),
       coord
);
}

#elif defined  __unix__

#include <unistd.h>
#define cls system("clear");
void sleep(unsigned milliseconds)
{
   usleep(milliseconds * 1000); // takes microseconds
}
void gotoxy(int x, int y)
{
   printf("\033[%d;%df", y, x);
   fflush(stdout);
}
#endif



using namespace std;

struct pos
{
   bool arriba;
   bool abajo;
   bool izquierda;
   bool derecha;
   int x;
   int y;
} posicion;

void moverHorizontalDerecha     ();
void moverHorizontalIzquierda   ();
void moverVerticalAbajo         ();
void moverVerticalArriba        ();

int main (int argc, char * argv[])
{

   posicion.arriba     = true;
   posicion.izquierda  = true;
   posicion.derecha    = false;
   posicion.abajo      = false;
   posicion.x          = 0;
   posicion.y          = 0;

   for(;;)
   {
       if((posicion.arriba == true && posicion.izquierda == true))
       {
           moverHorizontalDerecha();
           posicion.izquierda  = false;
           posicion.derecha    = true;
           moverVerticalAbajo();
           posicion.arriba     = false;
           posicion.abajo      = true;
       }
       else if((posicion.abajo == true) && (posicion.derecha == true))
       {
           moverHorizontalIzquierda();
           posicion.izquierda  = true;
           posicion.derecha    = false;
           moverVerticalArriba();
           posicion.arriba     = true;
           posicion.abajo      = false;
       }
   }
   getchar();
}
void moverVerticalArriba()
{
   for (; posicion.y != 0; --posicion.y)
   {
       cls
       gotoxy(posicion.x,posicion.y);
       printf("Hola");
       sleep(10);
   }
}
void moverVerticalAbajo()
{
   for (; posicion.y != 20; ++posicion.y)
   {
       cls
       gotoxy(posicion.x,posicion.y);
       printf("Hola");
       sleep(10);
   }
}
void moverHorizontalIzquierda()
{
   for(; posicion.x != 0; --posicion.x)
   {
       cls
       gotoxy(posicion.x,posicion.y);
       printf("Hola");
       sleep(10);
   }
}
void moverHorizontalDerecha()
{
   for(; posicion.x != 75; ++posicion.x)
   {
       cls
       gotoxy(posicion.x,posicion.y);
       printf("Hola");
       sleep(10);
   }
}
Regístrate en