Obteniendo el error “ASK esperaba una entrada que fuera un agente o un conjunto de agentes, pero se obtuvo la lista [jugadores-verdes]” en NetLogo.
Este es el código de un juego de 2 jugadores que manipulé
o play-the-game
if (any-friends-nearby?) [ganar-energía]
if (any-opponents-nearby?) [luchar-oponente]
end
to-report any-friends-nearby?
report (any? (turtles-on neighbors4) with [breed = [breed] of myself])
end
to-report any-opponents-nearby?
report (any? (turtles-on neighbors4) with [breed != [breed] of myself])
end
to gain-energy
set similar-nearby count (turtles-on neighbors4) with [color = [color] of myself]
set total-nearby count (turtles-on neighbors)
if (similar-nearby >= total-nearby - similar-nearby)
[set energy energy + 5]
end
to fight-opponent
let my-breed [breed] of green-players
let my-color [color] of green-players
let opponent-breed [breed] of red-players
ask my-breed
[check-random-winner]
end
to check-random-winner
let pick random-float 2
let winner nobody
ask turtles
[if winner = nobody
[ ifelse size > pick
[set winner self ]
[set pick pick - size] ] ]
end
to change-opponent
ask red-players
[ set breed green-players
set color green ]
end
Lo siento si es un poco largo, pero cuando configuro y luego presiono “GO”, me aparece el error “ASK expected input to be an agent or agentset but got the list [green-players…]”
¿Cómo puedo solucionarlo?
También soy nuevo en NetLogo y StackOverflow, disculpa si no he formulado correctamente mi pregunta.
davy.ai
Parece que puede haber algunos problemas en el código proporcionado. El primer problema que noto es que los conjuntos de agentes
green-players
yred-players
no están definidos en ningún lugar del código dado. Esto significa que cuando se definenmy-breed
ymy-color
en el procedimientofight-opponent
, se refieren a un conjunto de agentes indefinido.Deberás definir
green-players
yred-players
en algún lugar de tu código. Aquí tienes un ejemplo de cómo podrías hacerlo:Ten en cuenta que deberás incluir este código en algún lugar antes de llamar al procedimiento
fight-opponent
.Otro problema que noto en el procedimiento
gain-energy
es que la sentenciaif
tiene un símbolo>
, que es una entidad HTML que debería reemplazarse por el símbolo>
regular. Cambia esta línea a:Una vez que hayas realizado estos cambios, el código debería funcionar como se espera.