【发布时间】:2019-12-01 11:19:40
【问题描述】:
我正在制作一个程序,它将一个点从 startx, starty 移动到 endx, endy。 但它连续移动,即使在 x 和 y 大于 endx 和 endy 之后。 代码如下:
int x, y;
x = startx; y = starty;
if(startx<goalx){
if (starty < goaly) {
while (startx < goalx || starty < goaly) {
x += sqrt(2)*speedx;
y += sqrt(2)*speedy;
}
}
else {
while (startx < goalx || starty > goaly) {
x += sqrt(2)*speedx;
y -= sqrt(2)*speedy;
}
}
}
else {
if (starty < goaly) {
while (startx > goalx || starty < goaly) {
x -= sqrt(2)*speedx;
y += sqrt(2)*speedy;
}
}
else {
while (startx > goalx || starty > goaly) {
x -= sqrt(2)*speedx;
y -= sqrt(2)*speedy;
}
}
}
cout << x << ", " << y << endl;
startx、starty、goalx 和goaly 是用户输入。
【问题讨论】:
-
您的 else 条件无法正常工作。一个包含循环
-
else属于if。
-
让我检查一下。请为您的输入指定一些值
-
因此,如果 startx = 12,starty = 23,goalx = 78 和 goaly = 89,那么它可以工作。但是当 , fe :goally = 22 时,它不会
-
startx、goalx、starty、goaly的循环测试值的条件。循环体只改变x和y的值,但从不改变循环条件下测试的变量。因此循环是无限的。
标签: c++ coordinates move infinity