void campusSeguro::actualizarEstYHippie(Conj<Posicion> c) { Posicion posActual; Conj<Posicion>::Iterador it = c.CrearIt(); while( it.HaySiguiente() ) { posActual = it.Siguiente(); if( posConvertibleAHippie(posActual,_campus) && esEstudiante(posActual) ) { grilla.Obtener(posActual).id = 2; (_estudiantes).Borrar( grilla.Obtener(posActual).tag ); (_hippies).Definir( grilla.Obtener(posActual).tag, posActual ); } else { if( posConvertibleAEstudiante(posActual,_campus) && esHippie(posActual) ) { grilla.Obtener(posActual).id = 1; (_hippies).Borrar( grilla.Obtener(posActual).tag ); (_estudiantes).Definir( grilla.Obtener(posActual).tag , posActual ); } } } it.Avanzar(); }
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::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(); } }