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);
}
Beispiel #2
0
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.
        }
    }
}
Beispiel #3
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();
    }
}
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();
 }
}