AYUDA POR FAVOR

eduardo_web
17 de Septiembre del 2004
HOLA A TODOS.

NECESITO SABER, COMO HAGO EN BORLAND C++ V 3.1
PARA CREAR UNA SENTENCIA QUE ME CREE UNA LINEA EN PANTALLA Y ESTA LINEA PUEDA SER MOVIDA HACIA, ABAJO, ARRIBA, DERECHA O IZQUIERDA DEPENDIENDO LA TECLA QUE APRETE EL USUARIO.
ESTAS LINEAS LAS ESTOY CREANDO EN MODO GRAFICO CON "GRAPHICS.H"

POR FAVOR NECESITO TODA LA AYUDA ES PARA UN PROYECTO
GRACIAS

noel solw
17 de Septiembre del 2004
[1] : tienes que escribir la linea en un lugar determinado por dos variables : x - y, usando
gotoxy(x,y).
[2] : antes de mover el cursor para escribir una frase nueva, borrar la anterior escribiendo una serie de espacios en su lugar.
[3] : reciir el nuevo lugar desde las teclas usando getch().

exito ! ! !

eduardo_web
17 de Septiembre del 2004
gracias amigo

ya tengo clara la idea, pero soy nuevo en este lenguaje como hago para definir las teclas de up, down, right y left en el programa que el programa sepa que al aplicar cualquier de estas teclas realice un gotoxy a la linea y la mueva?

noel solw
17 de Septiembre del 2004
Fijate si este programa responde a tus necesidades.
No tengo instalado borland C++ ver 3.1, en esto momentos, asi que que no pude revisarlo.

// program moving.cpp
// written in Borland CPP ver 3.1

#define B 15
#define H 3
#define DX 2
#define DY 1
#define MIN_X DX
#define MAX_X 80 - B + 1
#define MIN_Y DY
#define MAX_Y 25 - H + 1
#define BACK_COLOR MAGENTA
#define FRONT_COLOR WHITE

#include <conio.h>
#include <iostream.h>

int GetNewPosition(int &x,int &y)
{
int ret = 1;
switch(getch())
{
case 77 :
case 54 : if(x < MAX_X) // arrow right
x += DX;
break;
case 75 :
case 52 : if(x > MIN_X) // arrow left
x -= DX;
break;
case 80 :
case 50 : if(y < MAX_Y) // arrow down
y += DY;
break;
case 72 :
case 56 : if(y > MIN_Y) // arrow up
y -= DY;
break;
case 27 : ret = 0;
break;
} // SWITCH
return ret;
} // GET NEW POSITION

void Show(int x, int y,int color)
{
textcolor(color);
for(int i = 0;i < H;i++)
{
gotoxy(x,y+i);
cputs("þ þ þ þ þ þ þ");
}
}

void Process()
{
int x = (80-B)/2,
y = (25-H)/2,
oldx = x,
oldy = y;
Show(x,y,FRONT_COLOR);
while (GetNewPosition(x,y))
{
Show(oldx,oldy,BACK_COLOR);
Show(x,y,FRONT_COLOR);
oldx = x;
oldy = y;
}
} // PROCESS

void main()
{
textmode(C80);
textbackground(BACK_COLOR);
_setcursortype(0);
clrscr();
Process();
gotoxy(1,25);
cout << "end of program - good bye";
getch();
textbackground(BLACK);
_setcursortype(1);
clrscr();
} // MAIN