figuras en c++ objeto
hola
hice este programa con 3 cuadrados a los cuales les doy movimiento,pero como puedo hacer para crear un nuevo cuadrado con solo crearlo en el constructor, sin modificar nada más en el main.
gracias
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
class cventana
{
private:
int fila;
int columna;
int alto;
int largo;
public:
cventana(int f,int c,int a,int l)
{
fila = f;
columna = c;
alto=a;
largo=l;
dibuja(\'*\');
}
dibuja(char t)
{
int i;
gotoxy(columna,fila);
for(i=0;i<=largo;i++)
cout << t;
gotoxy(columna,fila+alto);
for(i=0;i<=largo;i++)
cout << t;
gotoxy(columna,fila+i);
for(i=0;i<= alto;i++)
{
gotoxy(columna,fila+i);
cout << t;
gotoxy(columna +largo,fila+i);
cout << t;
} return 0;}
arriba()
{
dibuja(\' \');
fila=fila-1;
dibuja(\'*\');
return 0;
}
izquierda()
{
dibuja(\' \');
columna=columna+1;
dibuja(\'*\');
return 0;
}
derecha()
{
dibuja(\' \');
columna=columna-1;
dibuja(\'*\');
return 0;
}
abajo()
{
dibuja(\' \');
fila=fila+1;
dibuja(\'*\');
return 0;
}
construye(int f,int c, int l, int a)
{
char t;
if(f < 1 || f >25) return 0;
if(c < 1 || c >80) return 0;
fila=f;
columna=c;
largo=l;
alto=a;
dibuja (\'*\');
return 0;
}};
mover(cventana *m,char movimiento);
Crear(cventana *d);
main()
{
cventana ventana1(5,5,5,10),ventana2(5,19,5,10),ventana3(5,
34,5,10),*p;
int ventana,terminar;
do{
gotoxy(20,20);
cout << "elegir ventana(1-2-3) : ";
ventana = getche();
switch(ventana)
{
case \'1\': p = &ventana1;break;
case \'2\': p = &ventana2;break;
case \'3\': p = &ventana3;break;
}
do{
if(ventana!=\'1\')
Crear(&ventana1);Crear(&ventana2);Crear(&ventana3);
if(ventana!=\'2\')
Crear(&ventana3);Crear(&ventana1);Crear(&ventana2);
if(ventana!=\'3\')
Crear(&ventana1);Crear(&ventana2);Crear(&ventana3);
gotoxy(20,19);cout << "(8)arriba|(4)izquierda | (6)derecha | (2)abajo";
gotoxy(20,21);cout<<"cambiar ventana letra (C)";
gotoxy(20,22);cout<<"para salir tecla escape";
terminar = getch();
if(terminar != 67)
mover(p,terminar);
}while(terminar != 27 && terminar != 67);
}while(terminar != 27); abort();
return 0;
}
mover(cventana *m,char movimiento)
{
switch(movimiento)
{
case \'8\' : m->arriba(); break;
case \'2\' : m->abajo();break;
case \'4\' : m->derecha(); break;
case \'6\' : m->izquierda();break;
}
return 0;
}
Crear(cventana *d)
{
d->dibuja(\'*\');
return 0;
}
hice este programa con 3 cuadrados a los cuales les doy movimiento,pero como puedo hacer para crear un nuevo cuadrado con solo crearlo en el constructor, sin modificar nada más en el main.
gracias
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
class cventana
{
private:
int fila;
int columna;
int alto;
int largo;
public:
cventana(int f,int c,int a,int l)
{
fila = f;
columna = c;
alto=a;
largo=l;
dibuja(\'*\');
}
dibuja(char t)
{
int i;
gotoxy(columna,fila);
for(i=0;i<=largo;i++)
cout << t;
gotoxy(columna,fila+alto);
for(i=0;i<=largo;i++)
cout << t;
gotoxy(columna,fila+i);
for(i=0;i<= alto;i++)
{
gotoxy(columna,fila+i);
cout << t;
gotoxy(columna +largo,fila+i);
cout << t;
} return 0;}
arriba()
{
dibuja(\' \');
fila=fila-1;
dibuja(\'*\');
return 0;
}
izquierda()
{
dibuja(\' \');
columna=columna+1;
dibuja(\'*\');
return 0;
}
derecha()
{
dibuja(\' \');
columna=columna-1;
dibuja(\'*\');
return 0;
}
abajo()
{
dibuja(\' \');
fila=fila+1;
dibuja(\'*\');
return 0;
}
construye(int f,int c, int l, int a)
{
char t;
if(f < 1 || f >25) return 0;
if(c < 1 || c >80) return 0;
fila=f;
columna=c;
largo=l;
alto=a;
dibuja (\'*\');
return 0;
}};
mover(cventana *m,char movimiento);
Crear(cventana *d);
main()
{
cventana ventana1(5,5,5,10),ventana2(5,19,5,10),ventana3(5,
34,5,10),*p;
int ventana,terminar;
do{
gotoxy(20,20);
cout << "elegir ventana(1-2-3) : ";
ventana = getche();
switch(ventana)
{
case \'1\': p = &ventana1;break;
case \'2\': p = &ventana2;break;
case \'3\': p = &ventana3;break;
}
do{
if(ventana!=\'1\')
Crear(&ventana1);Crear(&ventana2);Crear(&ventana3);
if(ventana!=\'2\')
Crear(&ventana3);Crear(&ventana1);Crear(&ventana2);
if(ventana!=\'3\')
Crear(&ventana1);Crear(&ventana2);Crear(&ventana3);
gotoxy(20,19);cout << "(8)arriba|(4)izquierda | (6)derecha | (2)abajo";
gotoxy(20,21);cout<<"cambiar ventana letra (C)";
gotoxy(20,22);cout<<"para salir tecla escape";
terminar = getch();
if(terminar != 67)
mover(p,terminar);
}while(terminar != 27 && terminar != 67);
}while(terminar != 27); abort();
return 0;
}
mover(cventana *m,char movimiento)
{
switch(movimiento)
{
case \'8\' : m->arriba(); break;
case \'2\' : m->abajo();break;
case \'4\' : m->derecha(); break;
case \'6\' : m->izquierda();break;
}
return 0;
}
Crear(cventana *d)
{
d->dibuja(\'*\');
return 0;
}
Yo tengo una tarea demasiado parecida... seremos compañeros de curso ? jajaja
