ayuda plz con este programa es urgente
necesito que las pantallas no se borren al pasar por encima
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
int ventana,salir;
class cEjemplo
{
private:
int fi;
int co;
int la;
int al;
public:
cEjemplo(int a=0,int b=0,int c=0,int d=0)
{
fi = a;
co = b;
la = c;
al = d;
Dibuja('*');
}
Dibuja(char f)
{
int i;
gotoxy(co,fi);
for(i=0;i<=la;i++)
cout << f;
gotoxy(co,fi+al);
for(i=0;i<= la;i++)
cout << f;
gotoxy(co,fi+i);
for(i=0;i<= al;i++)
{
gotoxy(co,fi+i);
cout << f;
gotoxy(co+la,fi+i);
cout << f;
}
}
MoverUp()
{
Dibuja(' ');
fi--;
Dibuja('*');
}
MoverDown()
{
Dibuja(' ');
fi++;
Dibuja('*');
}
MoverLeft()
{
Dibuja(' ');
co--;
Dibuja('*');
}
MoverRight()
{
Dibuja(' ');
co++;
Dibuja('*');
}
};
mover(cEjemplo *d,char donde);
main()
{
cEjemplo c1(5,5,5,5),c2(5,12,5,5),c3(5,19,5,5),*p;
do{
gotoxy(20,20);
cout << "Seleccione ventana : ";
ventana = getche();
switch(ventana)
{
case '1': p = &c1;break;
case '2': p = &c2;break;
case '3': p = &c3;break;
}
do{
gotoxy(20,21);
cout << "Seleccione Movimiento 0 = Fin 9 Cambiar caracter : ";
salir = getch();
if(salir != 57)
mover(p,salir);
}while(salir != 48 && salir != 57);
fflush(stdin);
}while(salir != 48);
return 0;
}
mover(cEjemplo *d,char donde)
{
switch(donde)
{
case '8' : d->MoverUp(); break;
case '2' : d->MoverDown();break;
case '4' : d->MoverLeft();break;
case '6' : d->MoverRight();break;
}
}
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
int ventana,salir;
class cEjemplo
{
private:
int fi;
int co;
int la;
int al;
public:
cEjemplo(int a=0,int b=0,int c=0,int d=0)
{
fi = a;
co = b;
la = c;
al = d;
Dibuja('*');
}
Dibuja(char f)
{
int i;
gotoxy(co,fi);
for(i=0;i<=la;i++)
cout << f;
gotoxy(co,fi+al);
for(i=0;i<= la;i++)
cout << f;
gotoxy(co,fi+i);
for(i=0;i<= al;i++)
{
gotoxy(co,fi+i);
cout << f;
gotoxy(co+la,fi+i);
cout << f;
}
}
MoverUp()
{
Dibuja(' ');
fi--;
Dibuja('*');
}
MoverDown()
{
Dibuja(' ');
fi++;
Dibuja('*');
}
MoverLeft()
{
Dibuja(' ');
co--;
Dibuja('*');
}
MoverRight()
{
Dibuja(' ');
co++;
Dibuja('*');
}
};
mover(cEjemplo *d,char donde);
main()
{
cEjemplo c1(5,5,5,5),c2(5,12,5,5),c3(5,19,5,5),*p;
do{
gotoxy(20,20);
cout << "Seleccione ventana : ";
ventana = getche();
switch(ventana)
{
case '1': p = &c1;break;
case '2': p = &c2;break;
case '3': p = &c3;break;
}
do{
gotoxy(20,21);
cout << "Seleccione Movimiento 0 = Fin 9 Cambiar caracter : ";
salir = getch();
if(salir != 57)
mover(p,salir);
}while(salir != 48 && salir != 57);
fflush(stdin);
}while(salir != 48);
return 0;
}
mover(cEjemplo *d,char donde)
{
switch(donde)
{
case '8' : d->MoverUp(); break;
case '2' : d->MoverDown();break;
case '4' : d->MoverLeft();break;
case '6' : d->MoverRight();break;
}
}
Quiero ayudarte, pero para ello necesito que me expliques detallamente que es lo que tu programa quiere hacer, descifrarlo del codigo me llevara demasiado tiempo.
Lo que hace el programa es Crear un objeto de tipo cVentana en tres lugares diferentes de la pantalla, con las teclas 1,2,3 yo puedo seleccionar una de las ventanas y con los numeros 4izquierda,6derecha,8arriba,2abajo puedo mover la ventana seleccionada. Si al mover la ventana pasa por sobre una de las otras dos, estas no deben borrarse.
Supongo que cuando mueves el objeto solo lo refrescas a el, y los demás objetos se quedan estáticos sin recibir ninguna otra trazada, una solución sería que cuando movieras un circulo no solo volvieras a dibujar este si no que tendrías que hacerlo con todos para que no se borren cuando un circulo pasa sobre ellos, ya que los pixeles que uno uso el otro no los vuelve a recuperar.
Espero te sirva.
Espero te sirva.
