#include <iostream>
#include <libplayerc++/playerc++.h>
using namespace std;
int main(int argc, char *argv[])
{
using namespace PlayerCc;
PlayerClient robot("localhost");
BumperProxy bp(&robot,0);
Position2dProxy pp(&robot,0);
pp.SetMotorEnable(true);
for(;;)
double turnrate, speed;
double error;
bool wall;
motor_a_speed(0);
motor_c_speed(0);
while(1) {
front_bumper = SENSOR_2;
left_bumper = SENSOR_3;
if (front_bumper > 2) {
if (left_bumper < 3) {
motor_a_speed(5);
motor_c_speed(drive_speed);
motor_a_dir(fwd);
motor_c_dir(fwd);
}
else {
motor_a_speed(drive_speed);
motor_c_speed(5);
motor_a_dir(rev);
motor_c_dir(rev);
}
}
else {
motor_a_speed(drive_speed);
motor_c_speed(drive_speed);
motor_a_dir(brake);
motor_c_dir(brake);
mrest(100);
cputs("bump");
motor_a_dir(fwd);
motor_c_dir(rev);
msleep(450);
cputs("right");
motor_a_speed(10);
motor_a_dir(fwd);
motor_c_dir(fwd);
mrest(1300);
}
pp.SetSpeed(speed, turnrate);
}
问问题
426 次
2 回答
5
鉴于压痕不好,唯一让我感到震惊的是
for(;;;)
double turnrate, speed;
由于for
后面没有大括号中的块,因此它的主体是下一条语句。这不是我经常看到的构造,但我相信发生的情况是该for
语句包含 and 的定义turnrate
,speed
它是该语句的局部变量for
。
于 2010-03-30T14:58:46.897 回答
1
我已将源代码重新格式化为更易读的版本。有编辑权限的人可以用这个替换OP的来源吗?
使用标识,没有大括号的 for 循环显然是一个麻烦的原因。一个简短的测试(我不知道这将如何工作)表明 for(;;) - 循环将永远循环,因此 OP 的程序永远不会做任何有用的事情。它可能应该被删除
#include <iostream>
#include <libplayerc++/playerc++.h>
using namespace std;
int main(int argc, char *argv[])
{
using namespace PlayerCc;
PlayerClient robot("localhost");
BumperProxy bp(&robot,0);
Position2dProxy pp(&robot,0);
pp.SetMotorEnable(true);
for(;;)
double turnrate, speed;
double error;
bool wall;
motor_a_speed(0);
motor_c_speed(0);
while(1) {
front_bumper = SENSOR_2;
left_bumper = SENSOR_3;
if (front_bumper > 2) {
if (left_bumper < 3) {
motor_a_speed(5);
motor_c_speed(drive_speed);
motor_a_dir(fwd);
motor_c_dir(fwd);
}
else {
motor_a_speed(drive_speed);
motor_c_speed(5);
motor_a_dir(rev);
motor_c_dir(rev);
}
}
else {
motor_a_speed(drive_speed);
motor_c_speed(drive_speed);
motor_a_dir(brake);
motor_c_dir(brake);
mrest(100);
cputs("bump");
motor_a_dir(fwd);
motor_c_dir(rev);
msleep(450);
cputs("right");
motor_a_speed(10);
motor_a_dir(fwd);
motor_c_dir(fwd);
mrest(1300);
}
pp.SetSpeed(speed, turnrate);
}
}
于 2010-03-30T15:08:25.213 回答