これを見て、改良した方がいい点などありましたら、教えてください!!
*start /*初期化*/ m1 =0.0 m2 =0.0 f =0.0 mx1=0.0 my1=0.0 mx2=0.0 my2=0.0 a =0.0 mx =0.0 my =0.0 x =0.0 y =0.0 a =0.0 q =0.0 mousexx=0.0 mouseyy=0.0 /*メインプログラム*/ repeat -1 redraw 0 color 255,255,255:boxf stick ky,0 mousexx = double(mousex) mouseyy = double(mousey) if (ky=256)&(m2=0)&(m1=1){ /*第2の点の座標を入力*/ mx2=mousexx my2=mouseyy m2=1 } if (ky=256)&(m1=0){ /*第1の点の座標を入力*/ mx1=mousexx my1=mouseyy m1=1 } if m1=1{ color 255,0,0 /*第1の点の表示*/ pos mx1,my1 mes "■" } if m2=1{ /*第2の点の表示*/ color 0,0,255 pos mx2,my2 mes "▼" } if (m1=1)&(m2=1)&(f=0){ /*第1の点と第2の点の傾きの計算*/ f=1 my = my1-my2 mx = mx1-mx2 if (mx=0):m2=0:mx=1:f=0 //0除算対策 a=my/mx //傾きを計算 qx=-1.0 //移動量の設定 qy=-1.0 //移動量の設定 if mx<0:qx*=-1 //移動量の選択 if my<0:qy*=-1 //移動量の選択 } if f=1{ /*第1の点kから第2の点の移動*/ if (a<=1)&(a>=-1){ x+=qx y=a*x }else{ y+=qy x=y/a } x0=mx1+x:y0=my1+y //移動する点の表示&移動 color 0,255,0 pos x0,y0 mes "●" } if (x0+16>mx2+16)&(x0<mx2+16)&(y0+16>my2)&(y0<my2+16){ /*移動しきった処理*/ goto *start } redraw 1 await 5 loop
基本的なプログラムの説明・変数代入の意味等は説明していません。
そのほか、分からない・説明不足がありましたらお知らせください。