The Nature of Code(PDF版)からランダムウォークについて取り上げます。Processingでプログラムを書いて、動作を確認します。動作を確認できるところがProcessingの楽しいところです。今回は、9方向に移動するランダムウォークについて書きます。
9方向に移動するランダムウォーク
前回のコードを変更して、9方向に移動するランダムウォークを作ります。9方向とは、左上、上、右上、左、その場に留まる、右、左下、下、右下の9つです。
class Walker{ int x; int y; Walker(){ x = width/2; y = height/2; } void display(){ stroke(0); point(x, y); } void step(){ int stepx = int(random(3))-1; int stepy = int(random(3))-1; x += stepx; y += stepy; } } Walker w; void setup(){ size(640, 360); w = new Walker(); background(255); } void draw(){ w.step(); w.display(); }
上記のコードでは、9つの方向に移動します。random関数で出力される値が-1、0、1になり、stepxで3通り、stepyで3通りの値をとるためです。
random関数の値の範囲が分かりやすくなるように、少し書き換えます。
class Walker{ float x; float y; ... void step(){ float stepx = random(-1, 1); float stepy = random(-1, 1); x += stepx; y += stepy; } } Walker w; void setup(){ ... } void draw(){ ... }
変数x、y、stepx、stepyをint型からfloat型に変更しました。動作は変わりませんが、コードが少し読みやすくなったと思います。
まとめ
The Nature of Code(PDF版)からランダムウォークについて取り上げました。今回は、移動する方向を増やしました。引き続き、The Nature of Code(PDF版)の内容を勉強します。