Presentation is loading. Please wait.

Presentation is loading. Please wait.

第3回:ボールを上下に動かそう! (オブジェクトの移動、一次元)

Similar presentations


Presentation on theme: "第3回:ボールを上下に動かそう! (オブジェクトの移動、一次元)"— Presentation transcript:

1 第3回:ボールを上下に動かそう! (オブジェクトの移動、一次元)
2002年度ゲームプログラミング ゲームプログラミング 第3回:ボールを上下に動かそう!  (オブジェクトの移動、一次元)

2 物体を動かすしくみ 少しずつ座標をずらして表示すると、 動いているように見える 座標をずらして表示する為に 変数を使う。
2002年度ゲームプログラミング 物体を動かすしくみ 少しずつ座標をずらして表示すると、   動いているように見える 座標をずらして表示する為に   変数を使う。

3 変数(1) 数値を入れておくための箱 整数(int)、少数(float,double)、 文字列(char)などの種類(型)がある。
2002年度ゲームプログラミング 変数(1) 数値を入れておくための箱   整数(int)、少数(float,double)、   文字列(char)などの種類(型)がある。 使用する前に型の宣言が必要   int x; (整数型の変数xの宣言) 宣言は関数の最初に(javaと違う点)

4 変数(2) 変数の数値を「値」と呼ぶ 値の入れかた y = 100; などのように、= の右側に入れる数値を書く。
2002年度ゲームプログラミング 変数(2) 変数の数値を「値」と呼ぶ 値の入れかた   y = 100; などのように、= の右側に入れる数値を書く。 型の宣言と値の設定を初期値を同時に行う   こともできる   int y = 100; 初めて使う前に値(初期値)を入れておこう

5 変数(3) 値の使い方 関数の引数に sp_set ( sp , 0 , 100 , y , 1 ); 式の右辺に
2002年度ゲームプログラミング 変数(3) 値の使い方   関数の引数に     sp_set ( sp , 0 , 100 , y , 1 );   式の右辺に     num = y ;   (y の値をnumに入れる)   条件に     if ( y < 0 )   (もしy が0未満なら)

6 1、ボールを動かそう set_spの y 座標を変数 y を使って指定 whileの繰り返し(ループ)の中で y の値を少しずつ変えていく
2002年度ゲームプログラミング 1、ボールを動かそう set_spの y 座標を変数 y を使って指定 whileの繰り返し(ループ)の中で y の値を少しずつ変えていく    y = y + 1 ; (yに1を足す) 関数の最初で y を宣言することが必要

7 残像を消そう ボールの残像が出る理由 →前に描いたボールが残っている ボールを描く前に毎回画面を 真っ黒に塗りつぶそう
2002年度ゲームプログラミング 残像を消そう ボールの残像が出る理由   →前に描いたボールが残っている ボールを描く前に毎回画面を   真っ黒に塗りつぶそう 黒いbitmapを表示して塗りつぶす

8 真っ黒なビットマップの表示 前回の雛型以外の4行(ボール表示の準備と、ボール表示)を流用して、
2002年度ゲームプログラミング 真っ黒なビットマップの表示 前回の雛型以外の4行(ボール表示の準備と、ボール表示)を流用して、 真っ黒なbitmap(gp2.bmp)を表示させよう。   int bg;   bg=load_bmp("gp2.bmp",,,);   def_char(bg,,,);   sp_set(bg,,,);

9 2002年度ゲームプログラミング ひとやすみ 皆が残像なくボールを動かせるように   なるまで、しばし休憩。 元気のある人は先に進んでみましょう

10 反復運動(1) 上から下へ、下から上へを繰り返す。 下向き(↓)に動かす処理 y = y + 1; 上向き(↑)に動かす処理
2002年度ゲームプログラミング 反復運動(1) 上から下へ、下から上へを繰り返す。 下向き(↓)に動かす処理     y = y + 1; 上向き(↑)に動かす処理     y = y - 1;     y = y + (-1);  とも書ける

11 反復運動(2) y が変化する量も変数にしてみよう。 int dy; yが変化する量 y = y + dy ; yにdyを足す
2002年度ゲームプログラミング 反復運動(2) y が変化する量も変数にしてみよう。   int dy; yが変化する量   y = y + dy ; yにdyを足す dy が1の時、yが1づつ増える   →ボールが下に動く dy が-1の時、yが1づつ減る   →ボールが上に動く

12 反復運動(3) ボールが下まで来たら、dyの符号を反転 dy = -dy; (1だったら-1になる) ボールが上まで来たら、dyの符号を反転
2002年度ゲームプログラミング 反復運動(3) ボールが下まで来たら、dyの符号を反転     dy = -dy; (1だったら-1になる) ボールが上まで来たら、dyの符号を反転     dy = -dy; (-1だったら1になる) 「○○だったら××する」という処理   にはif文を使う

13 if 文(条件分岐) 「条件」を満たす時のみ「命令」を実行する。 if (条件) 命令; 実行する「命令」が複数ある場合は{}でくくる。
2002年度ゲームプログラミング if 文(条件分岐) 「条件」を満たす時のみ「命令」を実行する。    if (条件) 命令; 実行する「命令」が複数ある場合は{}でくくる。   if (条件){    命令1;    命令2; }

14 様々な条件 if(A==B) AがBと等しい if(A>B) AがBより大きい if(A<B) AがBより小さい
2002年度ゲームプログラミング 様々な条件 if(A==B) AがBと等しい if(A>B) AがBより大きい if(A<B) AがBより小さい if(A>=B) AがB以上 if(A<=B) AがB以下   if(A!=B) AとBが等しくない if(A) Aが0以外

15 2、ボールを反復させよう 以下のような構造になります while ( … ) { y = y + dy ;
2002年度ゲームプログラミング 2、ボールを反復させよう 以下のような構造になります   while ( … ) {     y = y + dy ;     yが0以下なら dy = - dy;     yが448以上なら dy = - dy;     ボール表示; }

16 3、跳ね返るとスピードUP yの変化の量を増やすとスピードUP →dyの絶対値を大きくしていく 跳ね返った時のみ
2002年度ゲームプログラミング 3、跳ね返るとスピードUP yの変化の量を増やすとスピードUP   →dyの絶対値を大きくしていく 跳ね返った時のみ   →if文{}の中にスピードUPの命令を足す 上で跳ね返った後のdyは正(+)   →さらに1足す 下で跳ね返った後のdyは負(ー)   →さらに1引く

17 4、背景を描こう gp2.bmpの中身を書き換えてみよう ボールの四隅が黒く表示されてしまう →黒い部分を表示しないようにしよう
2002年度ゲームプログラミング 4、背景を描こう gp2.bmpの中身を書き換えてみよう ボールの四隅が黒く表示されてしまう   →黒い部分を表示しないようにしよう 黒を透明にする命令   def_trans(sp,0);

18 5、床で弾んでいるように 引力を表現 常に下向きに加速する → dy = dy + 1; 跳ね返り係数を表現
2002年度ゲームプログラミング 5、床で弾んでいるように 引力を表現   常に下向きに加速する    → dy = dy + 1; 跳ね返り係数を表現   跳ね返った瞬間にスピードが減少する    → 跳ね返りのif文で dy を遅く


Download ppt "第3回:ボールを上下に動かそう! (オブジェクトの移動、一次元)"

Similar presentations


Ads by Google