Robotc virtual world

Can someone help me with this code? I am trying to exit the ‘follow line’ command to drive straight, use sonar to avoid obstacle, turn rn right, drive straight, use sonar to avoid obstacle, turn right, then proceed until light sensor sees dark line.

#pragma config(Sensor, S1, touch, sensorTouch)
#pragma config(Sensor, S2, sound, sensorSoundDB)
#pragma config(Sensor, S3, light, sensorLightActive)
#pragma config(Sensor, S4, sonar, sensorSONAR)
#pragma config(Motor, motorB, rightMotor, tmotorNXT, PIDControl, driveRight, encoder)
#pragma config(Motor, motorC, leftMotor, tmotorNXT, PIDControl, driveLeft, encoder)
//!!Code automatically generated by ‘ROBOTC’ configuration wizard !!//
#pragma config(Sensor, S1, touch, sensorTouch)
#pragma config(Sensor, S2, sound, sensorSoundDB)
#pragma config(Sensor, S3, light, sensorLightActive)
#pragma config(Sensor, S4, sonar, sensorSONAR)
#pragma config(Motor, motorB, rightMotor, tmotorNXT, PIDControl, driveRight, encoder)
#pragma config(Motor, motorC, leftMotor, tmotorNXT, PIDControl, driveLeft, encoder)
//!!Code automatically generated by ‘ROBOTC’ configuration wizard !!//

task main()
{
while(SensorValue(touch) == 0) //a while loop is declared with the touchsensor’s value being 0 as it true condition
{
motor[motorC] =50;
motor[motorB] =50;

}
motor[motorC] =-75;
motor[motorB] =-75;
wait1Msec(2000);

motor[motorC] = 45;
motor[motorB] = 50;
wait1Msec(1500);

motor[motorC] = -15;
motor[motorB] = 100;
wait1Msec(650);

motor[motorC] = 50;
motor[motorB] = 50;
wait1Msec(1800);

while(true)
{
if(SensorValue(light) < 45)
{
motor[motorB] = 80;
motor[motorC] = 0;
}
else
{
setMotor(motorB, 0);
setMotor(motorC,80);
}

}
}

I’m not much of an expert but I think you have to stop the motors after you use it every time. So like this.


motor[motorB] = 50;
motor[motorC] = 50;
wait1Msec(1800);
motor[motorB] = 0;
motor[motorC] = 0;

And in your code, you use


setMotor(motorB,0);
setMotor(motorC,80);

Isn’t that for C++? I’m not sure but I definetely don’t do that. And as it is an “else”, you probably meant to stop the motors at 0?

And why do you have this two times?:

 
#pragma config(Sensor, S1, touch, sensorTouch)
#pragma config(Sensor, S2, sound, sensorSoundDB)
#pragma config(Sensor, S3, light, sensorLightActive)
#pragma config(Sensor, S4, sonar, sensorSONAR)
#pragma config(Motor, motorB, rightMotor, tmotorNXT, PIDControl, driveRight, encoder)
#pragma config(Motor, motorC, leftMotor, tmotorNXT, PIDControl, driveLeft, encoder)
//*!!Code automatically generated by 'ROBOTC' configuration wizard !!*//

Hope I helped!