プレイヤー(パッド)の動きはすでに実装しています。また、ボールの動きはいわゆる三角関数で実装しました。
あとは境界線までいったら跳ね返るようにコードを書けばいいのですが、まったく分かりません。
ボールは以下のような構造体となっています。
「code=cpp]
typedef struct
{
double x;
double y;
double speed;
double angle;
} ballStatus;
[/code]
ballStatus型の変数ballstがあると仮定してください。また、math.hは#includeされているものとしてください。
ボールの移動ロジックは以下の通りです。
void moveBall()
{
int x = ballst.x;
int y = ballst.y;
x = cos(ballst.angle) * ballst.speed;
y = sin(ballst.angle) * ballst.speed;
// ここに跳ね返りの処理...
ballst.x = x;
ballst.y = y;
}
試しにspeedに×-1をしてみたのですが、入射角と同じ角度で跳ね返りました。
これでは駄目かと思って上下左右の境界線に達するたびにangleに+45してもまったく状況は改善されませんでした。
ヒントになるソースまたは助言をお願いします。