Processing バージョン3.2.3 (7 November 2016)が配信されています.時間があるときにアップデートを.
「マウスカーソルがボール上にあるか否かは関数を利用して判断するとよい。」 とある.
マウスカーソルがボール上にあるかどうかは
の二つの状態しかないので,関数を作る場合は,入力(引数)として「マウスカーソルが上にあるかどうか判断する対象のボールの情報が入った配列」を,出力(戻り値)として「あるかないか」の二つの値どちらかを結果として返せばよい.
この「あるかないか」という二つの値は,今回復習したboolean型を使用するのがちょうどよい.
を結果として返すようにする.
以上から,引数は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の上にマウスカーソルがあったら,赤,でなければ青」と,プログラムを分かりやすく記述することができる.
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; }