diff options
Diffstat (limited to 'Core/Inc/simon.h')
-rw-r--r-- | Core/Inc/simon.h | 111 |
1 files changed, 0 insertions, 111 deletions
diff --git a/Core/Inc/simon.h b/Core/Inc/simon.h deleted file mode 100644 index 01bcf6f..0000000 --- a/Core/Inc/simon.h +++ /dev/null @@ -1,111 +0,0 @@ -#include <stdlib.h> -#include <stdio.h> -#include <time.h> -#include <unistd.h> -#include <string.h> - -void fonction_led(char* couleur, int position) { //correspondance LEDs - if (position==0){ - printf("( () () () )\n"); //eteind - } else if (strcmp(couleur,"R")==0){ //rouge - printf("( (R) () () )\n"); //allume (envoie la commande sur le pin correspondant) - } else if (strcmp(couleur,"V")==0){ //vert - printf("( () (V) () )\n"); //allume (envoie la commande sur le pin correspondant) - } else if (strcmp(couleur,"J")==0){ //jaune - printf("( () () (J) )\n"); //allume (envoie la commande sur le pin correspondant) - } -} - -void affiche_lcd(char* contenu) { //correspondance LCD - printf ("[LCD : %s]\n", contenu); //afichage sur l'ecran LCD -} - -char* choix_aleatoire(void) { - char* couleur_leds[3]={"R","V","J"}; //nos couleurs de led - srand(time(0)); - int aleatoire = (rand() % (2 - 0 + 1)) + 0; //choix entre 0 et 2 pour avoir 3 valeurs differentes (3 couleurs/leds) - char* choix = couleur_leds[aleatoire]; - return choix; -} - - -int simon(void) { - affiche_lcd("SIMON_STM32"); - - int etat_bouton_deux_joueurs = 1; //faire une correspondance au quatrieme bouton - - int score = 0; //ne pas toucher - int deuxieme_joueur_joue = 0; //ne pas toucher - int score_un=0; //ne pas toucher - int score_deux=0; //ne pas toucher - char* suite_de_leds[100]={}; //ne pas toucher - - while (1) { //le programme tourne en continue - - int etat_bouton_start = 1; //correspondance bouton bleu - int perdu = 0; //ne pas toucher - if (etat_bouton_start){ - affiche_lcd("LET'S GO !"); - if (etat_bouton_deux_joueurs && !deuxieme_joueur_joue){ //lancement du mode 2J - affiche_lcd("MODE 2J"); - affiche_lcd("J1!"); - } - else if (!etat_bouton_deux_joueurs && !deuxieme_joueur_joue) { //lancement du mode 1J - affiche_lcd("MODE 1J"); - } - while (perdu!= 1) { //ici on lance un niveau, tant qu'on a pas perdu - - suite_de_leds[score] = choix_aleatoire(); - score++; - for (int i = 0; i<score; i++){ //allume et eteinds les leds une par une par rapport au niveau - fonction_led(suite_de_leds[i], 1); //on - fonction_led(suite_de_leds[i], 0); //off - sleep(1); //petite attente (1s) pour ne pas avoir toute les leds qui s'allume en meme temps - } - - affiche_lcd("A VOUS !"); - int iLed=0; - do { //le joueur appuie sur les boutons - char bouton[100]; - scanf("%s", bouton); //correspondance - char* bouton_couleur = bouton; //boutons poussoirs - - if (*bouton_couleur!=*suite_de_leds[iLed]){ //le joueur se trompe - affiche_lcd("GAME OVER !"); - affiche_lcd("SCORE :"); - - char score_char[10]; - sprintf(score_char, "%d", score-1); //rendre un int en char - - affiche_lcd(score_char); - perdu = 1; - etat_bouton_start=0; - } else { - perdu = 0; //possiblement enlevable - } - iLed++; - } while (iLed<score && perdu!=1); - //tant qu'on a des leds a faire allume et qu'on a pas perdu - } - - if (etat_bouton_deux_joueurs && perdu==1 && !deuxieme_joueur_joue){ //si le premier joueur perd en mode 2J - affiche_lcd("J2!"); - etat_bouton_deux_joueurs = 0; - perdu = 0; - etat_bouton_start=1; - score_un = score; - deuxieme_joueur_joue = 1; - } else if (deuxieme_joueur_joue){ //si tout le monde a joue en mode 2 joueurs, on fait la comparaison des scores - score_deux = score; - if (score_un>score_deux){affiche_lcd("JOUEUR 1 GAGNE!");} - else if (score_un<score_deux){affiche_lcd("JOUEUR 2 GAGNE!");} - else {affiche_lcd("EGALITE...");} - } - - } - score=0; - - } - - return 0; -} |