#author("2016-11-10T00:52:28+09:00","default:kyo-in","kyo-in")
*ニュース [#ie01e865]
Processiing バージョン3.2.3 (7 November 2016)が配信されています.時間があるときにアップデートを.

https://processing.org/

*予習 [#x6cf8886]
**演習問題: 問題1 [#me3f64ac]
「マウスカーソルがボール上にあるか否かは関数を利用して判断するとよい。」
とある.

マウスカーソルがボール上にあるかどうかは
-マウスカーソルがボール上にある
-マウスカーソルがボール上にない

の二つの状態しかないので,関数を作る場合は,入力(引数)として「マウスカーソルが上にあるかどうか判断する対象のボールの情報が入った配列」を,出力(戻り値)として「あるかないか」の二つの値どちらかを結果として返せばよい.

この「あるかないか」という二つの値は,今回復習したboolean型を使用するのがちょうどよい.

-ボール上にある→true
-ボール上にない→false

を結果として返すようにする.

以上から,引数はfloatの配列,戻り値(の型)はboolean,関数名は好みでよいが,ここでは「ボールの上にカーソルはあるか?」ということでIsCursorOnBallとすると,

 boolean isCursorOnBall(float[] b){
 //ボールbの上ににマウスカーソルがあれば
 //return true;
 //ボールbの上にマウスカーソルがなければ
 //return false;
 //というプログラムをここに書く
 }

という関数を完成させればよい.

この関数がきちんと完成したのであれば,

 void draw(){
 ...
 
 if (isCursorOnBall(ball0))
   fill(255,0,0);
 else
   fill(0,0,255);
 
 ...
 }

として「ball0の上にマウスカーソルがあったら,赤,でなければ青」と,プログラムを分かりやすく記述することができる.

*復習ドリルの解答例 [#u715dbc8]
 void setup(){
  //(1)
  printHello();
  //(2)
  printHello2();
  //(3)
  printHellos(10);
  //(4)
  calc1(8);
  calc1(10);
  //(5)
  println("calc2="+calc2(5));
  //(6)
  println(calc3(5)+calc3(1));
  //(7)
  println(calc4(5, 1));
  //(8)
  println(calc5(5, 1, 4));
  //(9)
  println(sum(10));
  //(10)
  println(sum(1, 100));
  //(11)
  int[] a = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
  println(sum(a, 0));
  println(sum(a, 9));
  println(sum(a, 10));
  //(12)
  int[] a2 = {10, 9, 8, 4, 15, 0, -3, 18, 9, 7};
  println(selectMaxValue(a2));
  //(13)
  println(selectMaxIndex(a2));
  //(14)
  println(selectMinIndex(a2));
  //(15)
  println(selectDiffMaxMinValue(a2));
  //(16)
  int[] p = {10, 9, 8, 4, 15, 0, -3, 18, 9, 7};
  swapArrayElements(p, 0, 9);
  for(int i = 0; i < p.length; i++)
    print(p[i] + " ");
  println("");
  //(17)
  println(selectMaxIndex(a2, 1, 6));
  //(18)
  int[] a3 ={1,2,3,4};
  int[] b3 ={4,3,2,1};
  swapTwoArrays(a3, b3);
  for(int i = 0; i < a3.length; i++)
    print(a3[i] + " ");
  println("");
  for(int i = 0; i < b3.length; i++)
    print(b3[i] + " ");
  println("");
 }
 
 void printHello(){
  println("Hello World");
 }
 
 void printHello2(){
  printHello();
  printHello();
 }
 
 void printHellos(int n)
 {
  for(int i = 0; i < n; i++)
    printHello();
 }
 
 void calc1(int x)
 {
  if (x < 10)
    println("small number");
 }
 
 int calc2(int x)
 {
  return x * 2;
 }
 
 float calc3(float x)
 {
  return x * 2;
 }
 
 int calc4(int x, int y)
 {
  return (x + y) * 2;
 }
 
 int calc5(int x, int y, int z)
 {
  return (x + y + z) * 2;
 }
 
 int sum(int n)
 {
  int s = 0;
  for(int i = 0; i <= n; i++)
    s += i;
  return s;
 }
 
 int sum(int p, int q)
 {
  int s = 0;
  for(int i = p; i <= q; i++)
    s += i;
  return s;
 }
 
 int sum(int[] a, int index)
 {
   if ((index < 0) || (index >= a.length))
   {
     println("Index Error!");
     return -1;
   }
  
   int s = 0;
   for(int i = index; i < a.length; i++)
   s += a[i];
   return s;
 }
 
 int selectMaxValue(int[] a)
 {
    int max = a[0];
    for(int i = 1; i < a.length; i++)
    {
      if (max < a[i])
        max = a[i];
    }
    return max;
 }
 
 int selectMaxIndex(int[] a)
 {
  int max = a[0];
  int maxIndex = 0;
  for(int i = 1; i < a.length; i++)
  {
    if (max < a[i])
    {
      max = a[i];
      maxIndex = i;
    }
  }
  return maxIndex;
 } 
 
 int selectMinIndex(int[] a)
 {
  int min = a[0];
  int minIndex = 0;
  for(int i = 1; i < a.length; i++)
  {
    if (min > a[i])
    {
      min = a[i];
      minIndex = i;
    }
  }
  return minIndex;
 }
 
 int selectDiffMaxMinValue(int[] p)
 {
  int maxIndex = selectMaxIndex(p);
  int minIndex = selectMinIndex(p);
  return p[maxIndex] - p[minIndex];
 }  
 
 void swapArrayElements(int[] p, int i, int j)
 {
 int tmp = p[i];
 p[i] = p[j];
 p[j] = tmp;
 }
 
 int selectMaxIndex(int[] a, int i, int j)
 {
  int max = a[i];
  int maxIndex = i;
  for(int index = i+1; index <= j; index++)
  {
    if (max < a[index])
    {
      max = a[index];
      maxIndex = index;
    }
  }
  return maxIndex;
 }
 
 boolean swapTwoArrays(int[] a, int[] b)
 {
  if (a.length != b.length)
    return false;
    
  for(int i = 0; i < a.length; i++)
  {
    int tmp = a[i];
    a[i] = b[i];
    b[i] = tmp;
  }
  
  return true;
 }


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS