私は古いTurboC++を使用しており、初心者です。これは私が計画している進行中のプロジェクトのコードです。
円はWSADキーで移動しますが、問題は、その円のノズル(中心からの線)がマウスの動きに追従するようにしたいのですが、そのノズルの長さを制限する数学的な部分を理解できません。 30ピクセルと言います。線はポインタの位置に触れ続けます。
距離の式と線の方程式を使用して、線の傾きと長さの両方を持つ式を取得しようとしました。しかし、ここでの問題は、分母に平方根があることであり、それが問題を引き起こしていると思います
ここのコードのほとんどは、次の問題には不要なので、無視してください
これが関連するコードです
originx=getmaxx()/2;
originy=getmaxy()/2;
while(doga==0) //main game loop
{ if(kbhit())
op=getch();
if(limiter>10) //limiter is used to restrict the motion of the circle for a limited // time
{ op=0;limiter=0;} // otherwise the cirlce moves in that direction unless another //key is pressed
//movement of the circle
if(op==72)
{ originy--; limiter++;}
if(op==80)
{originy++; limiter++;}
if(op==75)
{ originx--; limiter++ ;}
if(op==77)
{ originx++; limiter++; }
circle(originx,originy,5);
mouseposi(x,y,cl);
printf(" %d %d",x,y);
printf("\b\b\b\b\b\b\b\b");
m=sloper(originx,originy,x,y);
line(originx,originy,80/sqrt(1+m*m),m*80/sqrt(1+m*m)); //THIS LINE IS WHERE THE PROBLEM IS
delay(30);
cleardevice();
if(op==49) //for exiting
doga=2;
}
}