예제 #1
0
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();
}
예제 #2
0
void campusSeguro::moverEstudiante(Nombre e,Direccion dir)
{
    Posicion posActual = _estudiantes.Obtener(e);
    if( seRetira(posActual,dir) )
    {
        _estudiantes.Borrar(e);
        grilla.Obtener(posActual ).id = 4;
        grilla.Obtener(posActual ).tag = "libre";
        grilla.Obtener(posActual ).placa = 0;
        //diccHash<Agente,Datos> d(0);// dicchash vacio.
        //diccHash<Agente,Datos>::Iterador itNulo = d.CrearIt();// creo un iterador vacio.
        //grilla.Obtener(posActual).datosAgente = itNulo;
    }
    else
    {
        Posicion nuevaPos = _campus.ProximaPos(posActual,dir);
        if(!(posActual==nuevaPos))
        {
          grilla.Obtener( posActual ).id  = 4;
          grilla.Obtener( posActual ).tag  = "libre";
          grilla.Obtener( posActual ).placa  = 0;
          //diccHash<Agente,Datos> d(0);// dicchash vacio.
          //diccHash<Agente,Datos>::Iterador itNulo = d.CrearIt();// creo un iterador vacio.
          //grilla.Obtener(posActual).datosAgente = itNulo;

            if( posConvertibleAHippie(nuevaPos,_campus) )
            {
                _hippies.Definir(e,nuevaPos);
                grilla.Obtener( nuevaPos ).id = 2;
                grilla.Obtener( nuevaPos ).tag  = e;
                grilla.Obtener( nuevaPos ).placa  = 0;
                _estudiantes.Borrar(e);
                //grilla.Obtener( nuevaPos ).datosAgente  = grilla.Obtener( nuevaPos ).datosAgente;
            }
            else
            {
                _estudiantes.Borrar(e);
                _estudiantes.Definir(e,nuevaPos);
                grilla.Obtener( nuevaPos ).id = 1;
                grilla.Obtener( nuevaPos ).tag  = e;
                grilla.Obtener( nuevaPos ).placa  = 0;
                //grilla.Obtener( nuevaPos ).datosAgente  = grilla.Obtener( nuevaPos ).datosAgente;
            }

        actualizarEstYHippie(_campus.Vecinos(nuevaPos));
        actualizarVecinos(nuevaPos);

        }
    }

}
예제 #3
0
void campusSeguro::ingresarEstudiante(Nombre e, Posicion p)
{
    if( posConvertibleAHippie(p, _campus) )
    {
        _hippies.Definir(e, p);
        grilla.Obtener(p).id  = 2  ;
        grilla.Obtener(p).tag  = e  ;
        grilla.Obtener(p).placa  =  0 ;
        //grilla.Obtener(p).datosAgente  = grilla.Obtener(p).datosAgente;// esta demas, pero lo pongo asi es mas claro.
    }
    else
    {
        _estudiantes.Definir(e,p);
        grilla.Obtener(p).id  = 1  ;
        grilla.Obtener(p).tag  = e  ;
        grilla.Obtener(p).placa  =  0 ;
        //grilla.Obtener(p).datosAgente  = grilla.Obtener(p).datosAgente;// esta demas, pero lo pongo asi es mas claro.

    }

    actualizarVecinos(p);
}