SlideShare a Scribd company logo
1 of 90
論理思考とプログラミング#08 清水智公 chiko at sfc.keio.ac.jp 2009.12.3 1 論理思考とプログラミング #08  N.Shimizu
先週の論理思考とプログラミング 2009.12.3 2 論理思考とプログラミング #08  N.Shimizu
変数宣言 型 名前 2009.12.3 3 論理思考とプログラミング #08  N.Shimizu
繰り返し while( 条件 ){ 処理 } この条件が真かどうかを調べる 2009.12.3 4 論理思考とプログラミング #08  N.Shimizu
条件分岐 if (条件){ 処理A }else{ 処理B } 条件が成立する->処理Aを実行 成立しない->処理Bを実行 elseの部分は省略できる 2009.12.3 5 論理思考とプログラミング #08  N.Shimizu
こういう絵を描いてみよう 2009.12.3 6 論理思考とプログラミング #08  N.Shimizu
仕様 400本線を引く 背景は黒 始点はランダム 終点もランダム 色はランダム 不透明度もランダム 2009.12.3 7 論理思考とプログラミング #08  N.Shimizu
例 2009.12.3 8 論理思考とプログラミング #08  N.Shimizu
width, height width : 画面の幅 height : 画面の高さ 最初から宣言されている変数 2009.12.3 9 論理思考とプログラミング #08  N.Shimizu
書き直してみた 2009.12.3 10 論理思考とプログラミング #08  N.Shimizu
400回繰り返す inti = 0; while(i < 400){ 処理 i = i +1; } 繰り返す前に必ずやること 繰り返しの最後に必ずやること 2009.12.3 11 論理思考とプログラミング #08  N.Shimizu
for文で簡潔に書けるよ 繰り返す前に必ずやること for(inti = 0; i < 400; i = i + 1){ 処理 } 繰り返しの最後に必ずやること 2009.12.3 12 論理思考とプログラミング #08  N.Shimizu
書き直してみた 2009.12.3 13 論理思考とプログラミング #08  N.Shimizu
こういう絵を描いてみよう 黒地に円を書く 塗りはなし 上3分の1は赤の円 次の3分の1は青の円 最後の3分の1は緑の円 円の大きさ、位置はランダム 2009.12.3 14 論理思考とプログラミング #08  N.Shimizu
例 2009.12.3 15 論理思考とプログラミング #08  N.Shimizu
色 color型 colorメソッドで色作成 2009.12.3 16 論理思考とプログラミング #08  N.Shimizu
3つ以上の場合わけ if(場合Aの条件){ 処理A }else if(場合Bの条件){ 処理B }else{ 処理C } A B C 2009.12.3 17 論理思考とプログラミング #08  N.Shimizu
こういう絵を描いてみよう 2009.12.3 18 論理思考とプログラミング #08  N.Shimizu
例 前処理 2009.12.3 19 論理思考とプログラミング #08  N.Shimizu
例(つづき) 2009.12.3 20 論理思考とプログラミング #08  N.Shimizu
プログラム例の構成 前処理 for(inti = 0; i < 400; i = i + 1){ 円の中心座標と半径の決定 色の決定 描画 } 2009.12.3 21 論理思考とプログラミング #08  N.Shimizu
色の決定方法 2009.12.3 22 論理思考とプログラミング #08  N.Shimizu
インタラクションを加えてみよう 2009.12.3 23 論理思考とプログラミング #08  N.Shimizu
プログラミングのモデルが変わります 今まで: 上から順番に実行される フロー駆動型 (flow driven) これから イベントに対応した部分のみ実行される イベント駆動型 (event driven) 2009.12.3 24 論理思考とプログラミング #08  N.Shimizu
イベント マウスのボタンが押される マウスのボタンが離される キーボードのキーが押される キーボードのキーが離される 一定期間が過ぎる 2009.12.3 25 論理思考とプログラミング #08  N.Shimizu
イベントに対応した部分 イベントハンドラ (event handler) 特別な名前をもったメソッド mousePressed() mouseMoved() draw() メソッドを自分で作らなくてはいけない! 2009.12.3 26 論理思考とプログラミング #08  N.Shimizu
これを入力して実行してください 2009.12.3 27 論理思考とプログラミング #08  N.Shimizu
解説 起動時に実行される 2009.12.3 28 論理思考とプログラミング #08  N.Shimizu
解説 ボタンが離されたら実行される 2009.12.3 29 論理思考とプログラミング #08  N.Shimizu
解説 一定期間がすぎたら 実行される 2009.12.3 30 論理思考とプログラミング #08  N.Shimizu
マウスカーソルの位置 用意されている変数から読み取る X座標:mouseX(float型) Y座標:mouseY(float型) 2009.12.3 31 論理思考とプログラミング #08  N.Shimizu
利用例 mouseX mouseY 2009.12.3 32 論理思考とプログラミング #08  N.Shimizu
一定期間で消えるようにしよう 一定期間 経つと 2009.12.3 33 論理思考とプログラミング #08  N.Shimizu
どれくらいの期間で消すか 3秒後に消えることにしましょう とりあえず円が一つの場合を考えよう 3秒経つ 2009.12.3 34 論理思考とプログラミング #08  N.Shimizu
3秒ってどうやって測るの? 2009.12.3 35 論理思考とプログラミング #08  N.Shimizu
drawメソッドでできるよ! 2009.12.3 36 論理思考とプログラミング #08  N.Shimizu
解説 一定期間がすぎたら 実行される 2009.12.3 37 論理思考とプログラミング #08  N.Shimizu
解説 一定間隔で実行される 2009.12.3 38 論理思考とプログラミング #08  N.Shimizu
フレームレート drawメソッドを呼び出す間隔 正確には画面の描画回数 FPS (Frame Per Second) frameRate(<フレームレート>) <フレームレート>には正の実数を書く E.g. frameRate(30); と書くと秒間30回実行する 2009.12.3 39 論理思考とプログラミング #08  N.Shimizu
どこで指定すれば良いの? 1回指定すれば十分 2009.12.3 40 論理思考とプログラミング #08  N.Shimizu
消すにはどうすれば良いの? 2009.12.3 41 論理思考とプログラミング #08  N.Shimizu
実行してみよう 2009.12.3 42 論理思考とプログラミング #08  N.Shimizu
反応遅くない? 2009.12.3 43 論理思考とプログラミング #08  N.Shimizu
描画の仕組み プログラム ellipse ellipse ellipse ellipse 画面の状態を 記憶している変数 転送 転送 転送 フレームレート:転送の頻度 実際の画面 2009.12.3 44 論理思考とプログラミング #08  N.Shimizu
フレームレートが低い 1秒間に画面に転送する機会が少ない 次に転送するまでの期間が長い 画面への描画命令の反映が遅い 反応が遅い イラッとくる 2009.12.3 45 論理思考とプログラミング #08  N.Shimizu
フレームレートは高くでも消えるまでは長くしたい 2009.12.3 46 論理思考とプログラミング #08  N.Shimizu
円の生存期間を記憶しよう ttlという名前の変数を作る int型 初期値は90 ( 30fps * 3 ; 3秒間のフレーム数) 1フレームごとに1減る 0になったときに円を消す 2009.12.3 47 論理思考とプログラミング #08  N.Shimizu
ttlを宣言する場所が重要 メソッドの外で 宣言しよう! 2009.12.3 48 論理思考とプログラミング #08  N.Shimizu
フレームごとの処理 2009.12.3 49 論理思考とプログラミング #08  N.Shimizu
「== 」って何? 2009.12.3 50 論理思考とプログラミング #08  N.Shimizu
フレームごとの処理 ttlが0と等しいか? 2009.12.3 51 論理思考とプログラミング #08  N.Shimizu
実行してみよう 2009.12.3 52 論理思考とプログラミング #08  N.Shimizu
二回目以降すぐ消えちゃう>< 2009.12.3 53 論理思考とプログラミング #08  N.Shimizu
クリックごとにttlを初期化しよう 2009.12.3 54 論理思考とプログラミング #08  N.Shimizu
実行してみよう 2009.12.3 55 論理思考とプログラミング #08  N.Shimizu
じわじわ消えるように改良しよう 1秒ごとにじわじわ消えるようにしよう じわじわ消える 不透明度の低い背景色で塗る fill(0, 0, 0, 60); rect(0, 0, width, height); 2009.12.3 56 論理思考とプログラミング #08  N.Shimizu
実際に作ってみよう 2009.12.3 57 論理思考とプログラミング #08  N.Shimizu
私の例 2009.12.3 58 論理思考とプログラミング #08  N.Shimizu
円を二つにしてみよう 今のもの 円は二つ以上描ける 消えるタイミングは一緒 改良後 描ける円は二つ 消えるタイミングは別 2009.12.3 59 論理思考とプログラミング #08  N.Shimizu
消し方に工夫がいる 今:全体を黒く塗りつぶしている 改良後:円の部分だけ黒く塗りつぶす 描いた場所を覚えておかなくてはいけない 半径も覚えておかなくちゃいけない ttlも別々に用意しなくてはいけない 2009.12.3 60 論理思考とプログラミング #08  N.Shimizu
変数を宣言しよう 2009.12.3 61 論理思考とプログラミング #08  N.Shimizu
変数の役割 2009.12.3 62 論理思考とプログラミング #08  N.Shimizu
新しい方を残す 2009.12.3 63 論理思考とプログラミング #08  N.Shimizu
drawの中での処理 2009.12.3 64 論理思考とプログラミング #08  N.Shimizu
実行してみよう 2009.12.3 65 論理思考とプログラミング #08  N.Shimizu
3つの円を・・・ もう勘弁してください 2009.12.3 66 論理思考とプログラミング #08  N.Shimizu
同じような処理はまとめたい 二つの円を表すのに使った変数 位置(x1, y1とx2, y2) 大きさ (r1とr2) 生存期間(ttl1とttl2) 円を描く処理 徐々に消していく処理 2009.12.3 67 論理思考とプログラミング #08  N.Shimizu
クラスにまとめましょう 2009.12.3 68 論理思考とプログラミング #08  N.Shimizu
クラス? 変数の型 構成要素 状態を表すいくつかの変数 状態に基づいて動くいくつかのメソッド 2009.12.3 69 論理思考とプログラミング #08  N.Shimizu
クラスの定義 名前 class {と}の間に構成要素書く 2009.12.3 70 論理思考とプログラミング #08  N.Shimizu
変数を追加しよう 2009.12.3 71 論理思考とプログラミング #08  N.Shimizu
クラスを使って変数を宣言しよう 2009.12.3 72 論理思考とプログラミング #08  N.Shimizu
値を代入しよう ・・・値? 2009.12.3 73 論理思考とプログラミング #08  N.Shimizu
円を作ってc1, c2に代入 2009.12.3 74 論理思考とプログラミング #08  N.Shimizu
Circleとc1, c2との関係 Circle :クラス 「円とは何か」 定義 c1, c2 :オブジェクト 一つ一つの円 クラスによって定義される具体的なもの 2009.12.3 75 論理思考とプログラミング #08  N.Shimizu
値を使ってみよう 2009.12.3 76 論理思考とプログラミング #08  N.Shimizu
がんばって置き換えよう 2009.12.3 77 論理思考とプログラミング #08  N.Shimizu
がんばって置き換えよう 2009.12.3 78 論理思考とプログラミング #08  N.Shimizu
Edit -> Find  2009.12.3 79 論理思考とプログラミング #08  N.Shimizu
動かしてみよう 2009.12.3 80 論理思考とプログラミング #08  N.Shimizu
AとBはほとんど一緒の処理 A B 2009.12.3 81 論理思考とプログラミング #08  N.Shimizu
クラスの中にまとめよう メソッドとしてまとめる 名前を決める クラス定義の中に書く 2009.12.3 82 論理思考とプログラミング #08  N.Shimizu
まとめてみた 2009.12.3 83 論理思考とプログラミング #08  N.Shimizu
書いた場所 2009.12.3 84 論理思考とプログラミング #08  N.Shimizu
使ってみよう 2009.12.3 85 論理思考とプログラミング #08  N.Shimizu
drawの中での処理 C D 2009.12.3 86 論理思考とプログラミング #08  N.Shimizu
まとめよう! 2009.12.3 87 論理思考とプログラミング #08  N.Shimizu
書いた場所 2009.12.3 88 論理思考とプログラミング #08  N.Shimizu
実行してみよう 2009.12.3 89 論理思考とプログラミング #08  N.Shimizu
今日のまとめ イベント駆動型プログラム クラスとオブジェクト 2009.12.3 90 論理思考とプログラミング #08  N.Shimizu

More Related Content

Similar to 論理思考とプログラミング#08

論理思考とプログラミング第11回
論理思考とプログラミング第11回論理思考とプログラミング第11回
論理思考とプログラミング第11回
Noritada Shimizu
 
論理思考とプログラミング第9回
論理思考とプログラミング第9回論理思考とプログラミング第9回
論理思考とプログラミング第9回
Noritada Shimizu
 
論理思考とプログラミング第10回
論理思考とプログラミング第10回論理思考とプログラミング第10回
論理思考とプログラミング第10回
Noritada Shimizu
 
論理指向とプログラミング2010年度秋学期第9回
論理指向とプログラミング2010年度秋学期第9回論理指向とプログラミング2010年度秋学期第9回
論理指向とプログラミング2010年度秋学期第9回
Noritada Shimizu
 
論理思考とプログラミング第10回
論理思考とプログラミング第10回論理思考とプログラミング第10回
論理思考とプログラミング第10回
Noritada Shimizu
 
論理思考とプログラミング第8回
論理思考とプログラミング第8回論理思考とプログラミング第8回
論理思考とプログラミング第8回
Noritada Shimizu
 
2010年度秋学期論理思考とプログラミング第8回
2010年度秋学期論理思考とプログラミング第8回2010年度秋学期論理思考とプログラミング第8回
2010年度秋学期論理思考とプログラミング第8回
Noritada Shimizu
 

Similar to 論理思考とプログラミング#08 (13)

論理思考とプログラミング第11回
論理思考とプログラミング第11回論理思考とプログラミング第11回
論理思考とプログラミング第11回
 
論理思考とプログラミング第9回
論理思考とプログラミング第9回論理思考とプログラミング第9回
論理思考とプログラミング第9回
 
論理思考とプログラミング第10回
論理思考とプログラミング第10回論理思考とプログラミング第10回
論理思考とプログラミング第10回
 
論理指向とプログラミング2010年度秋学期第9回
論理指向とプログラミング2010年度秋学期第9回論理指向とプログラミング2010年度秋学期第9回
論理指向とプログラミング2010年度秋学期第9回
 
論理思考とプログラミング第10回
論理思考とプログラミング第10回論理思考とプログラミング第10回
論理思考とプログラミング第10回
 
DXRubyとスプライトエディタ
DXRubyとスプライトエディタDXRubyとスプライトエディタ
DXRubyとスプライトエディタ
 
HoloLens参考書読書会 vol9
HoloLens参考書読書会 vol9HoloLens参考書読書会 vol9
HoloLens参考書読書会 vol9
 
[Agile Japan 2017 NRIサテライト]SCRUMをベースにしたNRIでの適用事例
[Agile Japan 2017 NRIサテライト]SCRUMをベースにしたNRIでの適用事例[Agile Japan 2017 NRIサテライト]SCRUMをベースにしたNRIでの適用事例
[Agile Japan 2017 NRIサテライト]SCRUMをベースにしたNRIでの適用事例
 
ゲームをしていたら半年で大規模サービスのエンジニアとして成長していた - 原動力のマネジメント方法 -
ゲームをしていたら半年で大規模サービスのエンジニアとして成長していた - 原動力のマネジメント方法 -ゲームをしていたら半年で大規模サービスのエンジニアとして成長していた - 原動力のマネジメント方法 -
ゲームをしていたら半年で大規模サービスのエンジニアとして成長していた - 原動力のマネジメント方法 -
 
アプリのプロダクトマネージャーからみるScrum開発
アプリのプロダクトマネージャーからみるScrum開発アプリのプロダクトマネージャーからみるScrum開発
アプリのプロダクトマネージャーからみるScrum開発
 
Kinect Hacks for Dummies (Japanese / 日本語)
Kinect Hacks for Dummies (Japanese / 日本語)Kinect Hacks for Dummies (Japanese / 日本語)
Kinect Hacks for Dummies (Japanese / 日本語)
 
論理思考とプログラミング第8回
論理思考とプログラミング第8回論理思考とプログラミング第8回
論理思考とプログラミング第8回
 
2010年度秋学期論理思考とプログラミング第8回
2010年度秋学期論理思考とプログラミング第8回2010年度秋学期論理思考とプログラミング第8回
2010年度秋学期論理思考とプログラミング第8回
 

More from Noritada Shimizu

More from Noritada Shimizu (20)

20160803 devrel
20160803 devrel20160803 devrel
20160803 devrel
 
20160713 webvr
20160713 webvr20160713 webvr
20160713 webvr
 
20160601 devtools
20160601 devtools20160601 devtools
20160601 devtools
 
20150512 webgl-off-the-main-thread
20150512 webgl-off-the-main-thread20150512 webgl-off-the-main-thread
20150512 webgl-off-the-main-thread
 
20160428 html5jwebplat
20160428 html5jwebplat20160428 html5jwebplat
20160428 html5jwebplat
 
asm.js x emscripten: The foundation of the next level Web games
asm.js x emscripten: The foundation of the next level Web gamesasm.js x emscripten: The foundation of the next level Web games
asm.js x emscripten: The foundation of the next level Web games
 
Mozilla とブラウザゲーム
Mozilla とブラウザゲームMozilla とブラウザゲーム
Mozilla とブラウザゲーム
 
2016 gunma.web games-and-asm.js
2016 gunma.web games-and-asm.js2016 gunma.web games-and-asm.js
2016 gunma.web games-and-asm.js
 
20151224-games
20151224-games20151224-games
20151224-games
 
20151128 firefoxos-handson
20151128 firefoxos-handson20151128 firefoxos-handson
20151128 firefoxos-handson
 
20151117 devtools
20151117 devtools20151117 devtools
20151117 devtools
 
Inspection & Tweak: Firefox を使ったフロント開発
Inspection & Tweak: Firefox を使ったフロント開発Inspection & Tweak: Firefox を使ったフロント開発
Inspection & Tweak: Firefox を使ったフロント開発
 
20150822 osc-shimane
20150822 osc-shimane20150822 osc-shimane
20150822 osc-shimane
 
20150829 firefox-os-handson
20150829 firefox-os-handson20150829 firefox-os-handson
20150829 firefox-os-handson
 
20150829 firefox-os
20150829 firefox-os20150829 firefox-os
20150829 firefox-os
 
20150727 Development tools for Firefox OS apps
20150727 Development tools for Firefox OS apps20150727 Development tools for Firefox OS apps
20150727 Development tools for Firefox OS apps
 
Firefox OS でアプリを作るときに気をつけたい N 個のこと
Firefox OS  でアプリを作るときに気をつけたい N 個のことFirefox OS  でアプリを作るときに気をつけたい N 個のこと
Firefox OS でアプリを作るときに気をつけたい N 個のこと
 
Firefox OSアプリ開発ハンズオン(Hello World編)
Firefox OSアプリ開発ハンズオン(Hello World編)Firefox OSアプリ開発ハンズオン(Hello World編)
Firefox OSアプリ開発ハンズオン(Hello World編)
 
WebVR(html5j TV部、WebVRとかVRのUIとか勉強会)
WebVR(html5j TV部、WebVRとかVRのUIとか勉強会)WebVR(html5j TV部、WebVRとかVRのUIとか勉強会)
WebVR(html5j TV部、WebVRとかVRのUIとか勉強会)
 
Application submission, management and manetization in Firefox Marketplace
Application submission, management and manetization in Firefox MarketplaceApplication submission, management and manetization in Firefox Marketplace
Application submission, management and manetization in Firefox Marketplace
 

論理思考とプログラミング#08