Processingやってみた

Processingという言語がある.Javaで作られた実行環境上で動く超簡単な言語らしい.手軽に図を書いたり,音鳴らしたり,WebCamの画像処理したりできるぽい.

こことかこことかが参考になるかも.

Processingを知ったきっかけは,本屋で

を見つけて.膨大なデータ可視化とかが簡単にできるの?と思って色々調べてみた(本は買ってない…).

で,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;
}

コメントする