2008後期
情報グラフィックス論U
担当 鳥海有紀
授業資料 情報グラフィックス論U
戻る 次へ

プログラムを書く6−マウス位置を使って描画−

図形を描くときにマウス位置を使うと様々に変化する図形を描くことができる。



//  マウス1:マウス位置を使って描く
  void setup()
  {
    size(300, 300);
  }

  void draw()
  {  
    fill(0, 255, 0);
    ellipse(mouseX, mouseY, 10, 10); 
  }

マウスの現在の位置はmouseXmouseYで取り込むことができる。 この2つの変数を図形の基準位置に使うとマウス位置に図形を表示できる。
draw()関数の最初にbackground(255)を入れるとマウスに図形がついていくような表示になる。


条件文(if文)を使うとマウスクリックなどある条件で表示画像を追加したり、変更することができる。


//  マウス2:マウスクリックで絵を表示する

  int x, y;

  void setup()
  {
    size(300, 300);
  }

  void draw()
  { 
    background(255);
  
    fill(0, 255, 0);
    ellipse(mouseX, mouseY, 10, 10); 
  
    if (mousePressed == true)
    {
      x = mouseX;
      y = mouseY;
      line(x-10, y-10, x+10, y+10);
      line(x-10, y+10, x+10, y-10);
    }
  }

int x, y; 変数の宣言
setup関数、draw関数を使用するとき変数の宣言はブロックの外で行うようにする。 ただし、特別な意図がある場合は適切な位置で宣言することもできる。
mousePressed
マウスが押されると真(ture)になる。 ここではif文の条件に使われている。 つまりマウスが押されるとブロックの中を実行する。

上のプログラムではマウスを押したとき円とクロスの両方が表示される。 if文を発展させて一方の図形だけが表示されるようにする。

elseのある条件文



//  マウス3:if-else文を使う

  int x, y;

  void setup()
  {
    size(300, 300);
  }

  void draw()
  { 
    background(255);
  
    if (mousePressed == true)
    {
      x = mouseX;
      y = mouseY;
      line(x-10, y-10, x+10, y+10);
      line(x-10, y+10, x+10, y-10);
    }
    else 
    {
      fill(0, 255, 0);
      ellipse(mouseX, mouseY, 10, 10);     
    }
  }

if文の条件に合わなかった場合の処理を書き込むのがelse文とそれにつづくブロックである。 else文はif文とセットで使用する。

条件文の色々

if文は入れ子にすることができる。 また、2種類以上の条件判断をしたい場合はelse if文を使用する。

//  マウス4:複数の条件文を使う

  int x, y;

  void setup()
  {
    size(300, 300);

  }

  void draw()
  { 
    background(255);

    if (mousePressed == true)
    {
      x = mouseX;
      y = mouseY;
    
      if (mouseButton == LEFT) 
      {
        stroke(0);
      }
      else if (mouseButton == RIGHT)
      {
        stroke(255, 0, 0);
      }
      else 
      {
        stroke(0, 0, 255);
      }
      line(x-10, y-10, x+10, y+10);
      line(x-10, y+10, x+10, y-10);
    }
    else 
    {
      fill(0, 255, 0);
      ellipse(mouseX, mouseY, 10, 10);     
    }
  }

mouseButton
マウスボタンの番号を知りたい場合に使用する。 左ボタンが押された場合はLEFTRIGHTCENTERが返される。 通常上のプログラムのようにif文の条件文に使用する。

キーボードによる処理を行う場合にはkeyPressedを使い、 keykeyCodeで押されたキーの種類を区別する。

より複雑なプログラムではより細かい処理が必要になるので、 mousePressedmouseReleasedなどを関数で扱うのが一般的である。 詳しくはリファレンスマニュアルやサンプルを参照してください。

Copyright 2002-2008 Yuki Toriumi