- 追加された行はこの色です。
- 削除された行はこの色です。
#author("2016-09-21T14:01:51+09:00","default:kyo-in","kyo-in")
[[プログラミング基礎/2015/2015年12月17日]]
#author("2016-09-21T14:50:01+09:00","default:kyo-in","kyo-in")
*講義資料の予習 [#t51bdd23]
**練習問題の詳しい解説 [#j6b42a71]
練習: 人の並び - 解答例
size(400, 400); // ウィンドウのサイズ
background(255, 255, 255); // 背景色(白)
noStroke(); // 輪郭線を無効に
int x = 50; // 人の中心の x座標の初期値
int y = 300; // 人の足元の y座標
int dx = 50; // 人の中心線間の距離
int[] h; // 身長
int w = 20; // 体の幅
int d = 30; // 顔の直径
h = new int[] { 145, 186, 176, 168, 186, 156, 172 }; // 身長; 人数は7名
fill(0, 0, 0); // 塗る色 (黒)
for(int i = 0; i < h.length; i++) {
ellipse(x, y - h[i], d, d); // 頭
rect(x - w / 2, y - h[i], w, h[i]); // 胴体
x = x + dx;
}
これはfor文を使わずに書くと次のようになる.
size(400, 400); // ウィンドウのサイズ
background(255, 255, 255); // 背景色(白)
noStroke(); // 輪郭線を無効に
int x = 50; // 人の中心の x座標の初期値
int y = 300; // 人の足元の y座標
int dx = 50; // 人の中心線間の距離
int[] h; // 身長
int w = 20; // 体の幅
int d = 30; // 顔の直径
h = new int[] { 145, 186, 176, 168, 186, 156, 172 }; // 身長; 人数は7名
fill(0, 0, 0); // 塗る色 (黒)
ellipse(x, y - h[0], d, d); // 頭
rect(x - w / 2, y - h[0], w, h[0]); // 胴体
x = x + dx;
ellipse(x, y - h[1], d, d); // 頭
rect(x - w / 2, y - h[1], w, h[1]); // 胴体
x = x + dx;
ellipse(x, y - h[2], d, d); // 頭
rect(x - w / 2, y - h[2], w, h[2]); // 胴体
x = x + dx;
ellipse(x, y - h[3], d, d); // 頭
rect(x - w / 2, y - h[3], w, h[3]); // 胴体
x = x + dx;
ellipse(x, y - h[4], d, d); // 頭
rect(x - w / 2, y - h[4], w, h[4]); // 胴体
x = x + dx;
ellipse(x, y - h[5], d, d); // 頭
rect(x - w / 2, y - h[5], w, h[5]); // 胴体
x = x + dx;
ellipse(x, y - h[6], d, d); // 頭
rect(x - w / 2, y - h[6], w, h[6]); // 胴体
上記から分かる通り,似たようなことを繰り返し書かれており,無駄が多い.そこでfor文使うわけである.
最初の一人だけ描く部分を取り出すと以下になる.
size(400, 400); // ウィンドウのサイズ
background(255, 255, 255); // 背景色(白)
noStroke(); // 輪郭線を無効に
int x = 50; // 人の中心の x座標の初期値
int y = 300; // 人の足元の y座標
int dx = 50; // 人の中心線間の距離
int[] h; // 身長
int w = 20; // 体の幅
int d = 30; // 顔の直径
h = new int[] { 145, 186, 176, 168, 186, 156, 172 }; // 身長; 人数は7名
fill(0, 0, 0); // 塗る色 (黒)
ellipse(x, y - h[0], d, d); // 頭
rect(x - w / 2, y - h[0], w, h[0]); // 胴体
ここでh[0]は145であるから,これは以下と同じことである.
size(400, 400); // ウィンドウのサイズ
background(255, 255, 255); // 背景色(白)
noStroke(); // 輪郭線を無効に
int x = 50; // 人の中心の x座標の初期値
int y = 300; // 人の足元の y座標
int dx = 50; // 人の中心線間の距離
int[] h; // 身長
int w = 20; // 体の幅
int d = 30; // 顔の直径
h = new int[] { 145, 186, 176, 168, 186, 156, 172 }; // 身長; 人数は7名
fill(0, 0, 0); // 塗る色 (黒)
ellipse(x, y - 145, d, d); // 頭
rect(x - w / 2, y - 145, w, 145); // 胴体
なぜ以下の2行で人が描けるかは黒板で解説予定.
ellipse(x, y - 145, d, d); // 頭
rect(x - w / 2, y - 145, w, 145); // 胴体
あとは演習問題が掲示されていれば最初の1問を解きながら質問タイムの予定.