atanを使えば二点間の角度を求めることが出来ます。
atanに二点間の座標の差を与えましょう。
#module
#defcfunc dis double x,double y, double xx,double yy
return sqrt((xx-x)*(xx-x)+(yy-y)*(yy-y))
#global
screen 0,600,300
gosub *素材用意
gsel 0
rot = 0.0
num_enemy = 8;
repeat num_enemy//敵用意
x(cnt) = rnd(300)
y(cnt) = rnd(300)
loop
repeat
redraw 0
stick key,5
if key&1:rot -= 0.05;
if key&4:rot += 0.05;
color:boxf 0,0,300,300//操作画面描画
pos 150,150:grotate 2,0,0,rot
color 200,0,0
repeat num_enemy//敵描画
boxf x(cnt)-4,y(cnt)-4,x(cnt)+4,y(cnt)+4
loop
pos 300,0//レーダー描画
gcopy 1,0,0,300,300
repeat num_enemy//レーダーに表示する位置を求める
rad = atan(x(cnt)-150,y(cnt)-150)//敵のいる角度を求める
distance = dis(150,150,x(cnt),y(cnt))//距離をもとめる
px = sin(rot+rad)*distance +150 +300
py = cos(rot+rad)*distance +150 +0
color 255,0,0
boxf px-4,py-4,px+4,py+4
loop
await 12
redraw 1
loop
*素材用意
buffer 1,300,300//レーダー画面描画
color:boxf
color 255,255,255
line 150,290,150,10
line 290,150,10,150
color 0,200,0
circle 15,15,285,285,0
circle 80,80,220,220,0
circle 120,120,180,180,0
color 0,0,200
boxf 146,146,154,154
color 0,255,255
buffer 2,10,10
color:boxf
font msgothic,10
color 0,0,200:mes "▲"
return