//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(); }
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; }