Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*Funciones para denotar los colores de cada elemento*/
- function colorDeAnimales() {
- return(Rojo)
- }
- function colorDeConstrucciones() {
- return(Negro)
- }
- function colorDeCultivos() {
- return(Verde)
- }
- function colorDeAgua() {
- return(Azul)
- }
- /*Funciones para denotar las cantidades de cada
- elemento presentes en la hectarea actual*/
- function cantidadDeAnimales() {
- return(nroBolitas(colorDeAnimales()))
- }
- function cantidadDeConstrucciones() {
- return(nroBolitas(colorDeConstrucciones()))
- }
- function cantidadDeCultivos() {
- return(nroBolitas(colorDeCultivos()))
- }
- function cantidadDeAgua() {
- return(nroBolitas(colorDeAgua()))
- }
- /////////////////////////////////////////////////////////
- /*a- Programa la funcion cultivoEnPeligro() que indicara
- True si en la hectarea actual hay mas animales que cultivos.
- Tener en cuenta que si no hay cultivos esta funcion indicara
- False sin importar la cantidad de animales que haya
- en la celda.*/
- function hayCultivos(){
- return (nroBolitas(Verde)>0)
- }
- function masAnimalesQueCultivos(){
- return (cantidadDeAnimales()>cantidadDeCultivos())
- }
- function cultivoEnPeligro() {
- return (hayCultivos() && masAnimalesQueCultivos())
- }
- /*b- Programa la funcion ConstruccionesEnPeligro()
- que indicara True si en la hectarea actual
- la cantidad de animales triplica la cantidad de construcciones
- Tener en cuenta que si no hay construcciones
- esta funcion indicara False sin importar la
- cantidad de animales que haya en la celda.*/
- function hayConstrucciones(){
- return (nroBolitas(Negro)>0)
- }
- function animalesTriplicaConstruccion(){
- return (cantidadDeAnimales()>=cantidadDeConstrucciones()*3)
- }
- function construccionesEnPeligro(){
- return (hayConstrucciones()&& animalesTriplicaConstruccion())
- }
- /*c- Programa la funcon hectareaEnPeligro() que indicara
- True si la hectarea actual
- tiene construcciones en peligro o cultivos en peligro*/
- function hectareaEnPeligro(){
- return (construccionesEnPeligro()|| cultivoEnPeligro())
- }
- /*d- Programa la funcion hectareaEnPeligroAl(dir)
- que indicara True si la hectarea
- en direccion dir se encuentra en peligro.*/
- procedure PuedeMoverDir(dir){
- if (puedeMover(dir))
- {Mover(dir)}
- }
- function hectareaEnPeligroAl(dir){
- //Mover(dir)
- PuedeMoverDir(dir)
- return(hectareaEnPeligro())
- }
- ///////////////////////////////////////////////
- /*Ejercicio 2
- Programa la funcion animalesExcedentes() que retorna
- la cantidad de animales que habria que sacar de la hectarea
- para que deje de estar en peligro.*/
- function excedenteAnimalesEnCultivos(){
- excedenCultivos:=(cantidadDeAnimales()-cantidadDeCultivos())
- return (excedenCultivos)
- }
- function excedenteAnimalesEnConstrucciones(){
- if (cantidadDeConstrucciones()>0){
- excedenConstruccion:= ( cantidadDeAnimales()-cantidadDeConstrucciones()*3)}
- else
- {if (cantidadDeConstrucciones()==0){
- excedenConstruccion:= 0}
- }
- return( excedenConstruccion)
- }
- //////////////
- function animalesExcedentes(){
- excedenConstruccion:= excedenteAnimalesEnConstrucciones()
- excedenCultivos:= excedenteAnimalesEnCultivos()
- if (excedenCultivos > excedenConstruccion){
- excedente :=(excedenCultivos)}
- else
- {if (excedenConstruccion>excedenCultivos){
- excedente := (excedenConstruccion)
- }
- { if (excedenConstruccion==excedenCultivos){
- excedente := (excedenConstruccion)
- }
- }
- }
- return(excedente)
- }
- ///////////////////////////////////////////////////////////////
- /*Ejercicio 3
- Para resolver los conflictos en el campo, programa los siguientes procedimientos:
- a- Implementa el procedimiento ResolverConflictoEnHectarea()
- que mueve los animales excedentes de una hectarea en peligro
- a una hectarea lindante con el siguiente criterio:
- Si hay hectarea al Este de la hectarea actual
- y ademas la hectarea al Este no esta en peligro,
- mueve los excedentes alli.
- Si no hay hectarea al Este o la hay pero esta en peligro,
- mueve el excedente al Norte
- sin importar el estado de esa hectarea.
- Precondiciones:
- La hectarea actual se encuentre en peligro.
- Hay una hectarea al Norte de la hectarea actual.*/
- procedure MoverAnimalesExcedentesAl(dir){
- excedente := animalesExcedentes()
- repeatWith a in 1..excedente
- {Sacar(Rojo)}
- PuedeMoverDir(dir)
- repeatWith i in 1..excedente
- {Poner(Rojo)}
- }
- procedure ResolverConflictoEnHectarea(){
- if(puedeMover(Este) && hectareaEnPeligroAl(Este)){
- MoverAnimalesExcedentesAl(Norte)}
- else
- {if(puedeMover(Este) == False)
- {MoverAnimalesExcedentesAl(Norte)}
- if (hectareaEnPeligroAl(Este) == False)
- {MoverAnimalesExcedentesAl(Este)}
- }
- }
- /*(b) Implementa el procedimiento ProcesarHectarea() que resuelve el conflicto en la hectarea si es que esta en peligro. Precondicion: Hay una hectarea al Norte de la
- hectarea actual.*/
- procedure ProcesarHectarea(){
- if (hectareaEnPeligro()){
- ResolverConflictoEnHectarea()}
- }
- /*(c) Implementa el procedimiento ProcesarCampoSinBorde() que recorre el campo
- utilizando un recorrido de Sur a Norte y de Oeste a Este procesando cada*/
- /* Llenar el Tablero con una bola azul menos en la
- fila superior*/
- function estaEnBorde (){
- return (not puedeMover (Norte ))
- }
- procedure IrAlBorde(dir){
- while (puedeMover (dir)){
- Mover (dir)}
- }
- procedure IrASiguienteCelda (){
- if (not puedeMover (Este))
- {
- Mover (Norte)
- IrAlBorde (Oeste)}
- else
- {Mover (Este)}
- }
- procedure ProcesarCampoSinBorde (){
- while (not estaEnBorde ())
- {
- ProcesarHectarea()
- //Poner(Azul)
- IrASiguienteCelda()
- }
- }
- procedure Main (){
- IrAlOrigen()
- ProcesarCampoSinBorde ()
- }
Advertisement
Add Comment
Please, Sign In to add comment