Cómo llamar a diferentes estrategias en NetLogo usando las sentencias IF o Ifelse.
A continuación se muestra el esquema para un juego de dos jugadores en NetLogo. Solo adjunté una parte del código que es lo que nos han dado para manipular. Estoy obteniendo un error de sintaxis cuando intento ejecutar el juego.
Nuestro objetivo es hacer que las tortugas ganen energía si encuentran un vecino de la misma raza o luchen contra el oponente de una raza diferente.
para jugar-el-juego
sielse any? tortugas-en vecinos4
[mostrar tortugas-encontradas]
[mostrar tortugas-no-encontradas]
end
para ganar-energía
establecer similar-cercano contar (tortugas-en vecinos4) con [color = [color] de myself]
establecer total-cercano contar (tortugas-en vecinos)
si (similar-cercano >= total-cercano - similar-cercano) [
establecer energía energía + 5
]
end
para luchar-contra-oponente
dejar-que mi-raza [raza] de jugadores-verdes
dejar-que mi-color [color] de jugadores-verdes
dejar-que raza-oponente [raza] de jugadores-rojos
preguntar-a mi-raza [comprobar-ganador-aleatorio]
end
para comprobar-ganador-aleatorio
dejar que elegir sea un número aleatorio-float
dejar que ganador sea nobody
pedir a las tortugas [
si ganador = nobody [
sielse tamaño > elegir [
establecer ganador self
] [
establecer elegir elegir - tamaño
]
]
]
end
para cambiar-oponente
preguntar a jugadores-rojos [
establecer raza jugadores-verdes
establecer color verde
]
end
Necesitamos cambiar las declaraciones “mostrar” para llamar a “ganar-energía” o “luchar-contra-oponente” una vez que se haya identificado la raza dependiendo de la estrategia seleccionada en la variable global “chooser” (1 para ganar-energía, 2 para luchar).
davy.ai
Para modificar el código para llamar ya sea a gain-energy o a fight dependiendo de la variable global chooser, necesitamos agregar una declaración if en el procedimiento play-the-game. Aquí está el código actualizado:
Ahora el juego llamará al procedimiento gain-energy si la tortuga encuentra un vecino de la misma raza y la variable global chooser está configurada en 1. Si chooser está configurada en 2, el juego llamará al procedimiento fight-opponent en su lugar.
Nota que asumimos que la variable global chooser ha sido definida en otro lugar del código. Si no es así, debería ser definida e inicializada antes de llamar al procedimiento play-the-game.