diff --git a/code_mieux/code_mieux.ino b/code_mieux/code_mieux.ino index ba190a8..d2649b2 100644 --- a/code_mieux/code_mieux.ino +++ b/code_mieux/code_mieux.ino @@ -32,6 +32,7 @@ LIS3DHTR lis; // Paramètres du jeu : bool isGameRunning = false; +int rep = 1; unsigned long lastButtonPressTime = 0; unsigned long lastTimeDecrement = 0; // Stocke le moment où la dernière seconde a été décrémentée unsigned long timeInterval = 1000; // Interval de temps en millisecondes (1000 ms = 1 seconde) @@ -103,7 +104,70 @@ float accX, accY; -float distance(int x1, int y1, int x2, int y2) { +void addsound(int number){ // GESTION DU SON + switch (number) + { + pinMode(WIO_BUZZER, OUTPUT); + case 0: + // SON DE CHOIX DE NIVEAU + analogWrite(WIO_BUZZER,100); + delay(100); + analogWrite(WIO_BUZZER,0); + delay(100); + analogWrite(WIO_BUZZER,100); + delay(100); + analogWrite(WIO_BUZZER,0); + delay(100); + analogWrite(WIO_BUZZER,100); + delay(100); + analogWrite(WIO_BUZZER,0); + break; + case 1: + // SON LORS DE PIECE JAUNE + for(int i=0; i< 1000000 ; i+=1014 *2){ + + digitalWrite(WIO_BUZZER, HIGH); + delayMicroseconds(900); + digitalWrite(WIO_BUZZER, LOW); + delayMicroseconds(900); + } + break; + case 2: + // SON LORS DE PIECE NOIRE + for(int i=0; i< 1000000 ; i+=1014 *2){ + digitalWrite(WIO_BUZZER, HIGH); + delayMicroseconds(1100); + digitalWrite(WIO_BUZZER, LOW); + delayMicroseconds(1100); + } + break; + case 3: + // SON LORS DE FIN DE NIVEAU + analogWrite(WIO_BUZZER,128); + analogWrite(WIO_BUZZER,0); + break; + case 4: + for(int i=0; i< 1000000 ; i+=500 *2){ + digitalWrite(WIO_BUZZER, HIGH); + delayMicroseconds(500); + digitalWrite(WIO_BUZZER, LOW); + delayMicroseconds(1100); + } + break; + + + } +} + + +void checkButtonAState(){ // GESTION AJOUT DE TEMPS + int buttonState=digitalRead(WIO_KEY_A); + if (buttonState==LOW && rep == 1){ + timeLeft=timeLeft+10; + rep=2; + } +} +float distance(int x1, int y1, int x2, int y2){ return sqrt(sq(x2 - x1) + sq(y2 - y1)); } @@ -141,6 +205,7 @@ void checkButtonState() { if(buttonState == LOW && isGameRunning == false){ lastTimeDecrement = millis(); + addsound(0); resetGame(); } } @@ -184,6 +249,7 @@ void checkTime() { } // Si le temps est écoulé, arrêtez le jeu if (timeLeft <= 0) { + addsound(3); isGameRunning = false; } } @@ -234,13 +300,16 @@ void checkColision() { currentPieces[i].isCollected = true; tft.fillCircle(currentPieces[i].x, currentPieces[i].y, 5, TFT_DARKGREY); if (currentPieces[i].isBlack) { - timeLeft -= 10; // Enlève 5 secondes - } else { + timeLeft -= 10; // Enlève 5 secondes + addsound(2); + } + else { + addsound(1); srand(time(0)); int points_ajoutes = rand() % 16 + 10; // tire un entier au sort aléatoirement entre 10 et 25 score += points_ajoutes; //ajoute le score de la pièce au score de la partie - } + } } } @@ -310,12 +379,9 @@ void loop() { if(isGameRunning){ updateBallPosition(); checkTime(); + checkButtonAState(); } else tft.fillCircle(ballX, ballY, ballRadius, TFT_RED); updateBanner(); // Mettre à jour le bandeau dans chaque boucle, que le jeu soit en cours ou non checkColision(); - } - - -