void campusSeguro::ingresarHippie(Nombre h,Posicion p) { if( posConvertibleAEstudiante(p,_campus) ) { _estudiantes.Definir(h,p); grilla.Obtener(p).id = 1 ; grilla.Obtener(p).tag = h ; grilla.Obtener(p).placa = 0 ; //grilla.Obtener(p).datosAgente = grilla.Obtener(p).datosAgente;// esta demas, pero lo pongo asi es mas claro. } else { if( posCapturable(p,_campus) ) { grilla.Obtener(p).id = 4 ; } else { _hippies.Definir(h,p); grilla.Obtener(p).id = 2 ; grilla.Obtener(p).tag = h ; grilla.Obtener(p).placa = 0 ; //grilla.Obtener(p).datosAgente = grilla.Obtener(p).datosAgente;// esta demas, pero lo pongo asi es mas claro. } } actualizarVecinos(p); }
void campusSeguro::ingresarHippie(Nombre h,Posicion p) { if( posConvertibleAEstudiante(p,_campus) ) { _estudiantes.Definir(h,p); grilla.Obtener(p).id = 1 ; grilla.Obtener(p).tag = h ; grilla.Obtener(p).placa = 0 ; actualizarVecinos(p); //grilla.Obtener(p).datosAgente = grilla.Obtener(p).datosAgente;// esta demas, pero lo pongo asi es mas claro. } else { if( posCapturable(p,_campus) ) { /// agrego los datos del hippie a la grilla grilla.Obtener(p).id = 2 ; //grilla.Obtener(p).tag = h ; grilla.Obtener(p).placa = 0 ; /// ahora si actualizo los vecinos y despues seteo como libre en la grilla. actualizarVecinos(p); grilla.Obtener(p).id = 4 ; } else { _hippies.Definir(h,p); grilla.Obtener(p).id = 2 ; grilla.Obtener(p).tag = h ; grilla.Obtener(p).placa = 0 ; actualizarVecinos(p); //grilla.Obtener(p).datosAgente = grilla.Obtener(p).datosAgente;// esta demas, pero lo pongo asi es mas claro. } } }
void campusSeguro::actualizarDatosAgentes(Conj<Posicion> c) { Posicion posActual; Conj<Posicion>::Iterador it = c.CrearIt(); while( it.HaySiguiente() ) { posActual=it.Siguiente(); if( posCapturable(posActual,_campus) ) { Conj<Posicion> vecinosDePosActual = _campus.Vecinos(posActual); Conj<Posicion>::Iterador itVec = vecinosDePosActual.CrearIt(); while( itVec.HaySiguiente()) { Posicion vecActual = itVec.Siguiente(); if( esAgente(vecActual) && esHippie(posActual) ) { diccHash<Agente,Datos>::Iterador datosVec = grilla.Obtener(vecActual).datosAgente; datosVec.SiguienteSignificado().hippiesAtrapados++; Nat cantAtrapadosVec = datosVec.SiguienteSignificado().hippiesAtrapados; if(cantAtrapadosVec > _masVigilante.cantAtrapados ) { (_masVigilante).agente = datosVec.SiguienteClave(); (_masVigilante).cantAtrapados = cantAtrapadosVec; } if( (cantAtrapadosVec == (_masVigilante).cantAtrapados) && ( datosVec.SiguienteClave()< (_masVigilante).agente) ) { (_masVigilante).agente = datosVec.SiguienteClave(); (_masVigilante).cantAtrapados = cantAtrapadosVec; } } if( esAgente(vecActual) && esEstudiante(posActual) ) { //diccHash<Agente,Datos>::Iterador datosVec = grilla.Obtener(vecActual).datosAgente; //datosVec.SiguienteSignificado().Sanciones++; //Nat vecSancionesActual = datosVec.SiguienteSignificado().Sanciones; Agente ac = grilla.Obtener(posActual).placa; datosAgentes.Obtener(ac).Sanciones ++; //Nat vecSancionesActual = datosAgentes.Obtener(ac).Sanciones; //datosAgentes.Obtener(ac).claseConMismasSanciones.ItActualizarElem(vecSancionesActual); //datosVec.SiguienteSignificado().claseConMismasSanciones.ItActualizarElem(vecSancionesActual); // CREOOO QUE ES DE CONJEQU (KSanciones).buffer = false; } itVec.Avanzar(); } } it.Avanzar(); } }
void campusSeguro::matarHippies(Conj<Posicion> c) { Posicion posActual; Conj<Posicion>::Iterador it = c.CrearIt(); while( it.HaySiguiente() ) { posActual = it.Siguiente(); if( posCapturable(posActual,_campus) && esHippie(posActual) ) { grilla.Obtener(posActual).id = 4; (_hippies).Borrar( grilla.Obtener(posActual).tag ); } it.Avanzar(); } }
void campusSeguro::moverHippie(Nombre h) { Posicion posActual = _hippies.Obtener(h); DiccPalabra<Posicion>::itDiccP itPos = _estudiantes.Claves(); Posicion nuevaPos = proxPosicion(posActual, itPos ); if( !(posActual == nuevaPos) ) { grilla.Obtener(posActual).id = 4; grilla.Obtener(posActual).tag = h; grilla.Obtener(posActual).placa = -1; diccHash<Agente,Datos> d(0);// dicchash vacio. diccHash<Agente,Datos>::Iterador itNulo = d.CrearIt();// creo un iterador vacio. grilla.Obtener(posActual).datosAgente = itNulo; if( posConvertibleAEstudiante(nuevaPos,_campus) ) { _estudiantes.Definir(h,nuevaPos); grilla.Obtener(nuevaPos).id = 1; grilla.Obtener(nuevaPos).tag = h; grilla.Obtener(nuevaPos).placa = 0; grilla.Obtener(nuevaPos).datosAgente = grilla.Obtener(nuevaPos).datosAgente; } else { if( posCapturable(nuevaPos,_campus) ) { grilla.Obtener(nuevaPos).id = 4; } else { _hippies.Definir(h,nuevaPos); grilla.Obtener(nuevaPos).id = 2; grilla.Obtener(nuevaPos).tag = h; } } actualizarVecinos(nuevaPos); }// fin 1er If }// fin funcion
void campusSeguro::actualizarVecinos(Posicion p) { Conj<Posicion> vec = _campus.Vecinos(p); Conj<Posicion>::Iterador itVecinos = vec.CrearIt(); actualizarDatosAgentes(vec, p); while( itVecinos.HaySiguiente() ) { Posicion vec1 = itVecinos.Siguiente(); Conj<Posicion> vecinosDeVecino = DameCampus().Vecinos(vec1); Conj<Posicion>::const_Iterador itVecinosVec = vecinosDeVecino.CrearIt(); while( itVecinosVec.HaySiguiente() ) { if( posConvertibleAEstudiante(vec1,_campus) && esHippie(vec1) ) { Nombre name = grilla.Obtener(vec1).tag ; (_estudiantes).Definir(name,vec1 ); (_hippies).Borrar( name ); } else { if( posCapturable(vec1,_campus) && esHippie(vec1) ) { Nombre name = grilla.Obtener(vec1).tag ; (_hippies).Borrar( name ); grilla.Obtener(vec1).id = 4; grilla.Obtener(vec1).tag = ""; grilla.Obtener(vec1).placa = 0 ; diccHash<Agente,Datos>::Iterador itVacioHash; grilla.Obtener(vec1).datosAgente =itVacioHash; Conj<Posicion>::Iterador itVecVec = (_campus.Vecinos(vec1)).CrearIt() ; while( itVecVec.HaySiguiente() ) { Posicion posVec= itVecVec.Siguiente(); if( esAgente(posVec) ) { diccHash<Agente,Datos>::Iterador itH = grilla.Obtener(posVec).datosAgente; itH.SiguienteSignificado().hippiesAtrapados++; actualizarMasVigilante(itH,posVec); } itVecVec.Avanzar(); } } else { if( posCapturable(vec1,_campus) && esEstudiante(vec1) ) { Nombre name = grilla.Obtener(vec1).tag ; Conj<Posicion> VecinosDe_vecinosDeVecino = DameCampus().Vecinos(vec1); Conj<Posicion>::Iterador itVecVec = VecinosDe_vecinosDeVecino.CrearIt(); while( itVecVec.HaySiguiente() ) { Posicion posVec = itVecVec.Siguiente(); if( esAgente(posVec) ) { //diccHash<Agente,Datos>::Iterador itH = grilla.Obtener(posVec).datosAgente; //itH.SiguienteSignificado().Sanciones++; Agente ac = grilla.Obtener(posVec).placa; datosAgentes.Obtener(ac).Sanciones ++; //Nat san = itH.SiguienteSignificado().Sanciones; //ConjsEqu<Agente>::Iterador itMSanciones = itH.SiguienteSignificado().claseConMismasSanciones; //itMSanciones.ItActualizarElem(san); } itVecVec.Avanzar(); } } } } itVecinosVec.Avanzar(); } itVecinos.Avanzar(); } }