Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - julianbesso1

#1
Volviendo al tema del post anterior, estoy a punto de terminar el ejercicio planteado (Insaniquarium).

El único problema es el siguiente:

Hay un método llamado Sentido_Pescado que es el que determina el rebote con los bordes y la conformación del cuerpo de los pescados para su posterior dibujo en pantalla. El método recibe un int como parametro que es la orientación (1=mira hacia la izq/2=mira hacia la derecha)

Lo correcto sería tener un método escrito de esta manera:


Código (cpp) [Seleccionar]
void Pescado::Sentido_Pescado(){

if(sentido==1) sentido=2;
if(sentido==2) sentido=1;

}


Pero al implementarlo, no lleva a cabo el cambio de sentido. Desconozco el motivo.

Este es el código completo:


Código (cpp) [Seleccionar]
#include <iostream>
#include <cstdlib>
#include <conio2.h>
#include <ctime>

using namespace std;

const int bizq=6;
const int bder=75;
const int bsup=6;
const int binf=19;

class Pescado{

protected:
int velocidad;
int color;
int sentido;

int pos_x;
int pos_y;

int prev_x;
int prev_y;

int dir_x;
int dir_y;

int mov_vertical;

clock_t t_inicial;              
clock_t t_final;

char array_b[6][12];
char array_s[10][4];

public:

void Mover_Pescado();
void Sentido_Pescado(int x);

};
class Pescado1 : public Pescado{

public:

Pescado1(int x, int y);
void Borrar_Pescado1();
void Cuerpo_Pescado1();
void Dibujar_Pescado1();

};

class Pescado2 : public Pescado{

public:

Pescado2(int x, int y);
void Borrar_Pescado2();
void Cuerpo_Pescado2();
void Dibujar_Pescado2();
void Color_Pescado2();

};

void Pescado::Mover_Pescado(){

prev_x = pos_x;
prev_y = pos_y;

t_final = clock();

if((velocidad + t_inicial) < t_final){

int mov_vertical = rand()%2+1;  // 1-arriba 2-abajo

if(sentido==1) pos_x-=dir_x;
if(sentido==2) pos_x+=dir_x;
if(mov_vertical==1) pos_y-=dir_y;
if(mov_vertical==2) pos_y+=dir_y;

if(pos_x < bizq){
Pescado::Sentido_Pescado(2);
dir_x = -dir_x;
pos_x = bizq;

}
if(pos_x > bder-12){
Pescado::Sentido_Pescado(1);
dir_x = -dir_x;
pos_x = bder-12;
}
if(pos_y < bsup){
dir_y = -dir_y;
pos_y = bsup;
}
if(pos_y > binf){
dir_y = -dir_y;
pos_y = binf;
}

t_inicial = t_final;

}
}

void Pescado::Sentido_Pescado(int x){

if(x==1) sentido=1;
if(x==2) sentido=2;

}

Pescado1::Pescado1(int x, int y){

velocidad=x;
color=y;

dir_x=1;
dir_y=1;

pos_x = rand()%61+10;
pos_y = rand()%6+10;

sentido = rand() % 2+1;  //  mira izq/ mira der   

t_inicial = clock();

}

void Pescado1::Borrar_Pescado1(){

for(int k=0;k<6;k++){
for(int p=0;p<12;p++){
putchxy(prev_x+p,prev_y+k,' ');
}
}

}

void Pescado1::Cuerpo_Pescado1(){

if(sentido==1){  //pescado mirando izquierda

array_b[0][0]=32;array_b[0][1]=32;array_b[0][2]=32;array_b[0][3]=32;array_b[0][4]=32;array_b[0][5]=32;array_b[0][6]=95;array_b[0][7]=44;array_b[0][8]=32;array_b[0][9]=32;array_b[0][10]=32;array_b[0][11]=32;
array_b[1][0]=32;array_b[1][1]=32;array_b[1][2]=32;array_b[1][3]=32;array_b[1][4]=95;array_b[1][5]=47;array_b[1][6]=123;array_b[1][7]=95;array_b[1][8]=32;array_b[1][9]=32;array_b[1][10]=32;array_b[1][11]=32;
array_b[2][0]=32;array_b[2][1]=46;array_b[2][2]=39;array_b[2][3]=32;array_b[2][4]=32;array_b[2][5]=32;array_b[2][6]=32;array_b[2][7]=39;array_b[2][8]=46;array_b[2][9]=47;array_b[2][10]=180;array_b[2][11]=62;
array_b[3][0]=47;array_b[3][1]=32;array_b[3][2]=101;array_b[3][3]=32;array_b[3][4]=40;array_b[3][5]=40;array_b[3][6]=32;array_b[3][7]=32;array_b[3][8]=32;array_b[3][9]=61;array_b[3][10]=60;array_b[3][11]=32;
array_b[4][0]=32;array_b[4][1]=39;array_b[4][2]=46;array_b[4][3]=44;array_b[4][4]=95;array_b[4][5]=95;array_b[4][6]=44;array_b[4][7]=46;array_b[4][8]=39;array_b[4][9]=92;array_b[4][10]=95;array_b[4][11]=62;
array_b[5][0]=32;array_b[5][1]=32;array_b[5][2]=32;array_b[5][3]=32;array_b[5][4]=32;array_b[5][5]=32;array_b[5][6]=92;array_b[5][7]=41;array_b[5][8]=32;array_b[5][9]=32;array_b[5][10]=32;array_b[5][11]=32;

}
if(sentido==2){  //pescado mirando derecha

array_b[0][0]=32;array_b[0][1]=32;array_b[0][2]=32;array_b[0][3]=32;array_b[0][4]=44;array_b[0][5]=95;array_b[0][6]=32;array_b[0][7]=32;array_b[0][8]=32;array_b[0][9]=32;array_b[0][10]=32;array_b[0][11]=32;
array_b[1][0]=32;array_b[1][1]=32;array_b[1][2]=32;array_b[1][3]=32;array_b[1][4]=95;array_b[1][5]=125;array_b[1][6]=92;array_b[1][7]=95;array_b[1][8]=32;array_b[1][9]=32;array_b[1][10]=32;array_b[1][11]=32;
array_b[2][0]=60;array_b[2][1]=96;array_b[2][2]=92;array_b[2][3]=46;array_b[2][4]=39;array_b[2][5]=32;array_b[2][6]=32;array_b[2][7]=32;array_b[2][8]=32;array_b[2][9]=39;array_b[2][10]=46;array_b[2][11]=32;
array_b[3][0]=32;array_b[3][1]=62;array_b[3][2]=61;array_b[3][3]=32;array_b[3][4]=32;array_b[3][5]=32;array_b[3][6]=41;array_b[3][7]=41;array_b[3][8]=32;array_b[3][9]=101;array_b[3][10]=32;array_b[3][11]=92;
array_b[4][0]=60;array_b[4][1]=95;array_b[4][2]=47;array_b[4][3]=39;array_b[4][4]=46;array_b[4][5]=44;array_b[4][6]=95;array_b[4][7]=95;array_b[4][8]=44;array_b[4][9]=46;array_b[4][10]=39;array_b[4][11]=32;
array_b[5][0]=32;array_b[5][1]=32;array_b[5][2]=32;array_b[5][3]=32;array_b[5][4]=40;array_b[5][5]=47;array_b[5][6]=32;array_b[5][7]=32;array_b[5][8]=32;array_b[5][9]=32;array_b[5][10]=32;array_b[5][11]=32;

}

}

void Pescado1::Dibujar_Pescado1(){

Pescado1::Borrar_Pescado1();
Pescado1::Cuerpo_Pescado1();

for(int i=0; i<6; i++){
for(int j=0; j<12; j++){
textcolor(color);
putchxy(pos_x+j,pos_y+i,array_b[i][j]);
}
}

}

Pescado2::Pescado2(int x, int y){

velocidad=x;
color=y;

dir_x=1;
dir_y=1;

pos_x = rand()%61+10;
pos_y = rand()%6+10;

sentido = rand() % 2+1;  //  mira izq/ mira der   

t_inicial = clock();

}

void Pescado2::Borrar_Pescado2(){

for(int k=0;k<10;k++){
for(int p=0;p<4;p++){
putchxy(prev_x+k,prev_y+p,' ');
}
}

}

void Pescado2::Cuerpo_Pescado2(){

if(sentido==1){  //pescado mirando izquierda

array_s[0][0]=0;array_s[0][1]=0;array_s[0][2]=47;array_s[0][3]=39;
array_s[1][0]=0;array_s[1][1]=46;array_s[1][2]=111;array_s[1][3]=45;
array_s[2][0]=0;array_s[2][1]=45;array_s[2][2]=0;array_s[2][3]=45;
array_s[3][0]=47;array_s[3][1]=0;array_s[3][2]=41;array_s[3][3]=39;
array_s[4][0]=124;array_s[4][1]=0;array_s[4][2]=41;array_s[4][3]=39;
array_s[5][0]=0;array_s[5][1]=45;array_s[5][2]=0;array_s[5][3]=39;
array_s[6][0]=0;array_s[6][1]=46;array_s[6][2]=0;array_s[6][3]=39;
array_s[7][0]=0;array_s[7][1]=0;array_s[7][2]=92;array_s[7][3]=39;
array_s[8][0]=0;array_s[8][1]=0;array_s[8][2]=47;array_s[8][3]=92;
array_s[9][0]=0;array_s[9][1]=0;array_s[9][2]=40;array_s[9][3]=40;

}
if(sentido==2){  //pescado mirando derecha

array_s[0][0]=0;array_s[0][1]=0;array_s[0][2]=41;array_s[0][3]=41;
array_s[1][0]=0;array_s[1][1]=0;array_s[1][2]=92;array_s[1][3]=47;
array_s[2][0]=0;array_s[2][1]=0;array_s[2][2]=47;array_s[2][3]=39;
array_s[3][0]=0;array_s[3][1]=46;array_s[3][2]=0;array_s[3][3]=39;
array_s[4][0]=0;array_s[4][1]=45;array_s[4][2]=0;array_s[4][3]=39;
array_s[5][0]=124;array_s[5][1]=0;array_s[5][2]=40;array_s[5][3]=39;
array_s[6][0]=92;array_s[6][1]=0;array_s[6][2]=40;array_s[6][3]=39;
array_s[7][0]=0;array_s[7][1]=45;array_s[7][2]=0;array_s[7][3]=45;
array_s[8][0]=0;array_s[8][1]=46;array_s[8][2]=111;array_s[8][3]=45;
array_s[9][0]=0;array_s[9][1]=0;array_s[9][2]=92;array_s[9][3]=39;

}



}

void Pescado2::Dibujar_Pescado2(){

Pescado2::Borrar_Pescado2();
Pescado2::Cuerpo_Pescado2();

for(int i=0; i<10; i++){
for(int j=0; j<4; j++){
textcolor(color);
putchxy(pos_x+i,pos_y+j,array_s[i][j]);
}
}


}

void Pescado2::Color_Pescado2(){

if(color==15) color=1;
else color+=1;

}

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

_setcursortype(_NOCURSOR);

srand(time(NULL));

Pescado1 Rojo(50,12);
Pescado1 Verde(80,10);

Pescado2 Amarillo(60,14);
Pescado2 Cyan(125,11);

while(true){

if(kbhit()) {
int tecla=getch();
switch(tecla)
{

case 49:
Rojo.Sentido_Pescado(1);
Verde.Sentido_Pescado(1);
break;
case 50:
Rojo.Sentido_Pescado(2);
Verde.Sentido_Pescado(2);
break;
case 51:
Amarillo.Color_Pescado2();
Cyan.Color_Pescado2();
break;


}
}

Rojo.Mover_Pescado();
Rojo.Dibujar_Pescado1();
Verde.Mover_Pescado();
Verde.Dibujar_Pescado1();
Amarillo.Mover_Pescado();
Amarillo.Dibujar_Pescado2();
Cyan.Mover_Pescado();
Cyan.Dibujar_Pescado2();

}

return 0;

}


Son mis primeras clases acerca de Clases, Herencia y otros, así que tendré en cuenta cualquier tipo de sugerencias. Gracias!
#2
Programación C/C++ / Dibujar con putchxy
23 Agosto 2014, 23:26 PM
Hola gente. Vengo con 2 dudas que surgieron en un ejercicio.
Tenía que hacer algo parecido al insaniquarium (solo las animaciones de los pescaditos)

Ya tengo el código correspondiente al movimiento, pero a la hora de mostrarlo en pantalla, obtengo un resultado extraño.

Este es el cuerpo del pescado mirando hacia la izquierda: (por mostar un caso)


Código (cpp) [Seleccionar]

array_b[0][0]=32;array_b[0][1]=32;array_b[0][2]=32;array_b[0][3]=32;array_b[0][4]=32;array_b[0][5]=32;array_b[0][6]=95;array_b[0][7]=44;array_b[0][8]=13;array_b[0][9]=10;array_b[0][10]=32;array_b[0][11]=32;
array_b[1][0]=32;array_b[1][1]=32;array_b[1][2]=95;array_b[1][3]=47;array_b[1][4]=123;array_b[1][5]=95;array_b[1][6]=32;array_b[1][7]=32;array_b[1][8]=13;array_b[1][9]=10;array_b[1][10]=32;array_b[1][11]=46;
array_b[2][0]=96;array_b[2][1]=32;array_b[2][2]=32;array_b[2][3]=32;array_b[2][4]=32;array_b[2][5]=96;array_b[2][6]=46;array_b[2][7]=47;array_b[2][8]=39;array_b[2][9]=62;array_b[2][10]=32;array_b[2][11]=32;
array_b[3][0]=32;array_b[3][1]=13;array_b[3][2]=10;array_b[3][3]=47;array_b[3][4]=32;array_b[3][5]=101;array_b[3][6]=32;array_b[3][7]=40;array_b[3][8]=40;array_b[3][9]=32;array_b[3][10]=32;array_b[3][11]=32;
array_b[4][0]=61;array_b[4][1]=60;array_b[4][2]=32;array_b[4][3]=13;array_b[4][4]=10;array_b[4][5]=32;array_b[4][6]=96;array_b[4][7]=46;array_b[4][8]=44;array_b[4][9]=95;array_b[4][10]=95;array_b[4][11]=44;
array_b[5][0]=46;array_b[5][1]=39;array_b[5][2]=92;array_b[5][3]=95;array_b[5][4]=62;array_b[5][5]=32;array_b[5][6]=32;array_b[5][7]=13;array_b[5][8]=10;array_b[5][9]=32;array_b[5][10]=32;array_b[5][11]=32;
array_b[6][0]=32;array_b[6][1]=32;array_b[6][2]=32;array_b[6][3]=92;array_b[6][4]=41;array_b[6][5]=32;array_b[6][6]=32;array_b[6][7]=32;array_b[6][8]=32;array_b[6][9]=32;array_b[6][10]=32;array_b[6][11]=32;
array_b[7][0]=32;array_b[7][1]=32;array_b[7][2]=32;array_b[7][3]=32;array_b[7][4]=32;array_b[7][5]=32;array_b[7][6]=32;array_b[7][7]=32;array_b[7][8]=32;array_b[7][9]=32;array_b[7][10]=32;array_b[7][11]=32;


Y lo dibujo de esta manera:

Código (cpp) [Seleccionar]
void Pescado1::Dibujar_Pescado1(){

Pescado1::Borrar_Pescado1();
Pescado1::Cuerpo_Pescado1();

for(int i=0; i<8; i++){
for(int j=0; j<12; j++){
putchxy(pos_x+j,pos_y+i,array_b[i][j]);
}
}

}


Creo que el código está bien, pero el pescado sale desfigurado. Pareciera como que se corren algunos elementos o no se imprime la cantidad correcta de espacios.

La otra pregunta que tenía era si existía alguna manera de evitar tanto parpadeo al borrar y dibujar el pescado en la nueva posición.

Este es el método que utilizo para borrar:

Código (cpp) [Seleccionar]
void Pescado1::Borrar_Pescado1(){

for(int k=0;k<8;k++){
for(int p=0;p<12;p++){
putchxy(prev_x+p,prev_y+k,' ');
}
}

}


Se agradece de antemano. Saludos!
#3
Hola a todos. Nuevamente con un problema. Me pidieron que realice una sopa de letras que brinde la posibilidad de guardar la partida para retomar en otro momento. Es aquí donde fallo. No estoy muy seguro del código correspondiente a write y read (líneas 203 y 251 respectivamente)

Código (cpp) [Seleccionar]
#include <iostream>
#include <fstream>
#include <string.h>
#include <stdio.h>
#include <conio2.h>
#include <ctime>
#include <stdlib.h>
#include <windows.h>
#include <ctype.h>

using namespace std;

void imprimir_sopa(char x[20][20]);
void imprimir_indices();
void imprimir_encontradas(int x[5][4], char y[5][21]);
void marcar_palabra(int x[5][4], char y[5][21]);
void victoria(char w[20][20], int x[5][4], char y[5][21]);

int main(int argc, char *argv[]) {
   
   int cont=0;   
   char c;
   
   int lista_found=0;
   char lista[5][21];
   bool s;
   
   char sopa[20][20];  //declaración e inicialización los elementos de la sopa con '?'
   
   int sopa_found=0, posx, posy, dir1, registro[5][3];  //contador de palabras encontradas, posiciones X e Y de las iniciales, dir1=hor/ver/diag, 
   bool t;                                      //registro de TODAS las palabras de la lista
   
   char alphabet[27]={"ABCDEFGHIJKLMNOPQRSTUVWXYZ"};
   
   int found[5][4];  //declaración e inicialización del registro de las palabras que son encontradas (posx, posy, dir1, strlen)
   
   int d, dir2, palabras_found=0;
   int posx2, posy2;
   
   char g;   
   
   while(g!='3'){
     
      textcolor(LIGHTRED);
      cout<<"BIENVENIDO A LA SOPA DE LETRAS"<<endl<<endl;
      textcolor(WHITE);
      cout<<"Elija una opci\242n"<<endl<<endl;
      cout<<"1) Partida nueva"<<endl;
      cout<<"2) Continuar con la \243ltima partida guardada"<<endl;
      cout<<"3) Salir"<<endl<<endl;
     
      g=getch();
     
      if(g=='1'){         
         
         ifstream entrada("listado de palabras.txt", ios::in);
         
         while (entrada.good()){  //leer cantidad de veces que aparece '\n' en el txt     
            c = entrada.get();
            if (c=='\n')cont++;
         }     
         entrada.close(); //si se accede manualmente al archivo .txt se debe ingresar la última palabra de la lista acompañado de \n.
         //caso contrario el código detectará una palabra de menos
         char** q=new char*[cont];
         
         for(int f=0; f<cont; f++){
            q[f]=new char[21];     
         }
         
         entrada.open("listado de palabras.txt", ios::in);
         
         for(int g=0; g<cont; g++){
            entrada.getline(q[g], 20);
            strupr(q[g]);
         }
         
         entrada.close();         
         
         srand(time(NULL));
         
         while(lista_found<5){  //asignación de las palabras aleatorias (5)
            s=true;
            int a=rand()%cont;
            for(int j=0; j<5; j++){
               if(strcmp(q[a],lista[j])==0){
                  s=false;
                  break;
               }
            }     
            if(s==true){
               strcpy(lista[lista_found],q[a]);
               lista_found++;
            }
            Sleep(1000);
         }
         
         for(int r=0; r<cont; r++){
            delete[] q[r];   
         }
         
         delete[] q;         
         
         for(int k=0; k<20; k++){
            for(int l=0; l<20; l++){
               sopa[k][l]='?';
            }   
         }         
         
         while(sopa_found<5){  //inserción de palabras
           
            posx=rand()%20;
            posy=rand()%20;
            dir1=rand()%3+1;
           
            if(dir1==1){  //horizontal
               if(posy+strlen(lista[sopa_found])<=20){
                  t=true;
                  for(int m=posy; m<posy+strlen(lista[sopa_found]); m++){
                     if(sopa[posx][m]!='?'){
                        t=false;
                        break;
                     }               
                  }
                  if(t==true){
                     registro[sopa_found][0]=posy+1;
                     registro[sopa_found][1]=posx+1;
                     registro[sopa_found][2]=dir1;
                     for(int n=0; n<strlen(lista[sopa_found]); n++){
                        sopa[posx][posy]=lista[sopa_found][n];
                        posy++;
                     }           
                     sopa_found++;
                  }
               }
            }
            if(dir1==2){  //vertical
               if(posx+strlen(lista[sopa_found])<=20){
                  t=true;
                  for(int o=posx; o<posx+strlen(lista[sopa_found]); o++){
                     if(sopa

    [posy]!='?'){

                        t=false;
                        break;
                     }               
                  }
                  if(t==true){
                     registro[sopa_found][0]=posy+1;
                     registro[sopa_found][1]=posx+1;
                     registro[sopa_found][2]=dir1;
                     for(int p=0; p<strlen(lista[sopa_found]); p++){
                        sopa[posx][posy]=lista[sopa_found][p];
                        posx++;
                     }
                     sopa_found++;
                  }
               }         
            }
            if(dir1==3){  //diagonal
               if(posx+strlen(lista[sopa_found])<=20&&posy+strlen(lista[sopa_found])<=20){
                  t=true;
                  for(int q=posx, r=posy; q<posx+strlen(lista[sopa_found]); q++, r++){
                     if(sopa[q][r]!='?'){
                        t=false;
                        break;
                     }               
                  }
                  if(t==true){
                     registro[sopa_found][0]=posy+1;
                     registro[sopa_found][1]=posx+1;
                     registro[sopa_found][2]=dir1;
                     for(int s=posx, t=posy, u=0; s<posx+strlen(lista[sopa_found]); s++, t++, u++){
                        sopa[t]=lista[sopa_found];
                     }
                     sopa_found++;
                  }
               }
            }
         }         
         
         for(int v=0; v<20; v++){  //relleno de los elementos restantes
            for(int w=0; w<20; w++){
               if(sopa[v][w]=='?'){
                  int a=rand()%26;
                  sopa[v][w] = alphabet[a];
               }
            }
         }     
         
         for(int x=0; x<5; x++){
            for(int y=0; y<4; y++){
               if(y!=3)found

    [y]=100;

               else found

    [y]=strlen(lista
    );

            }
         }
         
      }
     
      if(g=='1'||g=='2'){
         
         fstream arch;
         
         if(g=='2'){
           
            arch.open("sopa saved.dat", ios::binary);
           
            arch.read(sopa[0], 20*20*sizeof(sopa));
           
            arch.read((char *)found[0], 5*4*sizeof(found));
           
            arch.read(lista[0], 5*21*sizeof(lista));
           
            arch.read((char *)palabras_found,sizeof(palabras_found));
           
            arch.close();
           
         }
         
         clrscr();   
         
         while(palabras_found<5){
           
            int w;
           
            clrscr();
           
            textcolor(LIGHTRED);
            gotoxy(6,1);
            cout<<"BIENVENIDO A LA SOPA DE LETRAS"<<endl<<endl;
           
            imprimir_sopa(sopa);
            imprimir_indices();
            imprimir_encontradas(found, lista);
            marcar_palabra(found, lista);
           
            gotoxy(1,26);
            cout<<"Tienes que encontrar las siguientes palabras:"<<endl<<endl;
           
            for(int i=0; i<5; i++){
               cout<<i+1<<" - ";
               puts(lista);
            }
           
            cout<<"\n(Nota: Las dimensiones de la sopa son 20x20)"<<endl<<endl;     
            cout<<"Buscar palabra No.: ";
            textcolor(YELLOW);
            cout<<"(Save

    Exit [6]) ";

            textcolor(WHITE);
            cin>>d;
           
            if(d==0){
               
               arch.open("sopa saved.dat", ios::binary);
               
               arch.write(sopa[0], 20*20*sizeof(sopa));
               
               arch.write((char *)found[0], 5*4*sizeof(found));
               
               arch.write(lista[0], 5*21*sizeof(lista));
               
               arch.write((char *)palabras_found,sizeof(palabras_found));
               
               arch.close();
               
               gotoxy(1,36);
               textcolor(LIGHTMAGENTA);
               cout<<"(Partida guardada)                       ";
               //textcolor(WHITE);
               Sleep(2000);
               clrscr();     
               
            }   
            if(d!=0){
               
               if(d==6){
                  clrscr();
                  break;
               }
               
               else{
                  cout<<endl;
                  cout<<"Coordenada 'X' de la inicial: ";
                  cin>>posx2;;
                  cout<<"Coordenada 'Y' de la inicial: ";
                  cin>>posy2;
                  cout<<"Horizontal [1] Vertical [2] Diagonal [3] ? ";
                  cin>>dir2;
                 
                  w=d-1;     
                 
                  if(posx2==registro[w][0]&&posy2==registro[w][1]&&dir2==registro[w][2]){
                     textcolor(LIGHTGREEN);
                     cout<<"\nExcelente! La has adivinado";
                     for(int i=0; i<3; i++){
                        found[w]=registro[w];
                     }
                     Sleep(2000);
                     marcar_palabra(found, lista);
                     palabras_found++;
                     textcolor(WHITE);
                  }
                  else {
                     textcolor(LIGHTRED);
                     cout<<"\nIncorrecto... Intenta otra vez!";
                     Sleep(2000);
                     textcolor(WHITE);
                  }
                 
               }
            }
         }
         
         if(palabras_found==4) victoria(sopa, found, lista);           
         
      }     
     
   }
   
   clrscr();
   cout<<"FIN";
   
   return 0;
   
   
}

void imprimir_sopa(char x[20][20]){
   
   textcolor(WHITE);
   
   for(int i=0; i<20; i++){
      for(int j=0; j<20; j++){
         cout<<" ";
         cout<<x[j];
         if(j==19) cout<<endl;
      }   
   }
}

void imprimir_indices(){
   
   textcolor(YELLOW);
   
   gotoxy(2,24);  //eje X
   for(int i=0; i<20; i++){
      cout<<i+1;
      if(i<9) cout<<" ";
   }
   gotoxy(43,3);  //eje Y (puede omitirse)
   int h=0;
   for(int j=0; j<20; j++){
      gotoxy(43,3+h);
      cout<<j+1;
      cout<<endl;     
      h++;
   }
   
   textcolor(WHITE);
   
}

void imprimir_encontradas(int x[5][4], char y[5][21]){
   
   textcolor(LIGHTMAGENTA);
   
   for(int i=0; i<5; i++){
     
      if(x

    !=100){

         
         gotoxy((x

    )*2,x[1]+2);

         
         if(x[2]==1){  //horizontal
            for(int t=0; t<x[3]; t++){
               cout<<y[t];
               cout<<" ";
            }     
         }
         if(x[2]==2){  //vertical
            int h=1;
            for(int t=0; t<x[3]; t++){
               cout<<y[t];
               gotoxy((x

    )*2,x[1]+2+h);

               h++;
            }     
         }
         if(x[2]==3){  //diagonal
            int h=1, k=2;
            for(int t=0; t<x[3]; t++){
               cout<<y[t];
               gotoxy((x

    )*2+k,x[1]+2+h);

               h++; k+=2;
               
            }     
         }
         
      }
   }
   
   textcolor(WHITE);
}

void marcar_palabra(int x[5][4], char y[5][21]){ 
   
   textcolor(LIGHTMAGENTA);
   
   for(int i=0; i<5; i++){
      if(x

    !=100){

         gotoxy(6+x[3],28+i);
         cout<<"X";
      }
   }
   
   textcolor(WHITE);
}

void victoria(char w[20][20], int x[5][4], char y[5][21]){
   
   clrscr();
   
   gotoxy(6,1);
   textcolor(LIGHTRED);
   cout<<"BIENVENIDO A LA SOPA DE LETRAS"<<endl<<endl;
   
   imprimir_sopa(w);
   imprimir_encontradas(x, y);
   
   gotoxy(3,24);
   textcolor(LIGHTGREEN);
   cout<<"Felicitaciones! Has adivinado todas!"<<endl;
   textcolor(WHITE);
   
}


No entiendo por qué aparecen lineas horizontales dentro del código... Qué debo hacer para hacerlo visible? Gracias de antemano. Saludos!




Ahora si :)
#4
Buenas! Acabo de encontrar este foro y pienso que seguro podrán ayudarme con mi problema:

Tengo que resolver los sig ejercicios...

A) Realice un programa para leer un arreglo lineal de N elementos conteniendo palabras de hasta 12 caracteres. Luego el programa deberá informar separadamente: a) El primero de la lista de acuerdo a un orden alfabético. b) Los elementos del arreglo que ocupan las posiciones pares. c) Las palabras que comienzan con la sílaba 'mar' .

B) Ejercicio 6.5. Escriba un programa que permita ingresar una lista de apellidos y nombres
de N personas (apellido y nombre se asignan a una sola variable). El programa debe mostrar las direcciones de correo electrónicos (emails) de ellos. El dominio asignado para ellos para el email
es: gmail.com, y el nombre de usuario se forma con la inicial del nombre y el apellido. Ejemplo: Si el dato es Gomez Nicolas, debe obtenerse: ngomez@gmail.com

...pero no cuento con ningún tipo de teoría acerca de punteros y memoria dinámica. La verdad estoy algo perdido. Me gustaría que me recomienden material para aprender de cero estos conceptos.

Desde ya, muchas gracias. Saludos!