Beispiel #1
0
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;
}
Beispiel #2
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(); 
}
Beispiel #3
0
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();
		
	}
}