int main(int argc, char *argv[]) { bool verb = false; int t; if(DEBUG==true){printf("argc: %d, argv: %s\n", argc, argv[1]);} if (argc >= 2) { t = atoi(argv[1]); } else { t = TAILLETAB; } int T[t]; remplirTab(T, t); //printTab(T, 0, t - 1); printf("Le tableau est de taille %s\n", argv[1]); if (argc == 4) { retour retour4; retour4.methode = 4; methode4(&retour4, T, 0, t - 1, verb); printRetour(&retour4); } if (argc >= 3) { if (atoi(argv[2]) == 4) { retour retour4; retour4.methode = 4; methode4(&retour4, T, 0, t - 1, verb); printRetour(&retour4); } else if (atoi(argv[2]) == 3) { retour retour3; retour3.methode = 3; methode3(&retour3, T, 0, t - 1, verb); printRetour(&retour3); } else if (atoi(argv[2]) == 2) { retour retour2; retour2.methode = 2; methode2(&retour2, T, 0, t - 1, verb); printRetour(&retour2); } else if (atoi(argv[2]) == 1) { retour retour1; retour1.methode = 1; methode1(&retour1, T, t, verb); printRetour(&retour1); } else { printf("Il n'y a que 4 methodes...\n"); } } else { retour retour4; retour4.methode = 4; methode4(&retour4, T, 0, t - 1, verb); printRetour(&retour4); retour retour3; retour3.methode = 3; methode3(&retour3, T, 0, t - 1, verb); printRetour(&retour3); retour retour2; retour2.methode = 2; methode2(&retour2, T, 0, t - 1, verb); printRetour(&retour2); retour retour1; retour1.methode = 1; methode1(&retour1, T, t, verb); printRetour(&retour1); } return 0; }
/* * * name: match permet de gérer les actions pour le match * @param * @return * */ void match() { int hasTurned = 0; printf("\r%f : Début de match !\n", timeEnd.read()); // Lancement timer avant mesure de l'angle timeAngle.start(); /* * Boucle de match donc on fait les actions tant que le temps * imparti timeEnd.read() < 90 * read() pour un temps en seconde et renvoi un float * read_ms() pour un temps en miliseconde et renvoi un int * read_us() pour un temps en microseconde et renvoi un int */ while(timeEnd.read() < 90.0) { /* * On affiche sur les leds l'état des capteurs * => allumés : pas de détection * => éteint : détection */ ledGauche = !capteurGauche; ledDroite = !capteurDroit; if(goToDance) { /* * Lance détection ennemi */ ultraG.startRanging(); while (!ultraG.rangingFinished()) wait(0.01); remplirTab(distanceGauche,ultraG.getRange()); ultraD.startRanging(); while (!ultraD.rangingFinished()) wait(0.01); remplirTab(distanceDroit,ultraD.getRange()); /* * Gestion de la détection des ennemis */ if(moyenne(distanceGauche) < DISTANCE_CAPTEUR || moyenne(distanceDroit) < DISTANCE_CAPTEUR) { printf("\r%f : Ennemi détecté :o\n", timeEnd.read()); qik.stopBothMotors(); } else { iLikeToMoveItMoveIt(); } } else { // Gestion de la pose de la fresque if(hasTurned) { // Lancement détection mur à scratch ultraM.startRanging(); while (!ultraM.rangingFinished()) wait(0.01); remplirTab(distanceMilieu,ultraM.getRange()); if(moyenne(distanceMilieu) < DISTANCE_FRESQUE) { printf("\r%f : Fresque détectée, on fait l'accrochage =)\n", timeEnd.read()); qik.stopBothMotors(); /* * Dépose fresque */ qikP.setMotor1Speed(-50); wait(3); qikP.setMotor1Speed(0); // On recule, mettez les feux de recul et la sirène ! printf("\r%f : Mettez les feux de recul et la sirène !\n", timeEnd.read()); Timer coucouTimer; coucouTimer.start(); while(coucouTimer.read() <= 4 || moyenne(distanceMilieu) <= DISTANCE_FRESQUE*2) { ultraArr.startRanging(); while (!ultraArr.rangingFinished()) wait(0.01); remplirTab(distanceArr,ultraArr.getRange()); printf("dist. arrière : %d\n", moyenne(distanceArr)); if(ultraArr.getRange() < DISTANCE_CAPTEUR) { printf("\r%f : Ennemi détecté :o\n", timeEnd.read()); qik.stopBothMotors(); } else { reculer(1); } // Détection mur à scratch ultraM.startRanging(); while (!ultraM.rangingFinished()) wait(0.01); remplirTab(distanceMilieu,ultraM.getRange()); } qik.stopBothMotors(); coucouTimer.stop(); goToDance = 1; printf("\r%f : Dance dance mode =D\n", timeEnd.read()); } else { avancer(0.80); } } else { /* * Lance détection ennemi */ ultraG.startRanging(); while (!ultraG.rangingFinished()) wait(0.01); remplirTab(distanceGauche,ultraG.getRange()); ultraD.startRanging(); while (!ultraD.rangingFinished()) wait(0.01); remplirTab(distanceDroit,ultraD.getRange()); /* * Gestion de la détection des ennemis */ if(moyenne(distanceGauche) < DISTANCE_CAPTEUR || moyenne(distanceDroit) < DISTANCE_CAPTEUR) { printf("\r%f : Ennemi détecté :o\n", timeEnd.read()); qik.stopBothMotors(); } else { avancer(1); } } printf("\r%f : Angle %d sur %d \n", timeEnd.read(), cptPosition, SEUIL); if(!hasTurned) { hasTurned = (abs(cptPosition) >= SEUIL) && (abs(cptStack) >= SEUIL_STACK); if(hasTurned) printf("\r%f : On a tourné, on peut détecter la Fresque\n", timeEnd.read()); } // Update timer angle if(timeAngle.read() >= ANGLE_MAX_TIMER) { timeAngle.stop(); angleGo = 1; } } } qikP.setMotor1Speed(-20); wait(7.5); qikP.setMotor1Speed(0); qik.stopBothMotors(); }
void pomPomGirl() { while(1) { /* * Lance détection ennemi */ ultraG.startRanging(); while (!ultraG.rangingFinished()) wait(0.01); remplirTab(distanceGauche,ultraG.getRange()); ultraD.startRanging(); while (!ultraD.rangingFinished()) wait(0.01); remplirTab(distanceDroit,ultraD.getRange()); /* // Tourne à droite doucement double slow = 0.8; qik.setMotor0Speed((int)AMOTEURD*slow); qik.setMotor1Speed((int)RMOTEURG*slow); wait(2); qik.stopBothMotors(); // Tourne à gauche doucement qik.setMotor0Speed((int)RMOTEURD*slow); qik.setMotor1Speed((int)AMOTEURG*slow); wait(4); qik.stopBothMotors(); */ double fast = 1.3; // Tourne gauche-droite-gauche rapidement qik.setMotor0Speed((int)AMOTEURD*fast); qik.setMotor1Speed((int)RMOTEURG*fast); wait(2); qik.setMotor0Speed((int)RMOTEURD*fast); qik.setMotor1Speed((int)AMOTEURG*fast); wait(2); qikP.setMotor1Speed(0); qik.setMotor0Speed((int)AMOTEURD*fast); qik.setMotor1Speed((int)RMOTEURG*fast); wait(1); qik.setMotor0Speed((int)RMOTEURD*fast); qik.setMotor1Speed((int)AMOTEURG*fast); wait(1); qik.setMotor0Speed((int)AMOTEURD*fast); qik.setMotor1Speed((int)RMOTEURG*fast); wait(1); qik.stopBothMotors(); /* // Ouverture/Fermeture lente qikP.setMotor1Speed(-40); wait(4); qikP.setMotor1Speed(40); wait(4); qikP.setMotor1Speed(0); * */ // Ouverture/Fermeture rapide qikP.setMotor1Speed(-80); wait(1); qikP.setMotor1Speed(80); wait(1); qikP.setMotor1Speed(-80); wait(1); qikP.setMotor1Speed(80); wait(1); qikP.setMotor1Speed(-80); wait(1); qikP.setMotor1Speed(0); // Tour 360 gauche + remise qikP.setMotor1Speed(40); qik.setMotor0Speed((int)RMOTEURD*fast); qik.setMotor1Speed((int)AMOTEURG*fast); wait(2.5); qik.stopBothMotors(); } }