我正在使用旧的 Turbo C++ 并且是初学者。这是我正在计划的一个正在进行的项目的代码。
圆圈使用 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;
}
}