problema em programa(urgente)!!!

Mas mete aqui a parte que está a dar erro. Ou não sabes qual é essa parte? Ou destrocaste assim 800 linhas duma vez só à patrão e lembraste-te no fim que podia dar erro?
 
o erro é:nova_posicao identifier not found
numa linha que é: aux=nova_posicao(a,b,m,&x,&y);


Código:
void deslocarB(){
    int x,y,aux,v=1,ptotalB=0,contador=0,a,b;
    int m[8];
    bool VF=false;
 
    ptotalB=peixesB;
do{
        a=rand() % xx;
        b=rand() % yy;
 
            //procura peixe B e que ainda n se tenha mexido
            if(aquario[a][b].mov==false && aquario[a][b].icon==symbolB){
                v=1;
                contador++;
                if(aquario[a][b].num_parado==nparB){
                    //se o peixe ja n se mexer N_vezes_parado_B o peixe MORRE
                    aquario[a][b].icon=espacovazio;
                    aquario[a][b].status=false;
                    aquario[a][b].num_mov = 0;
                    aquario[a][b].num_parado = 0;
                    peixesB--;
                    v=0;
                }else{
                    if(aquario[a][b].num_mov>=nmovsB){
                        VF=false;
                        aux=9;
                        do{
                            x=a;
                            y=b;
                            aux--;
 
                            switch(aux){
                                    case 1: 
                                        x--;
                                        y--;
                                        break;
 
                                    case 2: 
                                        y--;
                                        break;
 
                                    case 3: 
                                        x++;
                                        y--;
                                        break;
 
                                    case 4: 
                                        x--;
                                        break;
 
                                    case 5: 
                                        x++;
                                        break;
 
                                    case 6: 
                                        x--;
                                        y++;
                                        break;
 
                                    case 7: 
                                        y++;
                                        break;
 
                                    case 8: 
                                        x++;
                                        y++;
                                        break;
                            }
                            if(aquario[x][y].icon == symbolB && aux !=0 ){// verifica se pode criar 1 filho, tem de se ter movimentado N_movimentos_A vezes
                                VF=true;
                                v=1;
                            }
                            else{
                                if(aux==0){
                                    VF=true;
                                    v=0;
                                }
                            }
                        }while(VF==false);
                    }
                    if(v==0){
                        VF=false;
                        for(int x=0; x<8; x++){
                            m[x]=0;
                        }
                        do{
                            aux=gerir_pos(a,b,m,&x,&y);
                            if(aquario[x][y].icon == symbolA || aquario[x][y].icon == ' ' && m!=0){//cria 1 filho
                                if(aquario[x][y].icon == symbolA){
                                    peixesA--;
                                }
                                aquario[x][y].icon=symbolB;
                                //gotoxy(x,y);printf("%c",aquario[x][y].imagem);
                                aquario[x][y].status=true;
                                aquario[x][y].num_mov=0;
                                aquario[x][y].num_parado=0;
                                aquario[a][b].num_mov=0;
                                aquario[x][y].mov=true;
                                aquario[a][b].mov=true;
                                //getch();
                                peixesB++;
                                VF=true;
                                v=0;
                            }
                            else{
                                if(aux==0){
                                    v=1;
                                    VF=true;
                                }
                            }
                        }while(VF==false);
                    }
                    if(v==1){
                        VF=false;
                        //se nao tenta-se mexer
                        for(int x=0; x<8; x++){
                            m[x]=0;
                        }
                        do{
                            aux=gerir_pos(a,b,m,&x,&y);
                            if(aquario[x][y].icon==symbolA && aux!=0){//come B
                                aquario[a][b].icon=espacovazio;
                                //gotoxy(a,b);printf("%c",aquario[a][b].imagem);
                                aquario[a][b].status=false;
                                aquario[x][y].num_mov=aquario[a][b].num_mov;
                                aquario[a][b].num_mov=0;
                                aquario[a][b].num_parado=0;
                                aquario[a][b].mov=false;
                                aquario[x][y].icon=symbolB;
                                //gotoxy(x,y);printf("%c",aquario[x][y].imagem);
                                aquario[x][y].status=true;
                                aquario[x][y].mov=true;
                                aquario[x][y].num_mov++;
                                aquario[x][y].num_parado=0; 
                                peixesA--;
                                VF=true;
                            }else{
                                //se n encontrar nenhum peixe A faz isto
                                if(aux==0){
                                    VF=false;
                                    for(int x=0; x<8; x++){
                                        m[x]=0;
                                    }
                                    do{
                                        aux=nova_posicao(a,b,m,&x,&y);
                                        if(aquario[x][y].status==false && aux!=0){//se a casa vazia
                                            aquario[a][b].icon=espacovazio;
                                            //gotoxy(a,b);printf("%c",aquario[a][b].imagem);
                                            aquario[a][b].status=false;
                                            aquario[x][y].num_mov = aquario[a][b].num_mov;
                                            aquario[x][y].num_parado = aquario[a][b].num_parado;
                                            aquario[a][b].num_mov=0;
                                            aquario[a][b].num_parado=0;
                                            aquario[x][y].icon=symbolB;
                                            //gotoxy(x,y);printf("%c",aquario[x][y].imagem);
                                            aquario[x][y].status=true;
                                            aquario[x][y].mov=true;
                                            VF=true; 
                                            aquario[x][y].num_parado++; 
                                        }else{
                                            if(aux==0){//se o peixe ja se tiver tentado mover em todas as direccoes e n tiver conceguido, fica a espera "aquario[a][b].N_vezes_parado++;"
                                                //n encontra casas vazia e fica a espera
                                                aquario[a][b].num_parado++; 
                                                aquario[a][b].mov=true;
                                                VF=true; 
                                            }
                                        }
                                    }while(VF==false);
                                }
                            }
                        }while(VF==false);
                    }
                }
            }
}
            while(contador!=ptotalB);
    back();
}
 
Última edição pelo moderador:
Estás a invocar a função nova_posicao e não a definiste ou então definiste-a depois da main e não colocaste o seu header antes da main.
 
obrigado
olha agora tenho outro erro....lol

com este código os "peixitos" deveriam mover-se,mas ficam parados....
tens ideia do porque????

Código:
void deslocarA(){
    int x,y,aux,ptotalA=0,contador=0,a,b;
    bool VF=false;
 
    ptotalA=peixesA;
do{
        a=rand() % xx;
        b=rand() % yy;
 
            //procura peixe A e que ainda n se tenha mexido
            if(aquario[a][b].mov==false && aquario[a][b].icon==symbolA){
                contador++;
 
                if(aquario[a][b].num_parado==nparA){
                    //se o peixe ja n se mexer N_vezes_parado_A o peixe MORRE
                    aquario[a][b].icon=espacovazio;
                    aquario[a][b].status=false;
                    aquario[a][b].num_mov = 0;
                    aquario[a][b].num_parado = 0;
                    peixesA--;
                }else{
                    int m[8];
                    //coloca o vector m a 0
                    for(int x=0; x<8; x++){
                        m[x]=0;
                    }
                    VF=false;
                    //este siclo vai ser feito te o peixe A se reproduzir ou se mover ou ficar parado
                    do{
                        aux=gerir_pos(a,b,m,&x,&y);
                        //descobre 1 espaço livre
                        if(aquario[x][y].status==false && aux!=0){//se a casa tiver vazia
                            if(aquario[a][b].num_mov==nmovsA){// verifica se pode criar 1 filho, cria filho
                                aquario[x][y].icon=symbolA;
                                aquario[x][y].status=true;
                                aquario[x][y].num_mov=0;
                                aquario[x][y].num_parado=0;
                                aquario[a][b].num_mov=0;
                                aquario[x][y].mov=true;
                                aquario[a][b].mov=true;
                                peixesA++;
                            }else{
                                //se nao movimenta-se para a nova casa
                                aquario[a][b].icon=espacovazio;
                                aquario[a][b].status=false;
                                aquario[a][b].mov=false;
                                aquario[x][y].num_mov = aquario[a][b].num_mov;
                                aquario[x][y].num_parado = aquario[a][b].num_parado;
                                aquario[a][b].num_mov=0;
                                aquario[a][b].num_parado=0;
                                aquario[x][y].icon=symbolA;
                                aquario[x][y].status=true;
                                aquario[x][y].mov=true;
                                aquario[x][y].num_mov++;
                            }
                            VF=true;
                        }else{
                            if(aux==0){
                                //n encontra casas vazia e fica a espera
                                aquario[a][b].num_parado++; 
                                aquario[a][b].num_mov=0;
                                aquario[a][b].mov=true;
                                VF=true; 
                            }
                        }
                    }while(VF==false);
                }
            }
}
            while(contador!=ptotalA);
            //coloca a variavel movimento a false em toda a estrotura
    back();
 
Última edição pelo moderador:
Back
Topo