はじめに
つぶやき Processing で、特にアニメーション作品を作る場合に、 フレームごとに増加するカウンタ値が必要となる場合があります。
この短いメモでは、そのような少しずつ増加する値を、 code golf の視点で考えてみます。
グローバル変数を使う方法
Processing では、draw 関数は各フレームごとに呼び出されます。 そこで、例えばグローバル変数 F を定義しておき、 draw 関数の中で、例えば 0.001 づつ増加させるーという方法が考えられます。
コードで書くと、次のようになります:
f=0
def draw():
global f
f+=0.001
frameCount 変数を使う方法
Processing では、システム側で用意されているグローバル変数 frameCount に 現在描画中のフレーム番号(整数)が格納されています。 この値を活用して、0.001 刻みで増加する変数を作ってみます。 …といっても非常に簡単で、frameCount*0.001 とすれば十分です。
結局どちらが code golf 的には得なのか?
グローバル変数を用いる方法では、必要な文字数は
f=0
# draw 関数内にて
global f;f+=0.001
結局、文字数としては、20 文字を必要とします。
一方、frameCount に値を乗じる方法では、
f=frameCount*0.001
となり、18 文字です。
つまり、フレームごとに増加するカウンタ変数が必要であれば、 frameCount に増分だけ乗ずる方法の方が code golf 的にはお得である ーということになります。
ちなみに、Python の場合、0.001 の最初の 0 は省略できるので(.001 と書けば良い)、 どちらの方法でも、実は 1 文字少なく記述できます。