30
論理思考とプログラミング #12 N. Shimizu ([email protected] / @chikoski) 2011/07/21 1 N. Shimizu ([email protected] / @chikoski)

ronpro2011#12

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: ronpro2011#12

論理思考とプログラミング #12 N. Shimizu ([email protected] / @chikoski)

2011/07/21

1 N. Shimizu ([email protected] / @chikoski)

Page 2: ronpro2011#12

2011/07/21

2 N. Shimizu ([email protected] / @chikoski)

こういうゲームをつくります

Page 3: ronpro2011#12

要求仕様を考えよう • タイトル画面が表示される"• 操作をするとゲーム本体がはじまる"• マウスカーソルを敵が追いかけてくる"• 捕まると点数(ライフかも)が減る"• 点数が0になったらゲームオーバー"• ゲームオーバー画面が表示される"

2011/07/21 N. Shimizu ([email protected] / @chikoski)

3

Page 4: ronpro2011#12

設計に落とし込もう • タイトル画面を表示する"- タイトル画面:画像で作成し、表示する"- 画面クリックでゲームが始まる"

• ゲームオーバー画面を表示する"- ゲームオーバー画面:画像で作成し、表示する"- 画面クリックでゲームが再スタートする"

2011/07/21 N. Shimizu ([email protected] / @chikoski)

4

Page 5: ronpro2011#12

設計に落とし込もう(つづき)

• マウスカーソルの位置を円で表示"• 敵の表示"- 円で表示する"- カーソルに近づくと直径が大きくなる"

2011/07/21 N. Shimizu ([email protected] / @chikoski)

5

Page 6: ronpro2011#12

設計に落とし込もう(つづき) • 敵の動き"- 遠くにいるときは急加速で近づいてくる"- 近くにいるときはゆっくり近づいてくる"

• 敵の攻撃"- 敵の円とマウスカーソルを表す円が重なったら攻撃を受けている"- 攻撃を受けるたびに点数が1減る

2011/07/21 N. Shimizu ([email protected] / @chikoski)

6

Page 7: ronpro2011#12

実装する順番を決めよう 1.  敵を円で表示"2.  敵の動き"3.  マウスカーソルの位置を円で表示"4.  カーソルに近づくと敵の直径が大きくなる"5.  敵の攻撃"6.  ゲームオーバー画面を表示する"7.  タイトル画面を表示する"

2011/07/21 N. Shimizu ([email protected] / @chikoski)

7

Page 8: ronpro2011#12

第9回問5を改造しよう 1.  敵を円で表示 ← done"2.  敵の動き ← done"3.  マウスカーソルの位置を円で表示"4.  カーソルに近づくと敵の直径が大きくなる"5.  敵の攻撃"6.  ゲームオーバー画面を表示する"7.  タイトル画面を表示する"

2011/07/21 N. Shimizu ([email protected] / @chikoski)

8

Page 9: ronpro2011#12

まとめページにあるサンプル 1.  敵を円で表示 ← done"2.  敵の動き ← done"3.  マウスカーソルの位置を円で表示 ← done"4.  カーソルに近づくと敵の直径が大きくなる"5.  敵の攻撃"6.  ゲームオーバー画面を表示する"7.  タイトル画面を表示する"

2011/07/21 N. Shimizu ([email protected] / @chikoski)

9

Page 10: ronpro2011#12

まとめページにあるサンプル 1.  敵を円で表示 ← done"2.  敵の動き ← done"3.  マウスカーソルの位置を円で表示 ← done"4.  カーソルに近づくと敵の直径が大きくなる"5.  敵の攻撃"6.  ゲームオーバー画面を表示する"7.  タイトル画面を表示する"

2011/07/21 N. Shimizu ([email protected] / @chikoski)

10

Page 11: ronpro2011#12

第10回問4を混ぜよう 1.  敵を円で表示 ← done"2.  敵の動き ← done"3.  マウスカーソルの位置を円で表示 ← done"4.  カーソルに近づくと敵の直径が大きくなる← done"5.  敵の攻撃"6.  ゲームオーバー画面を表示する"7.  タイトル画面を表示する"

2011/07/21 N. Shimizu ([email protected] / @chikoski)

11

Page 12: ronpro2011#12

被攻撃判定

boolean player_is_hunt() {" float d = " dist(mouseX, mouseY, hunter_x, hunter_y);" return d < (player_r + hunter_r) / 2;"}

2011/07/21 N. Shimizu ([email protected] / @chikoski)

12

Page 13: ronpro2011#12

スコアを表示したい

2011/07/21 N. Shimizu ([email protected] / @chikoski)

13

ココ

Page 14: ronpro2011#12

文字を表示するには

• 事前準備:フォントデータの作成"• プログラム"- フォントデータの読み込み"- 使用するフォントの設定"- 文字を表示するメソッドの実行"

2011/07/21 N. Shimizu ([email protected] / @chikoski)

14

Page 15: ronpro2011#12

フォントデータの作成

2011/07/21 N. Shimizu ([email protected] / @chikoski)

15

Page 16: ronpro2011#12

文字の表示

PFont font;"font = loadFont("Monospaced-48.vlw");"textFont(font);"text(“text text text”, 20, 60);

2011/07/21 N. Shimizu ([email protected] / @chikoski)

16

Page 17: ronpro2011#12

スコアの表示 void draw_score() {" noStroke();" fill(255, 255, 255);" textFont(font);" text("Score: " + player_score, 20, 60);"}

2011/07/21 N. Shimizu ([email protected] / @chikoski)

17

Page 18: ronpro2011#12

ここまでできたもの 1.  敵を円で表示 ← done"2.  敵の動き ← done"3.  マウスカーソルの位置を円で表示 ← done"4.  カーソルに近づくと敵の直径が大きくなる← done"5.  敵の攻撃 ← done"6.  ゲームオーバー画面を表示する"7.  タイトル画面を表示する"

2011/07/21 N. Shimizu ([email protected] / @chikoski)

18

Page 19: ronpro2011#12

2011/07/21

19 N. Shimizu ([email protected] / @chikoski)

一応、デモはできる

Page 20: ronpro2011#12

ゲームの状態遷移

2011/07/21 N. Shimizu ([email protected] / @chikoski)

20

スタート ゲーム中 ゲームオーバー

クリック

クリック

スコアが0以下

Page 21: ronpro2011#12

ゲームの状態を変数で表現

void draw() {" if (mode == 0) { game_intro(); }" else if(mode == 2){ game_over(); }" else { game_main(); }"}

2011/07/21 N. Shimizu ([email protected] / @chikoski)

21

Page 22: ronpro2011#12

画像の表示

• 事前準備:画像をスケッチに追加"• プログラム中"- 画像ファイルの読み込み"- 画像ファイルを表示するメソッドの実行

2011/07/21 N. Shimizu ([email protected] / @chikoski)

22

Page 23: ronpro2011#12

画像をスケッチに追加

2011/07/21 N. Shimizu ([email protected] / @chikoski)

23

Page 24: ronpro2011#12

画像の読み込みと表示

PImage img;"img = loadImage(“gameover.png”);"image(img, 0, 0);

2011/07/21 N. Shimizu ([email protected] / @chikoski)

24

Page 25: ronpro2011#12

スタート画面 void game_intro() {" image(img_start, 0, 0);" if (mousePressed) {" mode =1;" }"}"

2011/07/21 N. Shimizu ([email protected] / @chikoski)

25

Page 26: ronpro2011#12

ゲームオーバー画面 " void game_over() {" image(img_gameover, 0, 0);" if (mousePressed) {" mode = 1;" game_init();" }"}"

2011/07/21 N. Shimizu ([email protected] / @chikoski)

26

Page 27: ronpro2011#12

2011/07/21

27 N. Shimizu ([email protected] / @chikoski)

アナウンス

Page 28: ronpro2011#12

次回は最終発表です

• 発表時間は5分"• 必ずデモをしてください"• 要求仕様、設計、未達の機能などを説明してください"

• スライドはあってもなくても良いです

2011/07/21 N. Shimizu ([email protected] / @chikoski)

28

Page 29: ronpro2011#12

最終レポートについて • 以下のことを説明してください"- 要求仕様"- 設計"- プログラムの使い方"- 今後の展望、改良点"

• 分量はA4 7ページまでにしてください

2011/07/21 N. Shimizu ([email protected] / @chikoski)

29

Page 30: ronpro2011#12

最終レポートの締め切り

• 2011年8月1日(月) 17:00 (日本時間) "• SFC-SFSで提出"• 以下をzipファイルにまとめて提出"- レポート (PDFもしくはWordファイル)"- プログラム+その他必要なファイル一式

2011/07/21 N. Shimizu ([email protected] / @chikoski)

30