/* ** =================================================================== ** Method : Adq_Start ** Description : Empieza la adquisicion (si es que la memoria no ** se encuentra en full) ** =================================================================== */ void Registrador::start(){ if(getEstado() == FULL){ return; } if(getEstado() != SI){ setEstado(SI); } }
/** Descripcion: imprime el tablero en forma de matriz (ver MODO_DEBUG) */ void imprimirTablero(int n, tcelda* tablero){ int i,j; for (i=0; i<n; i++){ printf("["); for (j=0; j< n; j++) printf("%c ", getEstado(*tablero++)); printf("]\n"); } }
/** Descripcion: devueve el estado de la celda (fila, columna) de acuerdo a las reglas suministradas por el enunciado del tp. */ testado analizarEstado(int n, int contador_vivos, int fila, \ int columna, tcelda* tablero){ testado estado = getEstado(*getCelda(n, fila, columna, tablero)); if (estado==VIVO && ((contador_vivos==3 || contador_vivos==2))) return VIVO; if (estado==MUERTO && contador_vivos==3) return VIVO; return MUERTO; }
/** Descripcion: devuelve 0 si el vecino "vecino" de la celda (fila, columna) esta "vivo" actualmente, o 1 en caso contrario. Vecinos: 1 2 3 4 (0) 5 6 7 8 Donde (0) es (fila, columna) pasado por parametro. */ int estaVivo(int n, int vecino, int fila, int columna, tcelda* tablero){ static int j_transform[8]={ -1, 0, 1, -1, 1, -1, 0, 1 }, j; static int i_transform[8]={ -1, -1, -1, 0, 0, 1, 1, 1 }, i; i= (((i_transform[vecino-1]+fila) % n) + n) % n; j= (((j_transform[vecino-1]+columna) % n) + n) % n; if (getEstado(*getCelda(n, i, j, tablero))==VIVO) return 0; return 1; }
EspacioComplementario EspacioComplementarioDAO::get(std::string nombre) { EspacioComplementario espacio; try{ dataBase->resultset=dataBase->statement->executeQuery("SELECT * FROM Espacio E, EspacioComplementario D WHERE D.idEspacioComplementario='" +nombre + "' AND E.nombre = D.idEspacioComplementario"); while(dataBase->resultset->next()){ espacio.nombre = dataBase->resultset->getString(1); espacio.descripcion = dataBase->resultset->getString(2); double num = atof( dataBase->resultset->getString(3).c_str() ); espacio.precioPorhora = num; espacio.capacidad = std::stoi(dataBase->resultset->getString(4).c_str()); espacio.estado = getEstado(dataBase->resultset->getString(5)); espacio.horario = getHorario(dataBase->resultset->getString(6), dataBase->resultset->getString(7)); espacio.tipo.nombre=dataBase->resultset->getString(9); } }catch(...){ throw std::string("No se puede obtener espacio complementario"); } return espacio; }
/*Funcao importante usada internamente. Ela executa um update logico de um passageiro.*/ void updatePassageiro(Entity ent, double deltaTime) { int estado, estadoAntigo; Vetor v; atualizaPosicao(ent, deltaTime); /*atualizamos nossa posicao de acordo com a velocidade e variacao do tempo.*/ /*Se nao estivermos colidindo podemos tentar mudar nossa direcao de movimento de acordo */ if ( !getEstaColidindo(ent) ) { v = getVelocidade(ent); estadoAntigo = getEstado(v); if (estadoAntigo != -1) { /*E tentamos mudar nosso estado de acordo com uma cadeia de markov...*/ estado = markovProximoEstado(estadoAntigo, 8, markovTransicao); if (estado != estadoAntigo) setEstado(estado, v); } } }
/** Descripcion: imprime la matriz en el mismo formato que los valores de inicializacion. */ void imprimirEnFormatoEntrada(int n, tcelda* tablero){ int i; for (i=0; i<(n*n)-1; i++) printf("%c,", getEstado(*tablero++)); printf("%c\n", getEstado(*tablero)); }
/* ** =================================================================== ** Method : Adq_Stop ** Description : Detiene la adquisicion ** =================================================================== */ void Registrador::stop(){ if( getEstado() == SI ){ setEstado(NO); } }