物がぶつかり合う時の跳ね返りのようにできないでしょうか。
十字キーで球を作動
gsizex=500:gsizey=500;画面サイズ screen 0,gsizex,gsizey randomize //----必要情報割り当て spedx=0.00:spedy=0.00;キャラの速度 mpsx=100.00:mpsy=100.00;キャラの位置 mstu=0.0005;摩擦 prset=0.002;加速度 enekepx=0.00:enekepy=0.00;エネルギーのキープ用 //----キャラ情報作成(半径) kysize=10;キャラの半径 //----障害物 sskap=5;作成するオブジェクト数 dim sdai,sskap;オブジェクトの種類(0=無,1=円,2=正方形) dim smpsx,sskap:dim smpsy,sskap;位置 dim skysize,sskap;半径サイズ //----障害物作成 repeat sskap sdai(cnt)=1 smpsx(cnt)=rnd(gsizex-100)+100:smpsy(cnt)=rnd(gsizey-100)+100 skysize(cnt)=50 loop onexit *dend;win8ではエラーになるのでとりあえず記入 *main //----キー入力 stick key,15 if key=1{enekepx-prset} if key=2{enekepy-prset} if key=4{enekepx+prset} if key=8{enekepy+prset} if key=3{ enekepx-prset*sqrt(2):enekepy-prset*sqrt(2)};斜めは詳細値を取得 if key=6{ enekepy-prset*sqrt(2):enekepx+prset*sqrt(2)} if key=12{ enekepx+prset*sqrt(2):enekepy+prset*sqrt(2)} if key=9{ enekepy+prset*sqrt(2):enekepx-prset*sqrt(2)} //----摩擦 if enekepx<0{enekepx+mstu}if enekepx>0{enekepx-mstu} if enekepy<0{enekepy+mstu}if enekepy>0{enekepy-mstu} //----壁とのあたり判定 if 0>=mpsx-kysize|gsizex<=mpsx+kysize | 0>=mpsy-kysize|gsizey<=mpsy+kysize{ enekepx*-1:enekepy*-1} //----エネルギーを位置に増加 mpsx+enekepx:mpsy+enekepy //----キャラの表示 circle mpsx-kysize,mpsy-kysize,mpsx+kysize,mpsy+kysize //----障害物とのあたり判定 repeat sskap if sdai(cnt)=1{//円の場合 circle smpsx(cnt)-skysize(cnt),smpsy(cnt)-skysize(cnt) , smpsx(cnt)+skysize(cnt),smpsy(cnt)+skysize(cnt) color 255,0,0:circle smpsx(cnt)-3,smpsy(cnt)-3 , smpsx(cnt)+3,smpsy(cnt)+3:color;中心の赤い丸 x=smpsx(cnt)-mpsx:y=smpsy(cnt)-mpsy kyr=sqrt(x*x+y*y);キャラとの距離 if skysize(cnt)+kysize>=kyr{ enekepx*-1:enekepy*-1 } } loop redraw 1:await 1:redraw 0 color 255,255,255:boxf:color goto *main *dend end