summaryrefslogtreecommitdiff
path: root/prototype_simon.c
diff options
context:
space:
mode:
authorClyhtsuriva <aimeric@adjutor.xyz>2021-01-26 18:26:26 +0100
committerClyhtsuriva <aimeric@adjutor.xyz>2021-01-26 18:26:26 +0100
commitbc481107298791bf0efd984ecc53dc92b8719878 (patch)
tree332af7837f310af85b261611ed016e0e6312262c /prototype_simon.c
parent816804c9c114e20d2231258cc346c3714590b9ea (diff)
Insertion du projet dans sa totalité
Diffstat (limited to 'prototype_simon.c')
-rw-r--r--prototype_simon.c111
1 files changed, 111 insertions, 0 deletions
diff --git a/prototype_simon.c b/prototype_simon.c
new file mode 100644
index 0000000..2d7fb2b
--- /dev/null
+++ b/prototype_simon.c
@@ -0,0 +1,111 @@
+#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 main(void) {
+ affiche_lcd("SIMON_STM32");
+
+
+ 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_deux_joueurs = 0; //faire une correspondance au quatrieme bouton
+ 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;
+}