元Webデザイナー兼コーダーの備忘録

ウェブデザインやプログラミング、ブログのカスタマイズなどについてアウトプットしています。

 メニュー

» HTML入門のまとめはこちらです。

Processing:9方向に移動するランダムウォーク(random walk)

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版)の内容を勉強します。

参考サイト

» HTML入門のまとめはこちらです。