2016-12-13 1 views
0

Pour un cours que je suis, je dois concevoir une sorte d'IA qui peut naviguer à travers un terrain donné qui contient des ennemis (infliger des dégâts), des amis (réduire les dégâts) , les obstacles (diminuer l'énergie) et les stations (augmenter l'énergie). Avant de passer à la partie AI réelle, je veux avoir le système de points sous-jacent dans l'ordre. Ma question est; Est-il possible de montrer 2 nombres à 1 tortue? Je veux montrer les dégâts ainsi que l'énergie du robot.Attribuer plusieurs numéros à une tortue dans NetLogo

The energy part looks like the following: 

to hit-station 
    ask robots 
    [ if pcolor = green 
    [ set pcolor black set energy (energy + energy-from-station) ] 
      ifelse show-energy? 
      [ set label energy ] 
      [ set label "" ] 
] 
end 

Maintenant, cela fonctionne parfaitement bien depuis que j'ai fait un interrupteur pour montrer l'énergie. Le problème se pose lorsque je veux ajouter un numéro pour les dégâts. Je fis un interrupteur pour cela aussi bien et la partie de code se présente comme suit:

to hit-obstacle 
     ask robots 
     [ if pcolor = red 
     [ set pcolor black set energy (energy + energy-from-obstacles) ] 
      ifelse show-damage? 
      [ set label damage ] 
      [ set label "" ] 
] 
end 

Je ne reçois pas une erreur, mais les dégâts ne semblent pas montrer (la partie de code de dégâts est sous le code de l'énergie partie). Est-ce possible et est-il possible d'attribuer une couleur différente aux numéros?

Merci beaucoup à l'avance,

J.V.

Répondre

1

En utilisant turtles-own, vous pouvez affecter autant d'attributs à une tortue que vous le souhaitez. Mais une tortue ne peut avoir qu'une seule valeur pour son étiquette. Vous devez décider ce qui va arriver si vous avez une tortue qui trouve à la fois une station et un obstacle. Vous pouvez montrer l'énergie, ou montrer les dommages, ou montrer une étiquette incorporant les deux. En termes de code ci-dessus, notez que vous n'avez jamais défini damage (seulement energy), donc vous ne voyez probablement qu'une étiquette 0 lorsque damage est signalé.