Processingという言語がある.Javaで作られた実行環境上で動く超簡単な言語らしい.手軽に図を書いたり,音鳴らしたり,WebCamの画像処理したりできるぽい.
Processingを知ったきっかけは,本屋で
ビジュアライジング・データ ―Processingによる情報視覚化手法
- 作者: Ben Fry,増井俊之(監訳),加藤慶彦
- 出版社/メーカー: オライリージャパン
- 発売日: 2008/12/01
- メディア: 大型本
- 購入: 35人 クリック: 695回
- この商品を含むブログ (67件) を見る
を見つけて.膨大なデータ可視化とかが簡単にできるの?と思って色々調べてみた(本は買ってない…).
で,Webで調べながら適当にコード書いてみた.基本的には文法はJavaと同じ.void setup();やvoid draw();の関数を記述すると,一発実行して終了ではなく,処理がループされるようになる.Javaでいうところの,Runnableをimplementして,run()の中でwhileループ回してる状態.そのrun()の冒頭でsetup()が実行され,つづけてwhile文の中で,上記draw()が呼び続けられるイメージ.
イベントハンドラ的なものもあって,マウスイベントやキーイベントなどは,それ用の関数(例えばvoid mousePressed())を定義するだけでOK.
簡単な例を作ったので貼っておく.
int[] x,y,u,v; // 配列の宣言.Javaと同じ int width, height; // 変数の宣言 int num=100; // 変数の宣言と初期化 int mouseselect; // 初期化陽関数 // 実行時,一度だけ呼ばれるっぽい void setup() { mouseselect=0; width=640; height=480; size(width,height); // 配列の初期化.Javaと同じ x=new int[num]; y=new int[num]; u=new int[num]; v=new int[num]; for(int i=0;i<num;i++){ // forループ.()内でループ用の変数を宣言できる x[i]=0; y[i]=0; u[i]=5; v[i]=5; } } // 自前の関数 void drawInit(){ background(0); text("クリックするとマウスの位置へボールが移動",300,200); } // 自前の関数.戻り値,引数とも自由にできそう void drawPoints(int i){ if(x[i]<0 || x[i]>=width)u[i]*=-1; if(y[i]<0 || y[i]>=height)v[i]*=-1; x[i]+=u[i]; y[i]+=v[i]; ellipse(x[i],y[i],30,30); } // 画面描画用の関数 // 常に繰り返し呼ばれる? void draw() { drawInit(); for(int i=0;i<num;i++) drawPoints(i); } // マウスイベント(mousePressed)の関数 // マウスPress後に呼ばれる void mousePressed() { mouseselect+=1; if(mouseselect>=num) mouseselect=0; x[mouseselect]=mouseX; y[mouseselect]=mouseY; }