回答編集履歴
1
fix answer
test
CHANGED
@@ -40,9 +40,13 @@
|
|
40
40
|
im=ax.scatter(*plot_data,"o",ms=5,c=plot_color)
|
41
41
|
```
|
42
42
|
|
43
|
+
エージェントのタイプごとにデフォルト色の設定をしておいた上で,個別に色設定`B.append(AgentEdited(color = 'y'))`とかができるようになる.
|
44
|
+
なんなら解析の途中から色を変化させることもできる.その際は`agent.color = 'g'`とか書けたりして,エージェントの状態を表現できる.
|
45
|
+
|
43
46
|
### 2. isinstanceを利用してAgentインスタンスを調べて色付ける方法
|
44
47
|
生成元インスタンスからしか判断できないこっちの方が汎用性は低い.
|
45
48
|
さっきはデフォルト色を用意して生成元が同じタイプのエージェントでも別の色を割り振れたが,下記コードでそれを実現しようとするのはめんどくさい.
|
49
|
+
なんなら`isinstance(AgentEdited(), Agent)`が`True`になってしまう等の問題もあって条件分岐/管理がめんどくさい.
|
46
50
|
```Python
|
47
51
|
class Boids:
|
48
52
|
# (略)
|
@@ -51,12 +55,12 @@
|
|
51
55
|
for agent in self.agents:
|
52
56
|
x.append(agent.pos[0])
|
53
57
|
y.append(agent.pos[1])
|
54
|
-
if isinstance(
|
58
|
+
if isinstance(agent, AgentGoForWall):
|
59
|
+
c.append('b')
|
60
|
+
elif isinstance(angent, AgentEdited):
|
61
|
+
c.append('r')
|
62
|
+
else: # 残りは Agent しかないので isinstance(agent, Agent) と等価
|
55
63
|
c.append('k')
|
56
|
-
elif isinstance(AgentEdited, angent):
|
57
|
-
c.append('r')
|
58
|
-
else: # 残りは AgentGoForWall しかないので isinstance(AgentGoForWall, agent) と等価
|
59
|
-
c.append('b')
|
60
64
|
return (np.array(x), np.array(y)), c
|
61
65
|
|
62
66
|
# (略)
|