Presentation is loading. Please wait.

Presentation is loading. Please wait.

第4回:ボールを画面内で弾ませよう! (オブジェクトの移動、二次元)

Similar presentations


Presentation on theme: "第4回:ボールを画面内で弾ませよう! (オブジェクトの移動、二次元)"— Presentation transcript:

1 第4回:ボールを画面内で弾ませよう! (オブジェクトの移動、二次元)
2003年度ゲームプログラミング ゲームプログラミング 第4回:ボールを画面内で弾ませよう!  (オブジェクトの移動、二次元)

2 物体を上下左右に移動(1) 前回 変数y,dyを使ってボールを縦方向に移動 今回 変数x,dxを使ってボールを横方向にも移動
2003年度ゲームプログラミング 物体を上下左右に移動(1) 前回   変数y,dyを使ってボールを縦方向に移動 今回   変数x,dxを使ってボールを横方向にも移動    x ボールの横の位置を示す変数   dx ボールがどれだけ横に移動するか、      変化する量を示す変数

3 物体を上下左右に移動(2) メソッドの最初で宣言、使う前に初期化 int x, dx; x=1;dx=1; xの値をdxだけ変化させる
2003年度ゲームプログラミング 物体を上下左右に移動(2) メソッドの最初で宣言、使う前に初期化    int x, dx;    x=1;dx=1; xの値をdxだけ変化させる    x=x+dx; 跳ね返り処理    if(x>120){ dx= -dx; } //右の壁 xをつかって表示     g.drawImage(img,x,y,…);

4 枠の表示 塗りつぶさない四角形を描くメソッドを使う。 g.drawRect(x,y,w,h); (x,y) 左上の座標 (w+1) 幅
2003年度ゲームプログラミング 枠の表示 塗りつぶさない四角形を描くメソッドを使う。  g.drawRect(x,y,w,h);   (x,y) 左上の座標   (w+1) 幅    (h+1) 高さ  g.setColor(0x000000);//描画色を黒に  g.drawRect(0,0,131,143); //枠を描く

5 枠の中でボールを動かそう 枠のところで跳ね返るように、 跳ね返りの条件を変更 枠の幅は1 →判定を1づつ内側に
2003年度ゲームプログラミング 枠の中でボールを動かそう 枠のところで跳ね返るように、   跳ね返りの条件を変更 枠の幅は1    →判定を1づつ内側に

6 残像を表示させてチェック 背景の表示を切って、残像を出してみよう 壁と残像に隙間があく →当たり判定が手前すぎる 壁にボールがめり込む
2003年度ゲームプログラミング 残像を表示させてチェック 背景の表示を切って、残像を出してみよう 壁と残像に隙間があく    →当たり判定が手前すぎる 壁にボールがめり込む    →当たり判定が奥すぎる、または、    →壁際まで戻す処理を入れていない

7 枠の色を変えよう 描画色はg.setColor()で変更する g.setColor(0xRRGGBB);
2003年度ゲームプログラミング 枠の色を変えよう 描画色はg.setColor()で変更する    g.setColor(0xRRGGBB); RR,GG,BBに赤(Red)、緑(Green)、青(Blue)の強さを16進数で入れる 00(最小) → 80(中くらい) → FF(最大)

8 枠の色を変えよう g.setColor(0xFF0000); →赤い要素のみ→赤 g.setColor(0x00FF00);
2003年度ゲームプログラミング 枠の色を変えよう g.setColor(0xFF0000); →赤い要素のみ→赤 g.setColor(0x00FF00); →緑の要素のみ→緑 g.setColor(0xFF00FF); →赤い光と青の光のブレンド→紫

9 枠に当たるたびに色を変える 枠に何回当たったかを数えて、当たった回数で色を変える →何回当たったかを保存する変数が必要 宣言と初期化
2003年度ゲームプログラミング 枠に当たるたびに色を変える 枠に何回当たったかを数えて、当たった回数で色を変える   →何回当たったかを保存する変数が必要 宣言と初期化   int point;   point=0; 枠に当たった時に回数を増やす   point++;

10 回数に応じて色を変える 演算子% A%B AをBで割った余り (0~B-1)の範囲の値になる
2003年度ゲームプログラミング 回数に応じて色を変える 演算子%   A%B  AをBで割った余り         (0~B-1)の範囲の値になる if(point%3==0) g.setColor(色1); if(point%3==1) g.setColor(色2); if(point%3==2) g.setColor(色3); g.drawRect();//枠を描く

11 ボールが当たると消える的(1) ボールが当たったら消える(=表示しない) →表示するかしないかの判断が必要 →的の有無を示すのに変数を使用
2003年度ゲームプログラミング ボールが当たると消える的(1) ボールが当たったら消える(=表示しない)   →表示するかしないかの判断が必要   →的の有無を示すのに変数を使用   値が1の時:的がある(的を表示)   値が0の時:的がない(的を表示しない) このような何かの有無、可否を示す変数を   フラッグと言う

12 ボールが当たると消える的(2) 変数の宣言 int blockflag; 変数の初期化 →最初は的がある状態なので、初期値は1
2003年度ゲームプログラミング ボールが当たると消える的(2) 変数の宣言    int blockflag; 変数の初期化   →最初は的がある状態なので、初期値は1    blockflag=1; 的の表示   →blockflagが1の時のみ表示する      if (blockflag==1) g.drawImage(…);

13 ボールが当たると消える的(3) ボールが的に当たったら、ボールを消す →blockflagを0にする if(ボールと的が重なっている){
2003年度ゲームプログラミング ボールが当たると消える的(3) ボールが的に当たったら、ボールを消す   →blockflagを0にする   if(ボールと的が重なっている){     blockflag=0;   } ボールと的が重なったかは、座標を比較して判断。

14 ボールが当たると消える的(4) ボール、的の大きさは縦12、横12とする
2003年度ゲームプログラミング ボールが当たると消える的(4) ボール、的の大きさは縦12、横12とする ボールと的が接触している時、ボールと的のx座標の差、y座標の差がそれぞれ12未満   →引き算の結果が-12と12の間     y-50 > -12 かつ y-50 < 12 かつ     x-50 > -12 かつ x-50 < 12    (的を(50,50)に表示した場合) 複数の条件を両方とも満たす必要がある時は「&&」でつなぐ


Download ppt "第4回:ボールを画面内で弾ませよう! (オブジェクトの移動、二次元)"

Similar presentations


Ads by Google