ricardomarioper
Power Member
boas...tenho um programa que me esta a dar um problema....algum me pode ajudar????è bastante urgente...
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();
}
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();