Jeu de réflexe multijoueurs
Dés que la Led rouge s'allume, il faut appuyer le plus rapidement
possible surle bouton poussoir, 5 fois de suite. A chaque fois ton
temps de réaction est mesuré, et est de l'ordre de 200ms. Ton score est
le cumul de ces temps intermédiaires, et devrait avoisiner les 1000ms,
c'est-à-dire 1s.
A la fin de chaque partie, la Led jaune clignote et attend que tu
redémarre le jeu enappuyant une fois sur le bouton poussoir.
Qu va être le meilleur, le jeune enfant, l'ado, l'adulte ou le
vieillard?
Ce jeu peut facilement être réalisé avec Arduino. Voici le montage, et
le code
Matériel:
1 led Rouge
1 led jaune
2 résistances 1kOhm
1 résistance 10kOhm
1 capacité 100nF (qui évite le phénomène de "rebond")
1 bouton poussoir
int
led =
13;
// emplacement de la led Rouge
int mitemps =
11;
// emplacement de la led Jaune
int
inter=12;
// emplacement du bouton poussoir
int buttonState = 0;
// etat
du bouton poussoir
long randNumber;
// generation d'un nombre aléatoire sui determine à quel moment
aléatoire va s'allumer la led rouge
int clign=50;
// temps de
clignotement de la led jaune
unsigned long
temps;
// Les trois variables suivantes servent à mesurer le temps
unsigned long duree;
// temps, le
temps initial à l'allumage de le led rouge
unsigned long somme;
void setup() {
Serial.begin(9600);
// on fait une sortie ecran sur le PC
pinMode(led, OUTPUT);
pinMode(mitemps, OUTPUT);
pinMode(inter, INPUT);
randomSeed(analogRead(0));
}
void loop() {
somme=0;
buttonState = HIGH;
while (buttonState == HIGH){
// Le WHILE permet de faire clignoter la led jaune
et est en attente du joueur qui doit appuyer sur le bouton poussoir
buttonState = digitalRead(inter);
digitalWrite(mitemps, HIGH);
delay(clign);
buttonState = digitalRead(inter);
digitalWrite(mitemps, LOW);
delay(clign);
}
for (int i=0; i < 5;
i++){
// Début de la boucle des 5 tests successifs
digitalWrite(led, LOW);
delay(1500);
// délais de temporisation d'1.5 seconde
randNumber = random(5000);
// + délais randomisé (<5s)
delay(randNumber);
buttonState = HIGH;
temps = millis();
Serial.print(i);
digitalWrite(led,
HIGH);
// Allume le led Rouge
while (buttonState ==
HIGH){
// Tant que le bouton poussoir n'est pas appuyé, alors fait cette boucle
buttonState = digitalRead(inter);
// Lit l'état du bouton poussoir
if (buttonState == LOW)
{
digitalWrite(led,
LOW);
// si appuyé, alors éteint le led rouge
}
}
Serial.print(" - Temps de réaction : ");
duree=millis()-temps;
// Estime la durée de réaction...
somme=somme+duree;
Serial.print(duree);
Serial.print("/");
Serial.println(somme);
//... et l'affiche
}
// fin de la boucle FOR
Serial.print("Ton Score : ");
Serial.println(somme);
Serial.println("----------------------------"); // Affiche
le score (le cumul des durée de reactions intermediaires)
delay(2000);
// Temporise 2s avant de relancer le jeu
}
|
Voici l'affichage obtenu à l'écran après 2 tests (corriger l'encodage
du "e" accentué en retirant l'accent dans le code)
|