void resolve() { int topo, passos, x, y; item atual; item pilha[32]; topo = 0; passos = 0; x = 0; y = 0; atual.pos.x = 0; atual.pos.y = 0; atual = procura( atual, &x, &y ); while ( ganhou() ) { getchar(); printf("X = %d Y = %d Mov = %d x = %d y = %d P = %d \n", atual.pos.x, atual.pos.y, atual.mov, x, y, passos); desenha(); while ( atual.mov <= 4 ) { if ( podemov(atual) ) { printf("Empilhando - \n"); empilha( pilha, &topo, atual ); atualizatab( atual, &atual ); x = 0; y = 0; passos++; getchar(); printf("X = %d Y = %d Mov = %d x = %d y = %d P = %d \n", atual.pos.x, atual.pos.y, atual.mov, x, y, passos); desenha(); } else atual.mov++; } if ( atual.mov > 4 ) { if ( x >= 6 && y >= 4 ) { if ( topo == 0 ) { printf("Sem Solucao."); break; } else { printf("Backtrack - \n"); atual = topodapilha( pilha, topo ); desatualizatab( atual ); x = atual.pos.x; y = atual.pos.y; atual.mov++; desempilha( &topo ); passos--; } } } } imprimesol(pilha, topo); }
int main() { abertura(); escolhepalavra(); do { desenhaforca(); chuta(); } while (!ganhou() && !enforcou()); adicionapalavra(); return 0; }