예제 #1
0
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();
    }
}
예제 #2
0
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();
 }
}