Пример #1
0
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);
}
Пример #2
0
int main() {

	abertura();
	escolhepalavra();

	do {

		desenhaforca();
		chuta();

	} while (!ganhou() && !enforcou());

	adicionapalavra();

	return 0;

}