コンピュータサイエンス―基礎講座・第二回―
今日はボールを斜めに動かして、壁にあたったら跳ね返るプログラムを作成した。
壁は、x=1, x=-1, y=1, y=-1のときである。
解答例
プログラムの解答例は以下のとおりである。
(初期値は省略)
double x; //ボールのx座標
double y; //ボールのy座標
double Vx; //ボールのx軸方向の速さ
double Vy; //ボールのy軸方向の速さ
x = x + Vx;
y = y + Vy;
if(x <= -1 || x >= 1)
{
Vx = -Vx;
}
if(y <= -1 || y >= 1)
{
Vy = -Vy;
}
プログラムの意味
今回、ボールを斜めに動かして、壁にあたったら跳ね返るプログラムを作成したのは、ボールの動きをx軸とy軸に分けて考えるためである。
例えば、ボールが右の壁(x=1)にあたって跳ね返ったとき、跳ね返る前と跳ね返る後で変わっているのは、x軸方向の速度、つまり、進む方向が変わっているだけなのだ。
同様に、左の壁(x=-1)、上の壁(y=1)、下の壁(y=-1)にボールがあたって跳ね返るときを考えていくと、右の壁か、左の壁に当たった時にはx軸方向の速度が変わっており、上の壁か、下の壁にあたった時にはy軸方向の速度が変わっているということがわかる。



