Full Code

CastleMainCode.c
#pragma config(Sensor, in1,    Castle1point1,  sensorLineFollower)
#pragma config(Sensor, in2,    Castle1point2,  sensorLineFollower)
#pragma config(Sensor, in3,    Castle1point3,  sensorLineFollower)
#pragma config(Sensor, in4,    Castle1king,    sensorReflection)
#pragma config(Sensor, dgtl1,  startbutton,    sensorTouch)
#pragma config(Sensor, dgtl2,  stopbutton,     sensorTouch)
#pragma config(Sensor, dgtl6,  castle1LED1,    sensorLEDtoVCC)
#pragma config(Sensor, dgtl7,  castle1LED2,    sensorLEDtoVCC)
#pragma config(Sensor, dgtl8,  castle1LED3,    sensorLEDtoVCC)
#pragma config(Motor,  port3,           servo1king,    tmotorServoStandard, openLoop)
//*!!Code automatically generated by 'ROBOTC' configuration wizard               !!*//

int castle_score1;
int vstart;
int castle;
int stime;
int vtime;
int ftime;
float ptime;
int mtime;

task main()
{
	while(true)
	{
		clearLCDLine(0);
		clearLCDLine(1);

		if(SensorValue(startbutton) == 1)//If the start button is pressed
		{
			vstart = 1; //Change the variable start to 1
			clearTimer(T1);
			vtime = 0;
			ftime = 0;
			ptime = 0;
			mtime = 0;
			vtime = 0;
			castle_score1 = 0; //Set castle_score1 to 0
			setServo(servo1king, 110);
			while(vstart == 1) //While the variable start is equal to 1
			{
				displayLCDPos(0, 0);
				displayNextLCDString("Castle 1: ");
				displayLCDPos(0, 10);
				displayNextLCDNumber(castle_score1);
				displayLCDPos(0, 12);
				displayNextLCDString("pts");
				if (SensorValue(Castle1point1) < 2800) //If the limit switch1 is pressed (over the 1st wall)
				{
					castle_score1 += 3; 	//Add one to the score
					turnLEDOn(castle1LED1);
					wait(0.75);
					turnLEDOff(castle1LED1);
					wait(0.5);
					turnLEDOn(castle1LED1);
					wait(0.5);
					turnLEDOff(castle1LED1);
					wait(0.5);
				}

				if (SensorValue(Castle1point2) < 2800) //If the limit switch1 is pressed (over the 2nd wall)
				{
					castle_score1 += 1;
					turnLEDOn(castle1LED2);
					wait(0.5);
					turnLEDOff(castle1LED2);
					wait(0.5);
					turnLEDOn(castle1LED2);
					wait(0.5);
					turnLEDOff(castle1LED2);
				}

				if (SensorValue(Castle1point3) < 2800) //If the limit switch1 is pressed (over the 3rd wall)
				{
					castle_score1 += 5;
					turnLEDOn(castle1LED3);
					wait(0.5);
					turnLEDOff(castle1LED3);
					wait(0.5);
					turnLEDOn(castle1LED3);
					wait(0.5);
					turnLEDOff(castle1LED3);
				}
				if (SensorValue(Castle1king)<170)
				{
					setServo(servo1king, -15);
					stime = time1[T1];
					ptime = stime/1000;
					mtime = ptime/60;
					vtime = ptime - (60 * mtime);
					if (vtime == 0 || vtime == 1 || vtime == 2 || vtime == 3 || vtime == 4 || vtime == 5 || vtime == 6 || vtime == 7  || vtime == 8 || vtime == 9)
					{
						displayLCDPos(1, 0);
						displayNextLCDString("You Win!");
						displayLCDPos(1, 9);
						displayNextLCDNumber(mtime);
						displayLCDPos(1, 10);
						displayNextLCDString(":");
						displayLCDPos(1, 11);
						displayNextLCDString("0");
						displayLCDPos(1, 12);
						displayNextLCDNumber(vtime);
					}
					else
					{
						displayLCDPos(1, 0);
						displayNextLCDString("You Win!");
						displayLCDPos(1, 9);
						displayNextLCDNumber(mtime);
						displayLCDPos(1, 10);
						displayNextLCDString(":");
						displayLCDPos(1, 11);
						displayNextLCDNumber(vtime);
					}
					castle = 2;
					vstart = 0;
				}
				if (SensorValue(stopbutton)==1)
				{
					clearTimer(T1);
					vtime = 0;
					ftime = 0;
					ptime = 0;
					mtime = 0;
					vtime = 0;
					vstart = 0;
					castle_score1 = 0; //Set castle_score1 to 0
					setServo(servo1king, 110);
				}
			}
			if (castle == 2)
			{
				turnLEDOn(castle1LED1);
				turnLEDOn(castle1LED2);
				turnLEDOn(castle1LED3);
				wait(0.5);
				turnLEDOff(castle1LED1);
				turnLEDOff(castle1LED2);
				turnLEDOff(castle1LED3);
				wait(0.5);
				turnLEDOn(castle1LED1);
				turnLEDOn(castle1LED2);
				turnLEDOn(castle1LED3);
				wait(0.5);
				turnLEDOff(castle1LED1);
				turnLEDOff(castle1LED2);
				turnLEDOff(castle1LED3);
				wait(0.5);
				turnLEDOn(castle1LED1);
				turnLEDOn(castle1LED2);
				turnLEDOn(castle1LED3);
				wait(0.5);
				turnLEDOff(castle1LED1);
				turnLEDOff(castle1LED2);
				turnLEDOff(castle1LED3);
				wait(0.5);
				turnLEDOn(castle1LED1);
				turnLEDOn(castle1LED2);
				turnLEDOn(castle1LED3);
				wait(0.5);
				turnLEDOff(castle1LED1);
				turnLEDOff(castle1LED2);
				turnLEDOff(castle1LED3);
				wait(0.1);
				turnLEDOn(castle1LED1);
				wait(0.2);
				turnLEDOff(castle1LED1);
				wait(0.1);
				turnLEDOn(castle1LED2);
				wait(0.2);
				turnLEDOff(castle1LED2);
				wait(0.1);
				turnLEDOn(castle1LED3);
				wait(0.2);
				turnLEDOff(castle1LED3);
				wait(0.1);
				turnLEDOn(castle1LED2);
				wait(0.2);
				turnLEDOff(castle1LED2);
				wait(0.1);
				turnLEDOn(castle1LED1);
				wait(0.2);
				turnLEDOff(castle1LED1);
				wait(0.1);
				turnLEDOn(castle1LED2);
				wait(0.2);
				turnLEDOff(castle1LED2);
				wait(0.1);
				turnLEDOn(castle1LED3);
				wait(0.2);
				turnLEDOff(castle1LED3);
				wait(0.1);
				turnLEDOn(castle1LED2);
				wait(0.2);
				turnLEDOff(castle1LED2);
				wait(0.1);
				turnLEDOn(castle1LED1);
				wait(0.2);
				turnLEDOff(castle1LED1);
				wait(0.1);
				turnLEDOn(castle1LED2);
				wait(0.2);
				turnLEDOff(castle1LED2);
				wait(0.1);
				turnLEDOn(castle1LED3);
				wait(0.2);
				turnLEDOff(castle1LED3);
				wait(0.5);
				turnLEDOn(castle1LED1);
				turnLEDOn(castle1LED2);
				turnLEDOn(castle1LED3);
				wait(0.5);
				turnLEDOff(castle1LED1);
				turnLEDOff(castle1LED2);
				turnLEDOff(castle1LED3);
				wait(0.5);
				turnLEDOn(castle1LED1);
				turnLEDOn(castle1LED2);
				turnLEDOn(castle1LED3);
				wait(0.5);
				turnLEDOff(castle1LED1);
				turnLEDOff(castle1LED2);
				turnLEDOff(castle1LED3);
				if (SensorValue(stopbutton)==1)
				{
					clearTimer(T1);
					vtime = 0;
					ftime = 0;
					ptime = 0;
					mtime = 0;
					vtime = 0;
					vstart = 0;
					castle_score1 = 0; //Set castle_score1 to 0
					setServo(servo1king, 110);
				}
			}
			if (SensorValue(stopbutton)==1)
			{
					clearTimer(T1);
					vtime = 0;
					ftime = 0;
					ptime = 0;
					mtime = 0;
					vtime = 0;
					vstart = 0;
					castle_score1 = 0; //Set castle_score1 to 0
					setServo(servo1king, 110);
			}
		}
	}
}

Last updated

Was this helpful?