サンプルが動かなかったのでテキトーにつくってみました
これはこれで問題ありありソースですが、とりあえずpgetで判定はおすすめしません
#define OBJMAX 20
#define global ctype dist2p(%1,%2,%3,%4) sqrt(((%1)-(%3))*((%1)-(%3))+((%2)-(%4))*((%2)-(%4)))
randomize
screen 0,1200,800
gmode 2
buffer 1 //絵を読み込ます場合はここを変える
color:boxf
color 255,0,0:circle 0,0,100,100,1
color 0,0,255:circle 100,0,200,100,1
celdiv 1,100,100,50,50
dim objX,OBJMAX //障害物座標適当に設定
dim objY,OBJMAX
repeat OBJMAX
objX.cnt=rnd(12)*100
objY.cnt=rnd(8)*100
loop
r=49
speed=4
myX=600.0:myY=400.0
gsel 0
repeat //メイン
redraw 0:color:boxf
gosub *player:gosub *putobj
redraw 1:await 16
loop
*putobj //障害物表示と当たり判定
repeat OBJMAX
if dist2p(myX,myY,objX.cnt,objY.cnt)<=(r*2){
d=atan(myX-objX.cnt,myY-objY.cnt)
myX+=sin(d)*speed:myY+=cos(d)*speed
}
pos objX.cnt,objY.cnt:celput 1,0
loop
return
*player //プレイヤー移動と表示
direct=0
stick ky,15
if ky{
if ky&1:direct+=270
if ky&2:direct+=180
if ky&4:direct+=90
if ky\3==0:direct/=2
if ky==9:direct=315
myX+=sin(deg2rad(direct))*speed:myY+=cos(deg2rad(direct))*speed
}
pos myX,myY:celput 1,1
return