はじめてのミッションエディット 演算子編 -ArmA訓練所-

ArmA訓練所
2007/06/30

目次


演算子を覚えよう

ArmAではスクリプトコマンドを使ってエディターでは出来ないような様々なことが実現可能です。
しかし、いきなり複雑な演出をするコマンドを使おうとしてもうまくできません。
ここではスクリプトコマンドを使う上で基本となる演算子について紹介します。

演算子

ArmAのスクリプトの書き方はインタプリタ型プログラミング言語と似ています。
変数の型宣言は必要ではなく、直接変数を代入できます。
これらの変数や値に対して四則演算や比較などが出来ます。
演算や比較に使う記号を演算子といいます。スクリプトの基本になるので覚えておきましょう。

算術演算子

数値を計算するのに使います。
かけ算はアスタリスク、割り算はスラッシュ、余りはパーセント記号かmod、累乗はハット記号(キャレット)を使います。
演算結果はNumberを返します。

演算子効果
+加算a + b
-減算a - b
*乗算a * b
/除算a / b
%剰余a % b
mod剰余a mod b
^累乗a ^ b

論理演算子

Boolean値を組み合わせるのに使います。
否定を使うと条件を反転させることも出来ます。
演算結果はBooleanを返します。

演算子効果
!否定!a
not否定not a
&&論理積a && b
and論理積a and b
||論理和a || b
or論理和a or b

Example:

not ( alive unitA ) ユニットAが死亡した場合

( unitA in thisList ) or ( unitB in thisList ) ユニットAまたはBがこのトリガーに入った場合
( unitA in thisList ) || ( unitB in thisList ) 同上

( unitA in thisList ) and ( unitB in thisList ) ユニットAとBが共にこのトリガーに入った場合
( unitA in thisList ) && ( unitB in thisList ) 同上

not alive unitA and alive unitB ユニットAが死亡し、ユニットBが生きている場合
not ( alive unitA ) and alive unitB 同上
not ( alive unitA and alive unitB ) ユニットAとBのどちらかが死亡した場合

排他的論理演算子はありません。
以下のようにすると同じことが出来ます。

演算子置き換え
Xor(a || b) && !(a && b)
Nor!(a || b)
Nand!(a && b)

比較演算子

値を比較するのに使います。
比較結果はBooleanを返します。

演算子効果
==等しいa == b
!=異なるa != b
<小なりa < b
>大なりa > b
<=以下a <= b
>=以上a >= b

配列の演算

配列を代入すると配列のリファレンス(参照)が代入されます。
参照ではなく、コピー(複製)を与えたいときは先頭に+記号を付けます。

Example 1:

_arrayA = [1,2];
_arrayB = _arrayA;(_arrayBに_arrayAの参照を代入)
_arrayA set [0,5];(_arrayAの0番目を5にする)

_arrayA は [5,2] (setコマンドを使ったため、_arrayAの値が[5,2]となっている)
_arrayB は [5,2] (特に操作していない_arrayBの値も_arrayAと同じになっている)

Example 2:

_arrayA = [1,2];
_arrayB = +_arrayA;(_arrayBに_arrayAのコピーを代入)
_arrayA set [0,5];(_arrayAの0番目を5にする)

_arrayA は [5,2] (setコマンドを使ったため、_arrayAの値が[5,2]となっている)
_arrayB は [1,2] (特に操作していない_arrayBの値はsetコマンドを使う前の_arrayAと同じままである)

配列は結合することと、値を除外させることが可能です。

演算子効果
+結合myArray1 + myArray2
-除外myArray1 - myArray2

Example 1:

_arrayA = [1,2];
_arrayB = [3,2,4];

_arrayC = _arrayA + _arrayB;

_arrayC は [1,2,3,2,4] (_arrayAの後に_arrayBが追加されている)

Example 2:

_arrayA = [1,2,3,2,4];
_arrayB = [2,3];

_arrayC = _arrayA - _arrayB;

_arrayC は [1,4] (_arrayAから_arrayBの値が除外されている)

文字列の演算

文字列を結合することが可能です。

演算子効果
+結合myString1 + myString2

Example:

_stringA = "Hello ";
_stringB = "World!";

_stringC = _stringA + _stringB;

_stringC は "Hello World!" (_stringAの後に_stringBが結合されている)

Homeへ