Contenu connexe
Similaire à 論理思考とプログラミング第10回
Similaire à 論理思考とプログラミング第10回 (9)
Plus de Noritada Shimizu (20)
論理思考とプログラミング第10回
- 6. クラス宣言しよう class Ball{ } 中身を埋めよう 次のものを表す変数をたそう X座標 Y座標 直径 2010.6.17 6 論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp>
- 7. 動く円のクラスを作ろう class Ball{ float x; // 中心のX座標 float y; // 中心のY座標 float r; // 直径 } 2010.6.17 7 論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp>
- 9. インスタンスを作ろう class Ball{ float x; float y; float r; } Ballb; void setup(){ b= new Ball(); } 2010.6.17 9 論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp>
- 10. インスタンス変数に代入しよう class Ball{ float x; float y; float r; } Ball b; void setup(){ b = new Ball(); b.x = 200; b.y = 200; } 2010.6.17 10 論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp>
- 12. 例 void draw(){ stroke(192, 192, 192, 255); fill(192, 0, 192, 255); ellipse(b.x, b.y, b.r, b.r); } 2010.6.17 12 論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp>
- 13. ボールを表示するメソッドを作ろう void draw(){ stroke(192, 192, 192, 255); fill(192, 0, 192, 255); ellipse(b.x, b.y, b.r, b.r); } ここをメソッドにする 2010.6.17 13 論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp>
- 14. どこでメソッドを定義したら良いか? 候補 Ballクラスの中 メインのプログラムの中 表示する責任は誰が負っているのか? Ballの各インスタンスが負っているなら、Ballクラスの中 メインのプログラムなら、メインのプログラム中 2010.6.17 14 論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp>
- 16. 定義例 class Ball{ float x; float y; float r; void draw(){ stroke(192, 192, 192, 255); fill(192, 0, 192, 255); ellipse(x,y,r,r); } } 2010.6.17 16 論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp>
- 17. 呼び出した例 void draw(){ b.draw(); } 2010.6.17 17 論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp>
- 18. 落ちる動きを作ろう スピードを表す変数を作ろう 落ちる Y座標が大きくなる 重力によって大きくなる量が増える 落ちる動きをメソッドにまとめ、Ballクラスに追加しよう 2010.6.17 18 論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp>
- 19. 落ちるメソッドを追加した例 class Ball{ float x; float y; float r; float dy; void draw(){ stroke(192, 192, 192, 255); fill(192, 0, 192, 255); ellipse(x, y, r, r); } void move(){ dx = dx + 0.05; y = y + dy; } } 2010.6.17 19 論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp>
- 22. 跳ね返るメソッドを追加した例 class Ball{ float x; float y; float r; float dy; void draw(){ stroke(192, 192, 192, 255); fill(192, 0, 192, 255); ellipse(x, y, r, r); } void move(){ dx = dx + 0.05; y = y + dy; } void bound(){ if(height - r/2 <= y){ dy = dy *0.6 * -1; } if(x <= r/2 || width - r/2 <= x){ dx = dx * -1; } } } 2010.6.17 22 論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp>
- 29. 真横の場合 (x1, y1) (x2, y1) x2 – x1 2010.6.17 29 論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp>
- 30. 1フレームで進む量 (x1, y1) (x2, y1) (x2 – x1) / N 2010.6.17 30 論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp>
- 31. 真上の場合 (x1, y2) (x1, y1) y2 – y1 2010.6.17 31 論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp>
- 32. 1フレームで進亮 (x1, y2) (y2 – y1) / N (x1, y1) 2010.6.17 32 論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp>
- 33. ある地点へ円を動かす y2 – y1 (x2, y2) (x1, y1) x2 – x1 2010.6.17 33 論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp>
- 34. クリックされた点へ動かす クリック mouseY – y1 (mouseX, mouseY) (x1, y1) mouseX – x1 2010.6.17 34 論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp>
- 38. 各変数のことを要素と呼びます 要素 要素 要素 要素 Ball Ball Ball Ball 配列 2010.6.17 38 論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp>
- 39. 各要素はすべて同じ型です 要素 要素 要素 要素 Ball Ball Ball Ball 配列 2010.6.17 39 論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp>
- 40. 配列内での位置があります 0番目 3番目 1番目 2番目 Ball Ball Ball Ball 配列 2010.6.17 40 論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp>
- 41. 配列には長さがあります Ball Ball Ball Ball 長さ4の配列 2010.6.17 41 論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp>
- 45. 配列の初期化 balls = new Ball[4]; inti = 0; while(i < balls.length){ balls[i] = new Ball(); } 2010.6.17 45 論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp>
- 46. 同じメソッドを呼ぶ inti = 0; while(i < balls.length){ balls[i].draw(); } i番目の要素のdrawメソッドを呼ぶ 2010.6.17 46 論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp>
- 47. 配列を使ってみよう 10個のボールを配列を使って管理しよう やること 配列を宣言しよう 宣言した配列を初期化しよう メインのプログラムのdrawメソッド内で、要素すべてのdraw, move, boundメソッドを呼び出そう 2010.6.17 47 論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp>