// agrega la entidad en una posicion generada aleatoriamente public void AgregarEntidad(Entidad entidad) { this.GenerarPosicionPara(entidad); this.entidades.Add(entidad); }
// permite agregar una entidad al tablero // Se agrega a la entidad en la casilla correspondiente a las coordenadas pasadas public void AgregarEntidad(Entidad entidad, int fila, int columna) { try { entidad.PosicionarEn(this.Casilla(fila, columna)); this.entidades.Add(entidad); } catch (CasillaFueraDeRangoError e) { e.NoHacerNada(); } }
// remueve la entidad pasada de la casilla pasada public void RemoverEntidad(Entidad entidad) { entidad.Destruir(); int X = entidad.Posicion().X; int Y = entidad.Posicion().Y; Casilla posicionAModificar = this.Casilla(X, Y); posicionAModificar.RemoverEntidad(entidad); this.entidades.Remove(entidad); }
// este metodo genera posiciones aleatorias para la entidad pasada // hasta que la misma es posicionada en una casilla vacia private void GenerarPosicionPara(Entidad entidad) { bool fueUbicado = false; while(!fueUbicado) { try { Casilla casilla = this.Casilla(this.FilaSorteada(), this.ColumnaSorteada()); if(casilla.EstaVacia()) { entidad.PosicionarEn(casilla); fueUbicado = true; } } catch (CasillaFueraDeRangoError e) { e.NoHacerNada(); } } }
// agrega la salida public void AgregarSalida() { if (!seAgregoLaSalida) { if (this.obstaculoQueOcultaSalida.FueDestruido()) { this.seAgregoLaSalida = true; int X = this.obstaculoQueOcultaSalida.Posicion().X; int Y = this.obstaculoQueOcultaSalida.Posicion().Y; this.AgregarEntidad(new Salida(), X, Y); this.obstaculoQueOcultaSalida = null; } } }
// agrega la salida que estara oculta por un obstaculo de ladrillo o de cemento public void AgregarObstaculoQueOcultaSalida() { Random rand = new Random(); int prioridadDeSalida = rand.Next(OBSTACULOS_QUE_ADMITEN_SALIDA); Entidad obstaculoQueOcultaSalida = null; if (prioridadDeSalida == SALIDA_DE_LADRILLO) obstaculoQueOcultaSalida = new ObstaculoDeLadrillo(true); if (prioridadDeSalida == SALIDA_DE_CEMENTO) obstaculoQueOcultaSalida = new ObstaculoDeCemento(true); this.AgregarEntidad(obstaculoQueOcultaSalida); this.obstaculoQueOcultaSalida = obstaculoQueOcultaSalida; }
// retorna si esta en la misma posicion que la entidad pasada public bool MismaPosicionQue(Entidad entidad) { return (this.posicion == entidad.Posicion()); }
// agrega una entidad a la casilla public void AgregarEntidad(Entidad entidad) { this.entidades.Add(entidad); }
// remueve la entidad pasada public void RemoverEntidad(Entidad entidad) { entidad.Destruir(); this.entidades.Remove(entidad); }