2011年9月2日金曜日

Java入門⑤

次はボールを動かしてみます。





gameupdate()を以下のように変更してください。

	//ゲームの処理はここに書く
	private void gameUpdate() {
		pos_x++;	//1フレームごとにX方向に1移動
		pos_y++;	//1フレームごとにY方向に1移動
	}


説明をだいぶ省略していたのですが、このウィンドウは1/60秒ごとに画面を更新しているのです。
そして1/60秒ごとに、このgameUpdate,gameDrawが呼び出されているので、上記のように書くと1frame(1/60秒)毎にXとY座標が1ずつ増えていきます。するとボールは右下に向かって動くはずです。


あと数学と一緒に考えると勘違いしがちですが、ゲーム内では左上が(0,0)で右がXの正方向、下がYの正方向なことに注意してください。



問題③:1frame毎に5ずつ動くように設定してください。
答え
pos_x++;
pos_y++;
 
pos_x += 5;
pos_y += 5;

+=5と書くのはプログラム的にはあまりよろしくない書き方です。
そこで加速度の変数を定義してみましょう。

private int pos_x = 5;
    private int pos_y = 5;
    private int SIZE = 8;
    private int vx = 3;
    private int vy = 3;
//ゲームの処理はここに書く
	private void gameUpdate() {
		pos_x += vx;
		pos_y += vy;
	}



問題④:ボールの速さがだんだん速くなるようにする。
答え

//ゲームの処理はここに書く
private void gameUpdate() {
pos_x += vx;
pos_y += vy;
vx++;
vy++;
}



問題⑤:壁にあたったら跳ね返るようにする。
答え

//ゲームの処理はここに書く
private void gameUpdate() {
pos_x += vx;
pos_y += vy;
if(pos_x < 0|| pos_x + SIZE > WIDTH){
vx = -vx;
}
if(pos_y < 0|| pos_y + SIZE > HEIGHT){
vy = -vy;
}
}



0 件のコメント:

コメントを投稿