//Función que revisa los stacks izq y der para saber en qué dirección colocar al robot luego del backtracking
void revisarStacks(Stack *stder,Stack *stizq,Stack *stcamino){
  if(top(stder)==1&&top(stizq)==0) 
  {
    pop(stcamino);
    derecha();
    push(stcamino, -2);
    paso();
  } 
  if(top(stder)==0&&top(stizq)==1) 
  {
    pop(stcamino);
    izquierda();
    push(stcamino, -1);
    paso();
  }
  if(top(stder)==1&&top(stizq)==1) 
  {
    pop(stder);
    push(stder,0);
    derecha();
    push(stcamino, -2);
    paso();
  }

}   
//Función main que tiene un while infinito para llamar a todas las funciones en cada ciclo, para que el robot resuelva el laberinto
int main()                                   
{
  //Se crean los stacks
  Stack *stder = createStack(100); 
  Stack *stizq = createStack(100);
  Stack *stcamino = createStack(100);
  while(1){

    revisar();
    magia(stder,stizq,stcamino);

    if(ade==1){
      paso();
    }
    else if(der==1){
      derecha();
      paso();
    }
    else if(izq==1){
      izquierda();
      paso();
    }  
  }   
}
bool Kernel_base::loop(Interface_controlador& IC)
{
	//Aquí se mide el tiempo desde el último paso por este loop...
	controlador_fps.iniciar_paso_loop();
	Input_base& input=acc_input();

	preloop();
	IC.preloop(input, paso_delta);

	//Aquí se consume el tiempo desde el último paso en bloques de "paso_delta".
	while(controlador_fps.consumir_loop(paso_delta) )
	{
		paso();		
		
		input.turno();

		IC.loop(input, paso_delta);

		Audio::procesar_cola_sonido();

		if(IC.es_romper_loop()) break;
	}

	postloop();
	IC.postloop(input, paso_delta);

	controlador_fps.turno();

	IC.dibujar(pantalla);

if(mostrar_fps)
	{
#ifdef WINCOMPIL
		std::string fps="FPS:"+parche_mingw::to_string(controlador_fps.acc_frames_contados())+"\n"+IC.acc_debug();
#else
		std::string fps="FPS:"+std::to_string(controlador_fps.acc_frames_contados())+"\n"+IC.acc_debug();
#endif
		DLibV::Representacion_texto_auto_estatica txt(DLibV::Gestor_superficies::obtener(acc_recurso_fps()), fps);
		txt.establecer_posicion(pantalla.acc_w()-128, 6);
		txt.volcar(pantalla);
	}		

	pantalla.actualizar();

	return !IC.es_abandonar_aplicacion();
}
Exemple #4
0
void BigInteger::decodeDecimal(const std::string& str)
{
	int strLength = str.length();

	for(int i = 0 ; i < strLength  ; i++)
	{
		if((str[i] < 48)||(str[i] > 57))
			throw new exceptions::BigIntegerException(-1,"BigInteger::decodeDecimal() bad string format.");
	}

	
	BigInteger paso(1);	
	paso[0] = 0;
	BigInteger sumando(4);
	BigInteger diez(1);
	diez[0] = 10;
	for(i = 0 ; i < strLength - 1 ; i++)
	{
		unsigned long l = (unsigned long)sstring(str[i] - 48);
		sumando.m_buffer = (unsigned char*)&l;
		sumando.m_length = 4;

		paso = paso + sumando;
		paso = paso * diez;		

		sumando.m_buffer = 0;
	}

	unsigned long l = (unsigned long)sstring(str[strLength - 1] - 48);
	sumando.m_buffer = (unsigned char*)&l;
	sumando.m_length = 4;

	paso = paso + sumando;

	sumando.m_buffer = 0;

	*this = paso;
}