下のプログラムにおいて,
Main
$player=new Player{x=100,y=100};
new Shooter{x=200,y=200};
Player
pad=new APad; // APadの作成
while(true){
x+=pad.vx*5;
y+=pad.vy*5;
update();
}
Shooter
while(true) {
if(rnd(60)==0){
new Bullet{x:x, y:y, p:25};
}
update();
}
Bullet
// $playerの座標と自分の座標を比較
dx=$player.x-x;
dy=$player.y-y;
d=dist(dx,dy);//$playerまでの距離
vx=dx/d*5; // 移動速度(x座標)
vy=dy/d*5; // 移動速度(y座標)
while(!screenOut()){
x+=vx;//移動速度の分だけxを変化させる
y+=vy;//移動速度の分だけyを変化させる
update();
}
die();
Bulletオブジェクトは次のように書くこともできます.特定の座標から角度をずらして発射
したい場合はこちらのほうが便利です.
Bullet
// $playerの座標と自分の座標を比較
dx=$player.x-x;
dy=$player.y-y;
dir=atanxy(dx,dy);//角度を計算
vx=cos(dir)*5;//角度に応じてvx,vyを設定
vy=sin(dir)*5;
while(!screenOut()){
x+=vx;//移動速度の分だけxを変化させる
y+=vy;//移動速度の分だけyを変化させる
update();
}
die();
弾を撃つ
.