2011年4月15日金曜日

Androidでゲーム ブロック崩し編 2回目:ボールの移動

ボールの画像を動かすだけなら、SurfaceViewを設定しているクラスファイルに、スレッドを呼び出して設定し、
ボールの設定しているクラスファイルの中で以下のような式を作ればいい。

x+=move_x;
y+=move_y;

これを、ボールを設定しているクラスファイルで移動制御用のメソッドを作成し、そのブロック内に定義すればいい。

例えば、
public void move() {
x+=move_x;
y+=move_y;
}

問題は、画面外に飛び出して、ボール画像が帰ってこなくなった時が問題になる。

そこで、画面内で動き回るように、設定する必要がある。

例えば、
画面の上側でボール画像が跳ね返ってくるようにするには
if(y<0) {
move_y=-move_y;
}

画面の上は座標値ではy=0ラインになる。
条件式の中身のy<0は、yが0よりも小さくなったらって意味なので、この時、ボール画像の座標値、yが画面の座標値
y=0よりも小さくなったら、移動値move_yを反転させて、それを、move_yに代入しろって言う仕事をさせる。

これによって、ボール画像は、画面の上側から逃げることが無くなる。

下側の場合は、
if(y>画面下側の座標値y) {
move_y=-move_y;
}

条件式の中身は、ボールのy座標値が画面下側の座標値yよりも大きくなったら、
移動値move_yを反転させて、それを、move_yに代入しろって言う仕事をさせる。

そもそも、javaプログラムの画面の座標の見方は、画面左上がx=0,y=0になり、
右に進むと座標値xは増加(プラス方向)
下に進むと座標値yは増加(プラス方向)
逆に左に進むと座標値xは減少(マイナス方向)
上に進むと座標値yは減少する(マイナス方向)。



その他のブロック崩し関連
Androidでゲーム ブロック崩し編 1回目:画像の表示

0 件のコメント:

コメントを投稿