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 件のコメント:
コメントを投稿