int battlenetworkgame::qt_metacall(QMetaObject::Call _c, int _id, void **_a) { _id = QWidget::qt_metacall(_c, _id, _a); if (_id < 0) return _id; if (_c == QMetaObject::InvokeMetaMethod) { switch (_id) { case 0: createRandomBoard(); break; case 1: createCustomBoard(); break; case 2: opponentLeft((*reinterpret_cast< QString(*)>(_a[1]))); break; case 3: appendMessage((*reinterpret_cast< QString(*)>(_a[1])),(*reinterpret_cast< QString(*)>(_a[2]))); break; case 4: fire(); break; default: ; } _id -= 5; } return _id; }
//========================================= // Main Program //========================================= task main() { initializeRobot(); waitForStart(); // wait for FCS to tell us to go! if(done) { StartTask(lightDiagnostic); } if(calibrate != 2) // GYRO calibration hasn't been run during the wait time { gyroCalTime = 3; // so setup the default calibrate time calibrate = 1; // start the calibration going while(calibrate != 2) // and wait for it to complete before moving the robot { EndTimeSlice(); } } constHeading = 0; // reset the GYRO headings to eliminate any drift while we waited relHeading = 0; // same thing for relative heading wait1Msec(Start_Delay*1000); // implement the user configurable delay before moving PlaySound(soundBeepBeep); // tell everyone we're about to start going step = MissionNumber*100; // this records the actual mission number that we ran within the data log file LogData=true; // start saving data to the log file servo[wrist] = WRIST_CLOSED; servo[shoulder] = SHOULDER_DOWN; servo[right_servo] = RIGHT_GRIPPER_START; servo[left_servo] = LEFT_GRIPPER_START; switch(MissionNumber) // now go run whichever mission we have been asked to run { //================================================ // start on the right side of the blue dispenser delivers to IR //================================================ case 1: IRside = position1();//go here if(IRside < -75) column = 1; else if(IRside < -25) column = 2; else column = 3; wait1Msec(800); switch(column) { case 1://left diagnosticBeeps(1); leftPeg(); break; case 2://center diagnosticBeeps(2); centerPeg(); break; case 3://right diagnosticBeeps(3); rightPeg(); break; } switch(fieldRed) { case STOP: StopRobot(); break; case RED: redReturn(); break; case BLUE: blueReturn(); break; } break; //================================================ // CENTER PEG //================================================ case 2: position1(); centerPeg(); switch(fieldRed) { case STOP: StopRobot(); break; case RED: redReturn(); break; case BLUE: blueReturn(); break; } break; //================================================ // LEFT PEG //================================================ case 3: position1(); leftPeg(); switch(fieldRed) { case STOP: StopRobot(); break; case RED: redReturn(); break; case BLUE: blueReturn(); break; } break; //================================================ // RIGHT PEG //================================================ case 4: position1(); rightPeg(); switch(fieldRed) { case STOP: StopRobot(); break; case RED: redReturn(); break; case BLUE: blueReturn(); break; } break; //================================================ // IR SECOND POSITION //================================================ case 5: IRside = position2();//go here if(IRside < -75) column = 1; else if(IRside < -25) column = 2; else column = 3; wait1Msec(800); switch(column) { case 1://left diagnosticBeeps(1); leftPeg(); break; case 2://center diagnosticBeeps(2); centerPeg(); break; case 3://right diagnosticBeeps(3); rightPeg(); break; } switch(fieldRed) { case STOP: StopRobot(); break; case RED: redReturn(); break; case BLUE: blueReturn(); break; } break; //================================================ // CENTER PED SECOND POSITION //================================================ case 6: position2(); centerPeg(); break; //================================================ // LEFT PEG SECOND POSITION //================================================ case 7: position2(); leftPeg(); break; //================================================ // RIGHT PED SECOND POSITION //================================================ case 8: position2(); rightPeg(); break; //================================================ // DEFENSE RIGHT //================================================ case 9: GyroSonar_moveV2(0, BACK, 100, 124, -60,true, true, CONSTANT); GyroTime_moveV2(700,-50,true,true,REL); GyroTimeS_moveV2(1800,40,true,true,false,true); break; //================================================ // DEFENSE LEFT //================================================ case 10: GyroSonar_moveV2(0, BACK, 100, 124, -60,true, true, CONSTANT); GyroTime_moveV2(700,-50,true,true,REL); GyroTimeS_moveV2(1800,-40,true,true,false,true); break; //================================================ // OPPONENT IR //================================================ case 11: for (int i=0;i<90;i++) {SetDrive(i,50,i); wait1Msec(30); } StopRobot(); wait1Msec(30000); break; //================================================ // OPPONENT CENTER //================================================ case 12: opponentRight(); centerPeg(); break; //================================================ // OPPONENT LEFT //================================================ case 13: opponentRight(); rightPeg(); break; //================================================ // OPPONENT RIGHT //================================================ case 14: opponentRight(); leftPeg(); break; //================================================ // OPPONENTL IR //================================================ case 15: opponentLeft(); leftPeg(); break; //================================================ // OPPONENTL CENTER //================================================ case 16: opponentLeft(); centerPeg(); break; //================================================ // OPPONENTL LEFT //================================================ case 17: opponentLeft(); rightPeg(); break; //================================================ // OPPONENTL RIGHT //================================================ case 18: opponentLeft(); leftPeg(); break; //================================================ // See Opponent test //================================================ case 19: sawOpponent = GyroSonar_moveV2(0, BACK, 100, 112, -50,true, true, CONSTANT); StopRobot(); if(sawOpponent) diagnosticBeeps(6); break; //================================================ // See Opponent test2 //================================================ case 20: sawOpponent = GyroSonar_moveV2(0, BACK, 100, 112, -50,true, true, CONSTANT); StopRobot(); if(sawOpponent) diagnosticBeeps(6); break; } LogData=false; // stop logging IR data and close the file StopRobot(); }