基本的な記述ルール¶
artisoc4とartisoc Cloudの基本的な記述ルールの違いについて説明します。
なお、artisoc Cloudの基本的な記述ルールはPythonのものと共通ですので、詳細な点はPython公式ドキュメントなどを参照してください。
大文字と小文字¶
artisoc4では大文字と小文字を区別しません。一方、artisoc Cloudでは大文字と小文字を区別しますので注意してください。
artisoc4
PrintLn(My.X) //エラーにならない
PrintLn(my.x) //小文字でもエラーにならない
artisoc Cloud
print(self.x) # エラーにならない
print(self.X) # エージェント座標xは小文字で定義されているので、大文字だとエラー
コメントアウト¶
artisoc4
//
で定義します。
//これはコメントです
artisoc Cloud
#
で定義します。
#これはコメントです
¶
改行とインデント¶
artisoc4
artisoc4では、改行とインデントについてのルールはありません。つまり、改行とインデントはコードを見やすくするために挿入するものであって、改行とインデントがなくともコードは問題なく動作します。
//改行とインデントを入れた見やすいコード
Agt_Init{
My.X = 3
My.Y = 3
}
//改行やインデントがないコードでも問題なく動く
Agt_Init{
MY.X = 3 My.Y = 3
}
artisoc Cloud
artisoc Cloudでは、改行とインデントを正しく用いないとエラーになります。
# 正しいコード
def agt_init(self):
self.x = 3
self.y = 3
# エラーになるコード
def agt_init(self):
self.x = 3
self.y = 3 # インデントが揃っていないためエラー
演算子¶
四則演算の+, -, *, /
、代入の=
など、おおよそ演算子は共通です。
主な違いとしては、「値が等しくない」ことを表す演算子<>
がartisoc Cloudでは使えません。代わりに!=
を用います。
artisoc4
If My.X <> 3 Then
[処理]
End If
artisoc Cloud
if self.x != 3:
[処理]
また、artisoc Cloudでは変数に値を加える演算子+=
を用いることができます。同様に、-=, *=, /=
を用いることもできます。
artisoc4
Universe.hensuu = Universe.hensuu + 1 //hensuuに1を加える
artisoc Cloud
Universe.hensuu = Universe.hensuu + 1 # hensuuに1を加える
Universe.hensuu += 1 # このように書いてもOK
変数の型¶
artisoc4
artisoc4では、変数の型はツリーで指定するか、ルールエディタ内でDim
を用いて定義します。定義した型に合わない値を代入しようとするとエラーになります。
//整数型変数iを定義し、値を代入
Dim i as integer
i = 3
i = "hoge" //整数型変数に文字列型の値を代入しようとするとエラー
artisoc Cloud
artisoc Cloudでは変数の型定義は必要ありません。変数の型は値が代入されたときに決定され、その変数に別の型の値を上書きすることもできます。
i = 3 # 変数iを定義し、整数型の値3を代入
i = "hoge" # 変数iに文字列型の値"hoge"を上書きすることができる
変数の初期化¶
artisoc4
変数の値は変数の型に応じて決定されます。例えば、数値型の変数であれば初期値は0、エージェント集合型の変数であれば空の集合となります。
ツリー上で作成した変数であれば、「初期値設定」機能を用いて変数の初期値を変更することも可能です。
Univ_Init{
one = CreateAgt(Universe.hiroba.hito)
AddAgt(Universe.people, one) //ツリー上で作成したUniverse変数people(初期値は空)にエージェントを追加
}
artisoc Cloud
ツリー上で作成する変数の場合、初期値は整数の0となります。別の初期値を与えたい場合は、univ_initやagt_initで値を代入する必要があります。
たとえば、エージェント集合型の変数をUniverse変数として作成する場合は、必ずuniv_initで初期化します。
def univ_init(self):
Universe.people = set() # Universe変数peopleを空の集合型変数として初期化
one = create_agt(Universe.hiroba.hito)
Universe.people.add(one) # 空の集合型変数であるpeopleにエージェントoneを追加
エージェントの初期生成¶
artisoc4
artisoc4では、ツリーからエージェントのプロパティを操作することでエージェントの初期生成を行うことができます。下図では、シミュレーション開始時にエージェントを10体生成しています。
artisoc Cloud
artisoc Cloudでは、ツリー上からエージェントを生成することはできません。エージェントを生成するときは必ずルールエディタ内でcreate_agt関数を用います。シミュレーション開始時に生成したい場合は、univ_init内に記述します。
def univ_init(self):
create_agt(Universe.hiroba.hito, num=10) # シミュレーション開始時にhitoエージェントを10体生成