From 0b4f16ccee34f389e286835c1f8afd4f5a33f0a3 Mon Sep 17 00:00:00 2001
From: Antoine METZ <metzantoin@pce10811.etude.pau.eisti.fr>
Date: Thu, 25 May 2023 15:20:37 +0200
Subject: [PATCH 01/21] test pour voir si j'envoie dans la branche Ebauche

---
 test.c | 0
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 test.c

diff --git a/test.c b/test.c
new file mode 100644
index 0000000..e69de29
-- 
GitLab


From e5e37f7ea654156c994cbee5056c43bde265cda8 Mon Sep 17 00:00:00 2001
From: Thierry <berardthie@cy-tech.fr>
Date: Thu, 25 May 2023 15:36:57 +0200
Subject: [PATCH 02/21] test de thierry

---
 test2.c | 0
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 test2.c

diff --git a/test2.c b/test2.c
new file mode 100644
index 0000000..e69de29
-- 
GitLab


From eba61d97c2e68d4e4e130cd17253888659b13ec0 Mon Sep 17 00:00:00 2001
From: root <root@DESKTOP-CNLRA8O.localdomain>
Date: Wed, 14 Jun 2023 13:58:31 +0200
Subject: [PATCH 03/21] gitlab web se refresh pas, pb de cache navigateur?

---
 blabla.c | 0
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 blabla.c

diff --git a/blabla.c b/blabla.c
new file mode 100644
index 0000000..e69de29
-- 
GitLab


From 142f9f99d107c1ea670a7ece6d8689fb9bf1552c Mon Sep 17 00:00:00 2001
From: root <root@DESKTOP-CNLRA8O.localdomain>
Date: Wed, 14 Jun 2023 14:01:18 +0200
Subject: [PATCH 04/21] =?UTF-8?q?delete=20les=20fichiers=20import=C3=A9s?=
 =?UTF-8?q?=20de=20/ebauche?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 README.md | 92 -------------------------------------------------------
 test.c    |  0
 test2.c   |  0
 3 files changed, 92 deletions(-)
 delete mode 100644 README.md
 delete mode 100644 test.c
 delete mode 100644 test2.c

diff --git a/README.md b/README.md
deleted file mode 100644
index df68f98..0000000
--- a/README.md
+++ /dev/null
@@ -1,92 +0,0 @@
-# Projet Info 
-
-
-
-## Getting started
-
-To make it easy for you to get started with GitLab, here's a list of recommended next steps.
-
-Already a pro? Just edit this README.md and make it your own. Want to make it easy? [Use the template at the bottom](#editing-this-readme)!
-
-## Add your files
-
-- [ ] [Create](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#create-a-file) or [upload](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#upload-a-file) files
-- [ ] [Add files using the command line](https://docs.gitlab.com/ee/gitlab-basics/add-file.html#add-a-file-using-the-command-line) or push an existing Git repository with the following command:
-
-```
-cd existing_repo
-git remote add origin https://gitlab.etude.cy-tech.fr/e-ametz/projet-info.git
-git branch -M main
-git push -uf origin main
-```
-
-## Integrate with your tools
-
-- [ ] [Set up project integrations](https://gitlab.etude.cy-tech.fr/e-ametz/projet-info/-/settings/integrations)
-
-## Collaborate with your team
-
-- [ ] [Invite team members and collaborators](https://docs.gitlab.com/ee/user/project/members/)
-- [ ] [Create a new merge request](https://docs.gitlab.com/ee/user/project/merge_requests/creating_merge_requests.html)
-- [ ] [Automatically close issues from merge requests](https://docs.gitlab.com/ee/user/project/issues/managing_issues.html#closing-issues-automatically)
-- [ ] [Enable merge request approvals](https://docs.gitlab.com/ee/user/project/merge_requests/approvals/)
-- [ ] [Automatically merge when pipeline succeeds](https://docs.gitlab.com/ee/user/project/merge_requests/merge_when_pipeline_succeeds.html)
-
-## Test and Deploy
-
-Use the built-in continuous integration in GitLab.
-
-- [ ] [Get started with GitLab CI/CD](https://docs.gitlab.com/ee/ci/quick_start/index.html)
-- [ ] [Analyze your code for known vulnerabilities with Static Application Security Testing(SAST)](https://docs.gitlab.com/ee/user/application_security/sast/)
-- [ ] [Deploy to Kubernetes, Amazon EC2, or Amazon ECS using Auto Deploy](https://docs.gitlab.com/ee/topics/autodevops/requirements.html)
-- [ ] [Use pull-based deployments for improved Kubernetes management](https://docs.gitlab.com/ee/user/clusters/agent/)
-- [ ] [Set up protected environments](https://docs.gitlab.com/ee/ci/environments/protected_environments.html)
-
-***
-
-# Editing this README
-
-When you're ready to make this README your own, just edit this file and use the handy template below (or feel free to structure it however you want - this is just a starting point!). Thank you to [makeareadme.com](https://www.makeareadme.com/) for this template.
-
-## Suggestions for a good README
-Every project is different, so consider which of these sections apply to yours. The sections used in the template are suggestions for most open source projects. Also keep in mind that while a README can be too long and detailed, too long is better than too short. If you think your README is too long, consider utilizing another form of documentation rather than cutting out information.
-
-## Name
-Choose a self-explaining name for your project.
-
-## Description
-Let people know what your project can do specifically. Provide context and add a link to any reference visitors might be unfamiliar with. A list of Features or a Background subsection can also be added here. If there are alternatives to your project, this is a good place to list differentiating factors.
-
-## Badges
-On some READMEs, you may see small images that convey metadata, such as whether or not all the tests are passing for the project. You can use Shields to add some to your README. Many services also have instructions for adding a badge.
-
-## Visuals
-Depending on what you are making, it can be a good idea to include screenshots or even a video (you'll frequently see GIFs rather than actual videos). Tools like ttygif can help, but check out Asciinema for a more sophisticated method.
-
-## Installation
-Within a particular ecosystem, there may be a common way of installing things, such as using Yarn, NuGet, or Homebrew. However, consider the possibility that whoever is reading your README is a novice and would like more guidance. Listing specific steps helps remove ambiguity and gets people to using your project as quickly as possible. If it only runs in a specific context like a particular programming language version or operating system or has dependencies that have to be installed manually, also add a Requirements subsection.
-
-## Usage
-Use examples liberally, and show the expected output if you can. It's helpful to have inline the smallest example of usage that you can demonstrate, while providing links to more sophisticated examples if they are too long to reasonably include in the README.
-
-## Support
-Tell people where they can go to for help. It can be any combination of an issue tracker, a chat room, an email address, etc.
-
-## Roadmap
-If you have ideas for releases in the future, it is a good idea to list them in the README.
-
-## Contributing
-State if you are open to contributions and what your requirements are for accepting them.
-
-For people who want to make changes to your project, it's helpful to have some documentation on how to get started. Perhaps there is a script that they should run or some environment variables that they need to set. Make these steps explicit. These instructions could also be useful to your future self.
-
-You can also document commands to lint the code or run tests. These steps help to ensure high code quality and reduce the likelihood that the changes inadvertently break something. Having instructions for running tests is especially helpful if it requires external setup, such as starting a Selenium server for testing in a browser.
-
-## Authors and acknowledgment
-Show your appreciation to those who have contributed to the project.
-
-## License
-For open source projects, say how it is licensed.
-
-## Project status
-If you have run out of energy or time for your project, put a note at the top of the README saying that development has slowed down or stopped completely. Someone may choose to fork your project or volunteer to step in as a maintainer or owner, allowing your project to keep going. You can also make an explicit request for maintainers.
diff --git a/test.c b/test.c
deleted file mode 100644
index e69de29..0000000
diff --git a/test2.c b/test2.c
deleted file mode 100644
index e69de29..0000000
-- 
GitLab


From e25ac21e8b3823b118b423ce26e0a3f6918a1cf9 Mon Sep 17 00:00:00 2001
From: root <root@DESKTOP-CNLRA8O.localdomain>
Date: Thu, 15 Jun 2023 17:09:23 +0200
Subject: [PATCH 05/21] template pour la doc des fonctions

---
 templatededoc.txt | 5 +++++
 1 file changed, 5 insertions(+)
 create mode 100644 templatededoc.txt

diff --git a/templatededoc.txt b/templatededoc.txt
new file mode 100644
index 0000000..06052d8
--- /dev/null
+++ b/templatededoc.txt
@@ -0,0 +1,5 @@
+/* Auteur : ... */
+/* Date :   ... */
+/* Résumé : ... */
+/* Entrée(s) : ... */
+/* Sortie(s) :  ...  */
\ No newline at end of file
-- 
GitLab


From 15fab7ab1608aa6688180508cb2d5f180545556f Mon Sep 17 00:00:00 2001
From: root <root@DESKTOP-CNLRA8O.localdomain>
Date: Fri, 16 Jun 2023 16:04:03 +0200
Subject: [PATCH 06/21] Affichagez projet p1 6 qui prend fait avec un
 convertisseur en ascii

---
 affichage.c | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)
 create mode 100644 affichage.c

diff --git a/affichage.c b/affichage.c
new file mode 100644
index 0000000..e53a716
--- /dev/null
+++ b/affichage.c
@@ -0,0 +1,24 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+void affichage() {
+    printf("  ██████╗ ██████╗  ██████╗      ██╗███████╗████████╗    ██████╗  ██╗\n"
+           " ██╔══██╗██╔══██╗██╔═══██╗     ██║██╔════╝╚══██╔══╝    ██╔══██╗███║\n"
+           " ██████╔╝██████╔╝██║   ██║     ██║█████╗     ██║       ██████╔╝╚██║\n"
+           " ██╔═══╝ ██╔══██╗██║   ██║██   ██║██╔══╝     ██║       ██╔═══╝  ██║\n"
+           " ██║     ██║  ██║╚██████╔╝╚█████╔╝███████╗   ██║       ██║      ██║\n"
+           " ╚═╝     ╚═╝  ╚═╝ ╚═════╝  ╚════╝ ╚══════╝   ╚═╝       ╚═╝      ╚═╝\n"
+           "                                                              \n"
+           "  ██████╗          ██████╗ ██╗   ██╗██╗    ██████╗ ██████╗ ███████╗███╗   ██╗██████╗\n"
+           " ██╔════╝         ██╔═══██╗██║   ██║██║    ██╔══██╗██╔══██╗██╔════╝████╗  ██║██╔══██╗\n"
+           " ███████╗         ██║   ██║██║   ██║██║    ██████╔╝██████╔╝█████╗  ██╔██╗ ██║██║  ██║\n"
+           " ██╔═══██╗        ██║▄▄ ██║██║   ██║██║    ██╔═══╝ ██╔══██╗██╔══╝  ██║╚██╗██║██║  ██║\n"
+           " ╚██████╔╝        ╚██████╔╝╚██████╔╝██║    ██║     ██║  ██║███████╗██║ ╚████║██████╔╝\n"
+           "  ╚═════╝          ╚══▀▀═╝  ╚═════╝ ╚═╝    ╚═╝     ╚═╝  ╚═╝╚══════╝╚═╝  ╚═══╝╚═════╝\n");
+}
+
+int main(){
+    printf("Test de l'affichage avec le ascii convertor \n");
+    affichage();
+}
\ No newline at end of file
-- 
GitLab


From 8b3adb6f0d3ea82c3a65d57b9aafa960eae3b349 Mon Sep 17 00:00:00 2001
From: root <root@DESKTOP-CNLRA8O.localdomain>
Date: Fri, 16 Jun 2023 16:09:06 +0200
Subject: [PATCH 07/21] =?UTF-8?q?Commit=20du=20makefile=20pour=20le=20proj?=
 =?UTF-8?q?et,=20fonction.c/.h=20et=20main.c=20;=20=C3=A0=20voir=20le=20no?=
 =?UTF-8?q?m=20de=20l'exe?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 makefile | 8 ++++++++
 1 file changed, 8 insertions(+)
 create mode 100644 makefile

diff --git a/makefile b/makefile
new file mode 100644
index 0000000..968f495
--- /dev/null
+++ b/makefile
@@ -0,0 +1,8 @@
+6quiprend: fonctions.o main.o
+	gcc fonctions.o main.o -o 6quiprend
+fonctions.o : fonctions.c fonctions.h
+	gcc -c fonctions.c -o fonctions.o -Wall
+main.o: main.c fonctions.h
+	gcc -c main.c -o main.o -Wall
+clean:
+	rm -f *.o
-- 
GitLab


From 606411880293fddd29e4e8f30e1af5f3474967cc Mon Sep 17 00:00:00 2001
From: root <root@DESKTOP-CNLRA8O.localdomain>
Date: Sat, 17 Jun 2023 17:48:15 +0200
Subject: [PATCH 08/21] =?UTF-8?q?proc=C3=A9dure=20pour=20afficher=20le=20j?=
 =?UTF-8?q?eu=20du=20joueur?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 afftabjeujoueur.c | 8 ++++++++
 1 file changed, 8 insertions(+)
 create mode 100644 afftabjeujoueur.c

diff --git a/afftabjeujoueur.c b/afftabjeujoueur.c
new file mode 100644
index 0000000..03ddafc
--- /dev/null
+++ b/afftabjeujoueur.c
@@ -0,0 +1,8 @@
+void afftabjeujoueur(joueur* tab,int taille);
+
+void afftabjeujoueur(joueur* tab,int taille){
+    for(int i=0;i<taille;i++){
+        printf("%s : ",tab[i].nom);
+        afftabcartes(tab[i].jeu,10);
+    }
+}
\ No newline at end of file
-- 
GitLab


From 2c48f1fbd24501b1b1b4f30d0fd7e07f5a150543 Mon Sep 17 00:00:00 2001
From: root <root@DESKTOP-CNLRA8O.localdomain>
Date: Sat, 17 Jun 2023 17:49:10 +0200
Subject: [PATCH 09/21] Fonction pour creer les joueurs avec prise en charge
 des bots

---
 creerjoueur.c | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)
 create mode 100644 creerjoueur.c

diff --git a/creerjoueur.c b/creerjoueur.c
new file mode 100644
index 0000000..df864f5
--- /dev/null
+++ b/creerjoueur.c
@@ -0,0 +1,26 @@
+joueur* creerjoueurs(carte* tabcartes, int taille,int nbjoueurs,int nbbots);
+
+joueur* creerjoueurs(carte* tabcartes, int taille,int nbjoueurs,int nbbots){
+    joueur* tab;
+    tab=malloc(taille*sizeof(joueur));
+    for(int i=0;i<nbjoueurs;i++){
+        printf("entrez le nom du joueur: ");
+        scanf("%s",tab[i].nom);
+        tab[i].jeu=inittabcarte(10);
+        distribution(tabcartes,tab[i].jeu,10);
+        triselection(tab[i].jeu,10);
+        tab[i].nb_tete=malloc(sizeof(int));
+        tab[i].bot=0;
+    }
+    for(int j=nbjoueurs; j<nbjoueurs+nbbots ; j++){ 
+        printf("Création de bot %d : \n", j);
+        sprintf(tab[j].nom,"Bot [%d]",j);
+        tab[j].jeu=inittabcarte(10);
+        distribution(tabcartes,tab[j].jeu,10);
+        triselection(tab[j].jeu,10);
+        tab[j].nb_tete=malloc(sizeof(int));
+        tab[j].bot=1;
+    }
+
+    return tab;
+}
\ No newline at end of file
-- 
GitLab


From 92699e017d409e68dae9ea65694a1fbb2ccadd95 Mon Sep 17 00:00:00 2001
From: root <root@DESKTOP-CNLRA8O.localdomain>
Date: Sat, 17 Jun 2023 17:49:48 +0200
Subject: [PATCH 10/21] =?UTF-8?q?Fonction=20pour=20la=20distribution=20des?=
 =?UTF-8?q?=20cartes,=20=C3=A0=20paufiner?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 distribution.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)
 create mode 100644 distribution.c

diff --git a/distribution.c b/distribution.c
new file mode 100644
index 0000000..a4073cc
--- /dev/null
+++ b/distribution.c
@@ -0,0 +1,13 @@
+void distribution(carte* tabcartes,carte* tab,int nombre);
+
+void distribution(carte* tabcartes,carte* tab,int nombre){
+    int j;
+    srand(time(NULL));
+    for(int i=0;i<nombre;i++){
+        do{            
+            j=rand() % (103 + 1);
+        }while(tabcartes[j].valeur == 404);
+        echanger(tab,tabcartes,i,j);
+    }
+    
+}
\ No newline at end of file
-- 
GitLab


From 6aa982a29b25659c096fc086806d1fd1ab08eb9e Mon Sep 17 00:00:00 2001
From: root <root@DESKTOP-CNLRA8O.localdomain>
Date: Sat, 17 Jun 2023 18:12:25 +0200
Subject: [PATCH 11/21] =?UTF-8?q?fonction=20pour=20=C3=A9changer=20les=20c?=
 =?UTF-8?q?artes=20pour=20le=20tri?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 echanger.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)
 create mode 100644 echanger.c

diff --git a/echanger.c b/echanger.c
new file mode 100644
index 0000000..ea29c2a
--- /dev/null
+++ b/echanger.c
@@ -0,0 +1,13 @@
+void echanger(carte* tab,carte* tab2,int i, int j);
+
+
+void echanger(carte* tab,carte* tab2,int i, int j){
+    int temp;
+    temp=tab[i].valeur;
+    tab[i].valeur=tab2[j].valeur;
+    tab2[j].valeur=temp;
+
+    temp=tab[i].tete;
+    tab[i].tete=tab2[j].tete;
+    tab2[j].tete=temp;
+}
\ No newline at end of file
-- 
GitLab


From df4448b38db63500190582e783ade9c36a2245c5 Mon Sep 17 00:00:00 2001
From: root <root@DESKTOP-CNLRA8O.localdomain>
Date: Sat, 17 Jun 2023 18:12:58 +0200
Subject: [PATCH 12/21] tri selection classico

---
 triselection.c | 14 ++++++++++++++
 1 file changed, 14 insertions(+)
 create mode 100644 triselection.c

diff --git a/triselection.c b/triselection.c
new file mode 100644
index 0000000..235c5bf
--- /dev/null
+++ b/triselection.c
@@ -0,0 +1,14 @@
+void triselection(carte* tab,int taille);
+
+void triselection(carte* tab,int taille){
+    int min;
+    for(int i=0;i<taille;i++){
+        min=i;
+        for(int j=i+1;j<taille;j++){
+            if((tab[j].valeur < tab[min].valeur) && (tab[j].valeur != 404)){
+                min=j;
+            }
+        }
+        echanger(tab,tab,i,min);
+    }
+}
-- 
GitLab


From 331a9b9a2026410eaf33e83f127e62a3e093095e Mon Sep 17 00:00:00 2001
From: root <root@DESKTOP-CNLRA8O.localdomain>
Date: Mon, 19 Jun 2023 11:05:54 +0200
Subject: [PATCH 13/21] =?UTF-8?q?Int=C3=A9gration=20des=20biblioth=C3=A8qu?=
 =?UTF-8?q?e=20dans=20les=20.c=20et=20de=20la=20template=20de=20doc=20?=
 =?UTF-8?q?=C3=A0=20compl=C3=A9ter=20pour=20juste=20avoir=20=C3=A0=20c+v?=
 =?UTF-8?q?=20dans=20le=20fonctions.c?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 affichage.c       | 13 ++++++++-----
 afftabjeujoueur.c | 10 ++++++++++
 creerjoueur.c     | 11 +++++++++++
 distribution.c    | 10 ++++++++++
 echanger.c        | 10 ++++++++++
 triselection.c    | 10 ++++++++++
 6 files changed, 59 insertions(+), 5 deletions(-)

diff --git a/affichage.c b/affichage.c
index e53a716..bdc8a37 100644
--- a/affichage.c
+++ b/affichage.c
@@ -2,6 +2,14 @@
 #include <stdio.h>
 #include <string.h>
 
+/* Auteur : ... */
+/* Date :   ... */
+/* Résumé : ... */
+/* Entrée(s) : ... */
+/* Sortie(s) :  ...  */
+
+void affichage;
+
 void affichage() {
     printf("  ██████╗ ██████╗  ██████╗      ██╗███████╗████████╗    ██████╗  ██╗\n"
            " ██╔══██╗██╔══██╗██╔═══██╗     ██║██╔════╝╚══██╔══╝    ██╔══██╗███║\n"
@@ -17,8 +25,3 @@ void affichage() {
            " ╚██████╔╝        ╚██████╔╝╚██████╔╝██║    ██║     ██║  ██║███████╗██║ ╚████║██████╔╝\n"
            "  ╚═════╝          ╚══▀▀═╝  ╚═════╝ ╚═╝    ╚═╝     ╚═╝  ╚═╝╚══════╝╚═╝  ╚═══╝╚═════╝\n");
 }
-
-int main(){
-    printf("Test de l'affichage avec le ascii convertor \n");
-    affichage();
-}
\ No newline at end of file
diff --git a/afftabjeujoueur.c b/afftabjeujoueur.c
index 03ddafc..a18d2b8 100644
--- a/afftabjeujoueur.c
+++ b/afftabjeujoueur.c
@@ -1,3 +1,13 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+/* Auteur : ... */
+/* Date :   ... */
+/* Résumé : ... */
+/* Entrée(s) : ... */
+/* Sortie(s) :  ...  */
+
 void afftabjeujoueur(joueur* tab,int taille);
 
 void afftabjeujoueur(joueur* tab,int taille){
diff --git a/creerjoueur.c b/creerjoueur.c
index df864f5..f3d1e67 100644
--- a/creerjoueur.c
+++ b/creerjoueur.c
@@ -1,3 +1,14 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+/* Auteur : ... */
+/* Date :   ... */
+/* Résumé : ... */
+/* Entrée(s) : ... */
+/* Sortie(s) :  ...  */
+
+
 joueur* creerjoueurs(carte* tabcartes, int taille,int nbjoueurs,int nbbots);
 
 joueur* creerjoueurs(carte* tabcartes, int taille,int nbjoueurs,int nbbots){
diff --git a/distribution.c b/distribution.c
index a4073cc..a6c7e84 100644
--- a/distribution.c
+++ b/distribution.c
@@ -1,3 +1,13 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+/* Auteur : ... */
+/* Date :   ... */
+/* Résumé : ... */
+/* Entrée(s) : ... */
+/* Sortie(s) :  ...  */
+
 void distribution(carte* tabcartes,carte* tab,int nombre);
 
 void distribution(carte* tabcartes,carte* tab,int nombre){
diff --git a/echanger.c b/echanger.c
index ea29c2a..28fb809 100644
--- a/echanger.c
+++ b/echanger.c
@@ -1,3 +1,13 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+/* Auteur : ... */
+/* Date :   ... */
+/* Résumé : ... */
+/* Entrée(s) : ... */
+/* Sortie(s) :  ...  */
+
 void echanger(carte* tab,carte* tab2,int i, int j);
 
 
diff --git a/triselection.c b/triselection.c
index 235c5bf..0e92828 100644
--- a/triselection.c
+++ b/triselection.c
@@ -1,3 +1,13 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+/* Auteur : ... */
+/* Date :   ... */
+/* Résumé : ... */
+/* Entrée(s) : ... */
+/* Sortie(s) :  ...  */
+
 void triselection(carte* tab,int taille);
 
 void triselection(carte* tab,int taille){
-- 
GitLab


From 8321aa1cb0736e9df4be27e3b403a3f386cfee94 Mon Sep 17 00:00:00 2001
From: root <root@DESKTOP-CNLRA8O.localdomain>
Date: Mon, 19 Jun 2023 18:39:43 +0200
Subject: [PATCH 14/21] triseleciton.c avec la doc

---
 triselection.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/triselection.c b/triselection.c
index 0e92828..daec3b1 100644
--- a/triselection.c
+++ b/triselection.c
@@ -2,11 +2,11 @@
 #include <stdio.h>
 #include <string.h>
 
-/* Auteur : ... */
-/* Date :   ... */
-/* Résumé : ... */
-/* Entrée(s) : ... */
-/* Sortie(s) :  ...  */
+/* Auteur : Antoine Metz */
+/* Date :   18/06 */
+/* Résumé : Effectue un tri par séléction sur le tableau en paramètre */
+/* Entrée(s) : Tableau de carte, et la taille du tableau */
+/* Sortie(s) :  Tri le tableau tab  */
 
 void triselection(carte* tab,int taille);
 
-- 
GitLab


From 44195ca98cd7800336e7ef9d0e1dfeb7b774d603 Mon Sep 17 00:00:00 2001
From: root <root@DESKTOP-CNLRA8O.localdomain>
Date: Mon, 19 Jun 2023 18:40:36 +0200
Subject: [PATCH 15/21] creejoueur.c avec la doc

---
 creerjoueur.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/creerjoueur.c b/creerjoueur.c
index f3d1e67..f85f592 100644
--- a/creerjoueur.c
+++ b/creerjoueur.c
@@ -2,11 +2,11 @@
 #include <stdio.h>
 #include <string.h>
 
-/* Auteur : ... */
-/* Date :   ... */
-/* Résumé : ... */
-/* Entrée(s) : ... */
-/* Sortie(s) :  ...  */
+/* Auteur : Antoine Metz*/
+/* Date :   18/06 */
+/* Résumé : Initialise les différents champ d'une structure joueur */
+/* Entrée(s) : Tableau de cartes, le nombre de bots et de joueurs humain et la taille du tableau. */
+/* Sortie(s) : Renvoi le joueur configuré nommé tab  */
 
 
 joueur* creerjoueurs(carte* tabcartes, int taille,int nbjoueurs,int nbbots);
-- 
GitLab


From c425e0704c50255318e4aacdd356b536c0800ae2 Mon Sep 17 00:00:00 2001
From: root <root@DESKTOP-CNLRA8O.localdomain>
Date: Mon, 19 Jun 2023 18:40:53 +0200
Subject: [PATCH 16/21] distribution.c avec la doc

---
 distribution.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/distribution.c b/distribution.c
index a6c7e84..c451a9e 100644
--- a/distribution.c
+++ b/distribution.c
@@ -2,11 +2,11 @@
 #include <stdio.h>
 #include <string.h>
 
-/* Auteur : ... */
-/* Date :   ... */
-/* Résumé : ... */
-/* Entrée(s) : ... */
-/* Sortie(s) :  ...  */
+/* Auteur : Antoine Metz */
+/* Date :   18/06 */
+/* Résumé : Distribue les cartes de manières aléatoires entre 1 et 1041, pas de doublon possibles */
+/* Entrée(s) : La main du joueur, le tableau de cartes et le nombre de cartes à distribuer */
+/* Sortie(s) : Ajoute des cartes dans la main du joueur */
 
 void distribution(carte* tabcartes,carte* tab,int nombre);
 
-- 
GitLab


From 1d5db11ee56375a247dc2b629dd1da30c11f6d22 Mon Sep 17 00:00:00 2001
From: root <root@DESKTOP-CNLRA8O.localdomain>
Date: Mon, 19 Jun 2023 18:41:10 +0200
Subject: [PATCH 17/21] afftabjeujoueur.c avec la doc

---
 afftabjeujoueur.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/afftabjeujoueur.c b/afftabjeujoueur.c
index a18d2b8..0e0bf4c 100644
--- a/afftabjeujoueur.c
+++ b/afftabjeujoueur.c
@@ -2,11 +2,11 @@
 #include <stdio.h>
 #include <string.h>
 
-/* Auteur : ... */
-/* Date :   ... */
-/* Résumé : ... */
-/* Entrée(s) : ... */
-/* Sortie(s) :  ...  */
+/* Auteur : Antoine Metz */
+/* Date :   18/06 */
+/* Résumé : Affiche le nom du joueur et sa main */
+/* Entrée(s) : Le joueur et le nb de cartes qu'il possède */
+/* Sortie(s) :  La main du joueur  */
 
 void afftabjeujoueur(joueur* tab,int taille);
 
-- 
GitLab


From 4dc356c25eb0e7368104350d9d24fe359c643d77 Mon Sep 17 00:00:00 2001
From: root <root@DESKTOP-CNLRA8O.localdomain>
Date: Mon, 19 Jun 2023 18:41:54 +0200
Subject: [PATCH 18/21] ancien test j'avais un pb avec gitlab

---
 blabla.c | 0
 1 file changed, 0 insertions(+), 0 deletions(-)
 delete mode 100644 blabla.c

diff --git a/blabla.c b/blabla.c
deleted file mode 100644
index e69de29..0000000
-- 
GitLab


From 6f17842325db3255a1d887c6224698da3933c57c Mon Sep 17 00:00:00 2001
From: root <root@DESKTOP-CNLRA8O.localdomain>
Date: Tue, 20 Jun 2023 12:19:36 +0200
Subject: [PATCH 19/21] =?UTF-8?q?Version=20finale=20du=20programme=20en=20?=
 =?UTF-8?q?compilation=20s=C3=A9par=C3=A9e?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 fonctions.c | 678 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 fonctions.h |  53 ++++
 main.c      |  60 +++++
 3 files changed, 791 insertions(+)
 create mode 100644 fonctions.c
 create mode 100644 fonctions.h
 create mode 100644 main.c

diff --git a/fonctions.c b/fonctions.c
new file mode 100644
index 0000000..21744c9
--- /dev/null
+++ b/fonctions.c
@@ -0,0 +1,678 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+#include "fonctions.h"
+
+
+/* Auteur : Antoine Metz */
+/* Date :  18/06 */
+/* Résumé : Affichage et préparation du jeu, fait jouer tous les joueurs sur le tableau de line (comprend tirage des cartes et placement de celles-ci selon coup spécial ou non) */
+/* Entrée(s) : Tableau de joueurs, tableau de ligne et le tableau tabcartes qui contient toutes les cartes du jeu */
+/* Sortie(s) :  Effectuer un tour de jeu du 6 qui Prend  */
+void jouer(joueur* tabjoueurs,ligne* lignes, int nb,carte* tabcartes){
+    int k;
+    k=0;
+    printf("\n|\n|\n");
+    afftabjeu(lignes);
+    printf("|\n|\n \n");
+    for(int i=0;i<10;i++){
+        selectioncarte(tabjoueurs,nb,k);
+        k=(k%10)+1;
+        tabjoueurs=ordredepassage(tabjoueurs,nb);
+        for(int j=0;j<nb;j++){
+            printf("tour de: %s ayant selectionné la carte %d \n",tabjoueurs[j].nom,tabjoueurs[j].jeu[tabjoueurs[j].id_carte-1].valeur);
+            placercarte(tabjoueurs[j],lignes,tabcartes);
+            triselection(tabjoueurs[j].jeu,10);
+            printf("\n|\n|\n");
+            afftabjeu(lignes);
+            printf("|\n|\n \n");
+        }
+    }
+    vide(tabcartes,lignes);
+    for(int k=0;k<nb;k++){
+        distribution(tabcartes,tabjoueurs[k].jeu,10);
+    }
+}
+
+/* Auteur : Louise MAROLLEAU */
+/* Date :  18/06/23 */
+/* Résumé : fonction qui vérifie si un joueur à dépasser le seuil de 66 tetes */
+/* Entrée(s) : prend en entrée le tableau de joueurs ainsi que sa taille en entier*/
+/* Sortie(s) : retourne 1 si un joueur à dépasser 66, retourne 0 sinon  */
+int veriftete(joueur* tabjoueurs,int nb){
+    for(int i=0;i<nb;i++){
+        if(*tabjoueurs[i].nb_tete>66){
+            return 1;
+        }
+    }
+    return 0;
+}
+
+
+
+
+
+/* Auteur : Berard Thierry */
+/* Date :  18/06/23 */
+/* Résumé :  Fonction qui demande le nombre de joueurs humain et retourne ce nombre */
+/* Entrée(s) : Prend aucun paramètre */
+/* Sortie(s) :  Retourne un entier, le nombre de joueurs humains */
+int defnbjoueurs(){
+    int nbhumains;
+    printf("Combien de joueurs êtes-vous ? \n");
+    scanf("%d",&nbhumains);
+    return(nbhumains);
+}
+
+
+
+
+
+
+
+/* Auteur : Berard Thierry */
+/* Date :  18/06/23 */
+/* Résumé :  Fonction qui demande le nombre de bots et retourne ce nombre */
+/* Entrée(s) : Prend aucun paramètre */
+/* Sortie(s) :  Retourne un entier, le nombre de bots */
+int defnbbots(){
+    printf("Souhaitez vous intégrer des bots à la partie , (y/n) ? \n");
+    char boolbot;
+    scanf(" %c",&boolbot);
+    if (boolbot=='y'){
+        int nbbots;
+        printf("Combien de bots voulez-vous ajouter ? \n");
+        scanf("%d",&nbbots);
+        return(nbbots);
+    }
+    else if (boolbot=='n'){
+        printf("0 bots seront intégrés à la partie. \n");
+        return(0);
+    }
+    printf("Erreur de saisie, 0 bots seront intégrées à la partie \n");
+    return(0);
+}
+
+
+
+
+/* Auteur : Berard Thierry */
+/* Date :  18/06/23 */
+/* Résumé :  Fonction qui alloue de l'espace mémoire et créer le tableau de cartes dans lequel les joueurs piocherons leurs cartes selon le mode de jeu, si le mode de jeu est Normal ou Draft alors le jeu sera composer de 104 cartes sinon il sera composé de ((nombre total de joueurs * 10)+4) cartes */
+/* Entrée(s) : Prend en paramètre deux entier, le nombre de joueurs total et la version du jeu  */
+/* Sortie(s) :  Retourne le tableau de cartes tabcartes */
+carte* allouertabcartes(int nb,int versiondujeu){
+    carte* tab;
+    tab=malloc(104*sizeof(carte));
+    for (int i=0;i<104;i++){
+        tab[i].valeur=i+1;
+        tab[i].tete=teteboeuf(tab[i].valeur);   
+    }
+    if(versiondujeu==2){
+        for(int k=((nb*10) + 4);k<104;k++){
+            tab[k].valeur=404;
+            tab[k].tete=404;
+        }
+    }
+    return tab;
+}
+
+
+
+
+
+/* Auteur : Berard Thierry */
+/* Date :  18/06/23 */
+/* Résumé :  Procédure qui affiche un tableau de cartes en fonction de sa taille */
+/* Entrée(s) : Prend en paramètre un tableau de cartes et sa taille en entier */
+/* Sortie(s) :  Affichage */
+void afftabcartes(carte* tab,int taille){
+    for(int i=0;i<taille;i++){
+        if(tab[i].valeur!=404){
+            printf("%d,%d|",tab[i].valeur, tab[i].tete);
+        }
+        else{
+            printf(" ");
+        }
+    }
+    printf("\n");
+}
+
+
+
+
+
+/* Auteur : Berard Thierry */
+/* Date :  18/06/23 */
+/* Résumé :  Fonction qui initialise un tableau de cartes en fonction de sa taille en allouant de l'espace mémoire et en mettant des cartes neutres, utilisé principalement pour le jeu des joueurs et les lignes du plateau  */
+/* Entrée(s) : Prend en paramètre la taille du tableau de carte qu'il faut initialiser en entier */
+/* Sortie(s) :  Retourne un tableau de cartes initialiser */
+carte* inittabcarte(int taille){
+    carte* tab;
+    tab=malloc(taille*sizeof(carte));
+    for (int i=0;i<taille;i++){
+        tab[i].valeur=404;
+        tab[i].tete=404;
+    }
+    return tab;
+}
+
+
+
+/* Auteur : Antoine Metz */
+/* Date :   18/06 */
+/* Résumé : Echange les cartes et leur champs de place */
+/* Entrée(s) :  */
+/* Sortie(s) :  Changement de position  */
+void echanger(carte* tab,carte* tab2,int i, int j){
+    int temp;
+    temp=tab[i].valeur;
+    tab[i].valeur=tab2[j].valeur;
+    tab2[j].valeur=temp;
+
+    temp=tab[i].tete;
+    tab[i].tete=tab2[j].tete;
+    tab2[j].tete=temp;
+}
+
+
+
+
+/* Auteur : Antoine Metz */
+/* Date :   18/06 */
+/* Résumé : Distribue les cartes de manières aléatoires entre 1 et 104, pas de doublon possibles */
+/* Entrée(s) : La main du joueur, le tableau de cartes et le nombre de cartes à distribuer */
+/* Sortie(s) : Ajoute des cartes dans la main du joueur */
+void distribution(carte* tabcartes,carte* tab,int nombre){
+    int j;
+    srand(time(NULL));
+    for(int i=0;i<nombre;i++){
+        do{            
+            j=rand() % (103 + 1);
+        }while(tabcartes[j].valeur == 404);
+        echanger(tab,tabcartes,i,j);
+    }    
+}
+
+
+
+/**
+ * \fn emptyBuffer()
+ * \author Peio Loubière <peio.loubiere@cyu.fr>
+ * \date  : Thu Nov 19 17:07:41 2020
+ *
+ * \version 0.1
+ * \brief vide le buffer après une saisie
+ */
+void emptyBuffer(){
+  char c;
+  while (((c = getchar()) != '\n') && (c != EOF));
+}
+
+
+
+
+/* Auteur : Thieyrry Berrard */
+/* Date :   18/06 */
+/* Résumé : Distribution des cartes avec séléction, utilisé pour le mode de jeu 3 */
+/* Entrée(s) : Prend en paramètre le tableau tabcartes qui comprend toutes les cartes du jeu, le tableau de joueurs et le nombre de joueurs total */
+/* Sortie(s) : distribue les cartes aux choix pour chaque joueur  */
+void distribution2(carte* tabcartes,joueur* tabjoueurs,int nombre){
+    int j;
+    for(int i=0;i<10;i++){
+        for(int k=0;k<nombre;k++){
+            do{
+                if(tabjoueurs[k].bot==0){
+                    printf("%s donnez la valeur de la carte que vous voulez : ",tabjoueurs[k].nom);            
+                    scanf("%d",&j);
+                    emptyBuffer();
+                }
+                else{
+                    j=rand() % (103 + 1);   
+                }
+            }while(tabcartes[j-1].valeur == 404);
+            printf("%s a sélectionner la carte : %d \n",tabjoueurs[k].nom,tabcartes[j-1].valeur);
+            echanger(tabjoueurs[k].jeu,tabcartes,i,j-1);
+        }
+    }    
+}
+
+
+
+
+
+
+
+
+/* Auteur : Antoine Metz */
+/* Date :   18/06 */
+/* Résumé : Effectue un tri par séléction sur le tableau en paramètre */
+/* Entrée(s) : Tableau de carte, et la taille du tableau */
+/* Sortie(s) :  Tri le tableau tab du plus petit au plus grand  */
+void triselection(carte* tab,int taille){
+    int min;
+    for(int i=0;i<taille;i++){
+        min=i;
+        for(int j=i+1;j<taille;j++){
+            if((tab[j].valeur < tab[min].valeur) && (tab[j].valeur != 404)){
+                min=j;
+            }
+        }
+        echanger(tab,tab,i,min);
+    }
+}
+
+
+/* Auteur : Antoine Metz*/
+/* Date :   18/06 */
+/* Résumé : Initialise les différents champ d'une structure joueur */
+/* Entrée(s) : Tableau de cartes, le nombre de bots et de joueurs humain et la version du jeu */
+/* Sortie(s) : Initialisation du nom et carte des joueurs  */
+joueur* creerjoueurs(carte* tabcartes, int taille,int nbjoueurs,int nbbots,int versiondujeu){
+    joueur* tab;
+    tab=malloc(taille*sizeof(joueur));
+    if(versiondujeu==3){
+        for(int q=0;q<nbjoueurs;q++){
+            printf("entrez le nom du joueur: ");
+            scanf("%s",tab[q].nom);
+            tab[q].jeu=inittabcarte(10);
+            tab[q].nb_tete=malloc(sizeof(int));
+            tab[q].bot=0;
+        } 
+        for(int j=nbjoueurs; j<nbjoueurs+nbbots ; j++){ 
+            printf("Création de bot %d : \n", j);
+            sprintf(tab[j].nom,"Bot[%d]",j-nbjoueurs+1);
+            tab[j].jeu=inittabcarte(10);
+            tab[j].nb_tete=malloc(sizeof(int));
+            tab[j].bot=1;
+        }
+        distribution2(tabcartes,tab,nbjoueurs+nbbots);
+        for(int h=0;h<nbjoueurs+nbbots;h++){
+            triselection(tab[h].jeu,10);
+        } 
+        
+    }
+    else{
+        for(int i=0;i<nbjoueurs;i++){
+            printf("entrez le nom du joueur: ");
+            scanf("%s",tab[i].nom);
+            tab[i].jeu=inittabcarte(10);
+            distribution(tabcartes,tab[i].jeu,10);
+            triselection(tab[i].jeu,10);
+            tab[i].nb_tete=malloc(sizeof(int));
+            tab[i].bot=0;
+        }  
+        for(int j=nbjoueurs; j<nbjoueurs+nbbots ; j++){ 
+            printf("Création de bot %d : \n", j);
+            sprintf(tab[j].nom,"Bot[%d]",j-nbjoueurs+1);
+            tab[j].jeu=inittabcarte(10);
+            distribution(tabcartes,tab[j].jeu,10);
+            triselection(tab[j].jeu,10);
+            tab[j].nb_tete=malloc(sizeof(int));
+            tab[j].bot=1;
+        }
+    }
+    
+    
+
+    return tab;
+}
+
+/* Auteur : Antoine Metz */
+/* Date :   18/06 */
+/* Résumé : Affiche le titre du projet en ascii */
+/* Entrée(s) : X */
+/* Sortie(s) :  Affichage  */
+void affichage() {
+    printf("  ██████╗ ██████╗  ██████╗      ██╗███████╗████████╗    ██████╗  ██╗\n"
+           " ██╔══██╗██╔══██╗██╔═══██╗     ██║██╔════╝╚══██╔══╝    ██╔══██╗███║\n"
+           " ██████╔╝██████╔╝██║   ██║     ██║█████╗     ██║       ██████╔╝╚██║\n"
+           " ██╔═══╝ ██╔══██╗██║   ██║██   ██║██╔══╝     ██║       ██╔═══╝  ██║\n"
+           " ██║     ██║  ██║╚██████╔╝╚█████╔╝███████╗   ██║       ██║      ██║\n"
+           " ╚═╝     ╚═╝  ╚═╝ ╚═════╝  ╚════╝ ╚══════╝   ╚═╝       ╚═╝      ╚═╝\n"
+           "                                                              \n"
+           "  ██████╗          ██████╗ ██╗   ██╗██╗    ██████╗ ██████╗ ███████╗███╗   ██╗██████╗\n"
+           " ██╔════╝         ██╔═══██╗██║   ██║██║    ██╔══██╗██╔══██╗██╔════╝████╗  ██║██╔══██╗\n"
+           " ███████╗         ██║   ██║██║   ██║██║    ██████╔╝██████╔╝█████╗  ██╔██╗ ██║██║  ██║\n"
+           " ██╔═══██╗        ██║▄▄ ██║██║   ██║██║    ██╔═══╝ ██╔══██╗██╔══╝  ██║╚██╗██║██║  ██║\n"
+           " ╚██████╔╝        ╚██████╔╝╚██████╔╝██║    ██║     ██║  ██║███████╗██║ ╚████║██████╔╝\n"
+           "  ╚═════╝          ╚══▀▀═╝  ╚═════╝ ╚═╝    ╚═╝     ╚═╝  ╚═╝╚══════╝╚═╝  ╚═══╝╚═════╝\n");
+}
+
+
+
+
+/* Auteur : Antoine Metz */
+/* Date :   18/06 */
+/* Résumé : Affiche le nom du joueur et sa main */
+/* Entrée(s) : Le joueur et le nb de cartes qu'il possède */
+/* Sortie(s) :  La main du joueur  */
+
+void afftabjeujoueur(joueur* tab,int taille){
+    for(int i=0;i<taille;i++){
+        printf("%s : ",tab[i].nom);
+        afftabcartes(tab[i].jeu,10);
+    }
+}
+
+
+
+
+
+/* Auteur : Nathan Poireault */
+/* Date :  18/06/23  */
+/* Résumé : Procédure qui permet d'afficher le plateau de jeu */
+/* Entrée(s) : Prend en entrée le plateau de jeu */
+/* Sortie(s) : Affiche le plateau de jeu */
+void afftabjeu(ligne*l){
+    for(int i=0;i<4;i++){
+        afftabcartes(l[i].cartes,l[i].nb_carte);
+    }
+}
+
+
+
+
+/* Auteur : Nathan Poireault */
+/* Date :  18/06/23  */
+/* Résumé : Procédure qui permet à chaque joueur de choisir la carte qu'il va poser dans sa main */
+/* Entrée(s) : Prend en entrée le tableau de joueurs, le nombre de joueurs et le nombre de tours depuis le début de la manche */
+/* Sortie(s) : Affiche la carte choisi par le joueur */
+void selectioncarte(joueur* tab,int nb,int k){
+    for(int i=0;i<nb;i++){
+        if (tab[i].bot==0){
+        printf("%s : ",tab[i].nom);
+        afftabcartes(tab[i].jeu,10);
+        do{
+            printf("%s choisissez une carte de votre main entre 1 et %d  :",tab[i].nom,10-k);
+            scanf("%d",&tab[i].id_carte);
+            printf("\n");
+        }while((tab[i].jeu[tab[i].id_carte-1].valeur == 404)|| tab[i].id_carte>10 || tab[i].id_carte<1);
+        printf("le joueur %s a selectionné la carte: %d\n\n",tab[i].nom,tab[i].jeu[tab[i].id_carte-1].valeur);
+        }
+        else if (tab[i].bot==1){
+            printf("%s : ",tab[i].nom);
+            afftabcartes(tab[i].jeu,10);
+            do{
+            tab[i].id_carte=rand()%10+1;
+            }while((tab[i].jeu[tab[i].id_carte-1].valeur == 404)|| tab[i].id_carte>10 || tab[i].id_carte<1);
+            printf("Le %s choisit la carte %d dans sa main \n",tab[i].nom,tab[i].jeu[tab[i].id_carte-1].valeur);
+        }
+        
+    }
+}
+
+
+
+/* Auteur : Nathan Poireault */
+/* Date :  18/06/23  */
+/* Résumé : Procédure qui permet de placer les cartes choisi par les joueurs sur le tableau de jeu */
+/* Entrée(s) : Prend en entrée un joueur, le plateau de jeu et le tableau contenant toutes les cartes du jeu  */
+/* Sortie(s) : Modifie le tableau de jeu */
+void placercarte(joueur j,ligne* l,carte* tabcartes){
+    int x,x1,x2,x3,x4,X;
+    x=j.jeu[j.id_carte-1].valeur;
+
+    x1=l[0].cartes[l[0].nb_carte-1].valeur;
+    x2=l[1].cartes[l[1].nb_carte-1].valeur;
+    x3=l[2].cartes[l[2].nb_carte-1].valeur;
+    x4=l[3].cartes[l[3].nb_carte-1].valeur;
+
+
+    if((x-x1 < 0)&&(x-x2 < 0)&&(x-x3 < 0)&&(x-x4 < 0)){
+        coupspecial(j,l,tabcartes);
+    }
+    else{
+        X=min(min(x-x1,x-x2),min(x-x3,x-x4));
+        if(X==x-x1){
+            if(l[0].nb_carte==5){
+                videligne(tabcartes,j,l,1);
+                echanger(l[0].cartes,j.jeu,l[0].nb_carte,j.id_carte-1);
+                l[0].nb_carte+=1;
+            }
+            else{
+                echanger(j.jeu,l[0].cartes,j.id_carte-1,l[0].nb_carte);
+                l[0].nb_carte+=1;
+            }
+        }
+        if(X==x-x2){
+            if(l[1].nb_carte==5){
+                videligne(tabcartes,j,l,2);
+                echanger(l[1].cartes,j.jeu,l[1].nb_carte,j.id_carte-1);
+                l[1].nb_carte+=1;
+            }
+            else{
+                echanger(j.jeu,l[1].cartes,j.id_carte-1,l[1].nb_carte);
+                l[1].nb_carte+=1;
+            }
+        }
+        if(X==x-x3){
+            if(l[2].nb_carte==5){
+                videligne(tabcartes,j,l,3);
+                echanger(l[2].cartes,j.jeu,l[2].nb_carte,j.id_carte-1);
+                l[2].nb_carte+=1;
+            }
+            else{
+                echanger(j.jeu,l[2].cartes,j.id_carte-1,l[2].nb_carte);
+                l[2].nb_carte+=1;
+            }
+        }
+        if(X==x-x4){
+            if(l[3].nb_carte==5){
+                videligne(tabcartes,j,l,4);
+                echanger(l[3].cartes,j.jeu,l[3].nb_carte,j.id_carte-1);
+                l[3].nb_carte+=1;
+            }
+            else{
+                echanger(j.jeu,l[3].cartes,j.id_carte-1,l[3].nb_carte);
+                l[3].nb_carte+=1;
+            }
+        }
+        
+    }
+}
+
+
+
+
+
+
+/* Auteur : Nathan Poireault */
+/* Date :  18/06/23  */
+/* Résumé : Procédure qui permet au joueur de récupérer la ligne souhaitée quand se carte ne peut être directement placée sur le plateau */
+/* Entrée(s) : Prend en entrée un joueur, le plateau de jeu et le tableau contenant toutes les cartes du jeu */
+/* Sortie(s) : Modifie le tableau de jeu en ramassant une ligne et en la remplaceant par la carte du joueur  */
+void coupspecial(joueur j,ligne* l,carte* tabcartes){
+    int nb;
+    if (j.bot==0){
+        do{
+            printf("c'est le coup spécial, choisissez la ligne que vous voulez récupérer entre 1 et 4 \n");
+            scanf("%d",&nb);
+        }while ((nb<1) || (nb>4));
+        videligne(tabcartes,j,l,nb);
+        echanger(l[nb-1].cartes,j.jeu,l[nb-1].nb_carte,j.id_carte-1);
+        l[nb-1].nb_carte+=1;
+    }
+    else if (j.bot==1){
+        printf("Le %s a déclenché le coup spécial \n",j.nom);
+        nb=rand()%4 +1;
+        printf("Le %s a récupéré la ligne numéro %d \n",j.nom,nb);
+        videligne(tabcartes,j,l,nb);
+        echanger(l[nb-1].cartes,j.jeu,l[nb-1].nb_carte,j.id_carte-1);
+        l[nb-1].nb_carte+=1;
+    }
+}
+
+
+/* Auteur : Nathan Poireault */
+/* Date :  18/06/23  */
+/* Résumé : Procédure qui permet de vider une ligne et de changer la carte avec celle du joueur */
+/* Entrée(s) : Prend en entrée un joueur, le plateau de jeu et le numéro de la ligne de 1 à 4 */
+/* Sortie(s) : Change le tableau de jeu et le nombre de tête que le joueur a au total  */
+void videligne(carte* tabcartes,joueur j,ligne* l,int nbligne){
+    for(int i=0;i<l[nbligne-1].nb_carte;i++){
+        *j.nb_tete+=l[nbligne-1].cartes[i].tete;
+        echanger(tabcartes,l[nbligne-1].cartes,l[nbligne-1].cartes[i].valeur-1,i);
+    }
+    l[nbligne-1].nb_carte=0;
+    printf("le joueur : %s a au total %d tete \n",j.nom,*j.nb_tete);
+}
+
+
+
+
+
+
+/* Auteur : Louise MAROLLEAU */
+/* Date :  18/06/23 */
+/* Résumé : procédure qui remet à 0 chaque ligne après chaque manche elles seront alors remplis de carte neutre (404) */
+/* Entrée(s) : prend en entrée le tableau tabcartes qui possède les cartes du jeu et les lignes du plateau */
+/* Sortie(s) :  vide la ligne dans le plateau de jeu */
+void vide(carte* tabcartes,ligne* l){
+    for(int j=0;j<4;j++){
+        for(int i=0;i<l[j].nb_carte;i++){
+            echanger(tabcartes,l[j].cartes,l[j].cartes[i].valeur-1,i);
+        }
+        l[j].nb_carte=0;
+    }
+}
+
+
+
+
+
+/* Auteur : Louise MAROLLEAU */
+/* Date :  18/06/23 */
+/* Résumé : fonction qui vérifie quelle est la carte la plus petite entre les deux */
+/* Entrée(s) : prend en entrée les deux valeurs des cartes en entier */
+/* Sortie(s) :  retourne un entier : la valeur de la carte la plus petite  */
+int min(int a, int b){
+    if(0<a && 0<b){
+        if(a<b){
+            return a;
+        }
+        else{
+            return b;
+        }
+    }
+    else{
+        if(a<0){
+            return b;
+        }
+        else{
+            return a;
+        }
+    }
+}
+
+
+
+/* Auteur : Louise MAROLLEAU */
+/* Date :  18/06/23 */
+/* Résumé : fonction d'allocation de mémoire pour les lignes du plateau, elle remplit les lignes de carte neutre (404) */
+/* Entrée(s) : prend en entrée le tableau tabcartes qui comprend toutes les cartes du jeu */
+/* Sortie(s) :   retourne les lignes du plateau initialisées */
+ligne* initligne(carte* tabcartes){
+    ligne* l;
+    l=malloc(4*sizeof(ligne));
+    for(int i=0;i<4;i++){
+        l[i].cartes=inittabcarte(6);
+        distribution(tabcartes,l[i].cartes,1);
+        l[i].nb_carte=1;
+    }
+    return l;
+}
+
+
+
+
+
+/* Auteur : Louise MAROLLEAU */
+/* Date :  18/06/23 */
+/* Résumé : fonctions qui détermine l'ordre de passage de chaque joueur selon la valeur de sa carte*/
+/* Entrée(s) : prend en entrée le tableau de joueurs ainsi que sa taille en entier */
+/* Sortie(s) : retourne le tableau de joueur trié dans l'ordre croissant dans lequel ils doivent jouer */
+joueur* ordredepassage(joueur* tabjoueurs,int nb){
+    carte* liste;
+    joueur* tab;
+    tab=malloc(nb*sizeof(joueur));
+    liste=inittabcarte(nb);
+    for(int k=0; k<nb;k++){
+        liste[k].valeur=tabjoueurs[k].jeu[tabjoueurs[k].id_carte-1].valeur;
+        liste[k].tete=tabjoueurs[k].jeu[tabjoueurs[k].id_carte-1].tete;
+    }
+    triselection(liste,nb);
+    for(int i=0; i<nb;i++){
+        for(int j=0;j<nb;j++){
+            if(liste[i].valeur==tabjoueurs[j].jeu[tabjoueurs[j].id_carte-1].valeur){
+                tab[i]=tabjoueurs[j];
+            }
+        }
+    }
+    free(liste);
+    return tab;
+    
+}
+
+
+/* Auteur : Berard Thierry */
+/* Date :  18/06/23 */
+/* Résumé :  Procédure qui tri le tableau de joueurs dans l'ordre croissant en fonction du nombre de tete  */
+/* Entrée(s) : Prend en paramètre le tableau de joueurs et le nombre de joueurs total (comprend humain et bots) en entier*/
+/* Sortie(s) :  Procédure donc pas de sortie mais tri le tableau de joueurs */
+void classement(joueur* tabjoueurs, int nb){
+    joueur temp;
+    for(int i=0;i<nb-1;i++){
+        for(int k=0;k<nb-i-1;k++){
+            if(*tabjoueurs[k].nb_tete > *tabjoueurs[k+1].nb_tete){
+                temp=tabjoueurs[k];
+                tabjoueurs[k]=tabjoueurs[k+1];
+                tabjoueurs[k+1]=temp;
+            }
+        }
+    }
+}
+
+
+
+
+
+/* Auteur : Berard Thierry */
+/* Date :  18/06/23 */
+/* Résumé :  Procédure qui affiche dans l'ordre croissant (grace a la procédure classement()) le tableau de joueurs pour faire le classement*/
+/* Entrée(s) :  Prend en paramètre le tableau de joueurs et le nombre de joueurs total (comprend humain et bots) en entier */
+/* Sortie(s) :  Affichage */
+void affclassement(joueur* tabjoueurs,int nb){
+    classement(tabjoueurs,nb);
+    printf("Le jeu est terminé\n\n\n");
+    printf("Voici le classement :\n");
+    for(int i=0;i<nb;i++){
+        printf("%d-%s ayant - %d têtes\n",i+1,tabjoueurs[i].nom,*tabjoueurs[i].nb_tete);
+    }
+}
+
+
+
+/* Auteur : Nathan Poireault */
+/* Date :  18/06/23 */
+/* Résumé : Fonction qui permet de définir les têtes de boeufs selon la valeur de la carte */
+/* Entrée(s) : Prend en entrée la valeur de la carte */
+/* Sortie(s) : Renvoie le nombre de têtes de boeufs */
+int teteboeuf(int valeur){
+	int tete;
+	tete=1;
+	if (valeur%10==0){
+		tete=tete+2;
+	}
+	if (valeur%10==5){
+		tete=tete+1;
+	}
+	if (valeur%11==0){
+		tete=tete+4;
+	}
+	if (valeur==55){
+		tete=7;
+	}
+	return tete;
+}
\ No newline at end of file
diff --git a/fonctions.h b/fonctions.h
new file mode 100644
index 0000000..cea00f0
--- /dev/null
+++ b/fonctions.h
@@ -0,0 +1,53 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+
+typedef struct carte{
+    int valeur;
+    int tete;
+}carte;
+
+typedef struct ligne{
+    carte* cartes;
+    int nb_carte;
+}ligne;
+
+typedef struct joueur{
+    char nom[50];
+    carte* jeu;
+    int id_carte;
+    int* nb_tete;
+    int bot;
+}joueur;
+
+
+
+
+void affichage();
+carte* allouertabcartes(int nb,int versiondujeu);
+int defnbjoueurs();
+int defnbbots();
+void afftabcartes(carte* tab,int taille);
+carte* inittabcarte(int taille);
+void echanger(carte* tab,carte* tab2,int i, int j);
+void distribution(carte* tabcartes,carte* tab,int nombre);
+void distribution2(carte* tabcartes,joueur* tabjoueurs,int nombre);
+void triselection(carte* tab,int taille);
+joueur* creerjoueurs(carte* tabcartes, int taille,int nbjoueurs,int nbbots,int versiondujeu);
+void afftabjeujoueur(joueur* tab,int taille);
+void afftabjeu(ligne*l);
+void selectioncarte(joueur* tab,int nb,int k);
+void placercarte(joueur j,ligne* l,carte* tabcartes);
+void coupspecial(joueur j,ligne* l,carte* tabcartes);
+void videligne(carte* tabcartes,joueur j,ligne* l,int nbligne);
+void vide(carte* tabcartes,ligne* l);
+int min(int a, int b);
+ligne* initligne(carte* tabcartes);
+joueur* ordredepassage(joueur* tabjoueurs,int nb);
+void jouer(joueur* tabjoueurs,ligne* lignes, int nb,carte* tabcartes);
+int veriftete(joueur* tabjoueurs,int nb);
+void exit(int returnCode);
+void classement(joueur* tabjoueurs, int nb);
+void affclassement(joueur* tabjoueurs,int nb);
+int teteboeuf(int valeur);
\ No newline at end of file
diff --git a/main.c b/main.c
new file mode 100644
index 0000000..c5b724d
--- /dev/null
+++ b/main.c
@@ -0,0 +1,60 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+#include "fonctions.h"
+
+
+
+int main(){
+//Affichage du titre
+    affichage();
+//initialisation
+    int versiondujeu;
+    int nb,k;
+    int nbjoueurs;  
+    int nbbots;
+
+    joueur* tabjoueurs;
+    carte* tabcartes;
+    ligne* lignes;
+
+    srand(time(NULL));
+
+//code d'initialisation du jeu
+    printf("A quelle version souhaitez-vous jouer ? 1,2,3 : (1: Normal, 2: Nombre définie, 3: Draft) \n");
+    scanf("%d",&versiondujeu);
+    
+    nbjoueurs=defnbjoueurs();
+    nbbots=defnbbots();
+    nb=nbjoueurs+nbbots;
+
+    if(nb>10){
+        printf("Trop de joueurs dans la partie veuillez en selectionner au maximum 10\n");
+        exit(EXIT_SUCCESS);
+    }
+    else if(nb<2){
+        printf("Pas assez de joueurs dans la partie veuillez en selectionner plus\n");
+        exit(EXIT_SUCCESS);
+    }
+    
+    
+    tabcartes=allouertabcartes(nb,versiondujeu);
+    afftabcartes(tabcartes,104);
+
+    tabjoueurs=creerjoueurs(tabcartes,nb,nbjoueurs,nbbots,versiondujeu);
+    printf("Voici vos cartes : \n");
+    afftabjeujoueur(tabjoueurs,nb);
+    k=0;
+
+
+ //corps principal, là où le jeu se lance
+    do{
+        lignes=initligne(tabcartes);
+        printf("\nManche %d : \n",k+1);
+        jouer(tabjoueurs,lignes,nb,tabcartes);
+        k=k + 1;        
+    }while(veriftete(tabjoueurs,nb)!=1);
+    affclassement(tabjoueurs,nb);
+    return 0;
+}
\ No newline at end of file
-- 
GitLab


From 81ee8d163c644656157822891094d13f2ba26694 Mon Sep 17 00:00:00 2001
From: root <root@DESKTOP-CNLRA8O.localdomain>
Date: Tue, 20 Jun 2023 14:07:25 +0200
Subject: [PATCH 20/21] =?UTF-8?q?Supression=20des=20fichiers=20inutiles=20?=
 =?UTF-8?q?=C3=A0=20la=20branche=20=C3=A9buache=20pour=20merge=20vers=20le?=
 =?UTF-8?q?=20main?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 affichage.c       | 27 ---------------------------
 afftabjeujoueur.c | 18 ------------------
 creerjoueur.c     | 37 -------------------------------------
 distribution.c    | 23 -----------------------
 echanger.c        | 23 -----------------------
 templatededoc.txt |  5 -----
 triselection.c    | 24 ------------------------
 7 files changed, 157 deletions(-)
 delete mode 100644 affichage.c
 delete mode 100644 afftabjeujoueur.c
 delete mode 100644 creerjoueur.c
 delete mode 100644 distribution.c
 delete mode 100644 echanger.c
 delete mode 100644 templatededoc.txt
 delete mode 100644 triselection.c

diff --git a/affichage.c b/affichage.c
deleted file mode 100644
index bdc8a37..0000000
--- a/affichage.c
+++ /dev/null
@@ -1,27 +0,0 @@
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-
-/* Auteur : ... */
-/* Date :   ... */
-/* Résumé : ... */
-/* Entrée(s) : ... */
-/* Sortie(s) :  ...  */
-
-void affichage;
-
-void affichage() {
-    printf("  ██████╗ ██████╗  ██████╗      ██╗███████╗████████╗    ██████╗  ██╗\n"
-           " ██╔══██╗██╔══██╗██╔═══██╗     ██║██╔════╝╚══██╔══╝    ██╔══██╗███║\n"
-           " ██████╔╝██████╔╝██║   ██║     ██║█████╗     ██║       ██████╔╝╚██║\n"
-           " ██╔═══╝ ██╔══██╗██║   ██║██   ██║██╔══╝     ██║       ██╔═══╝  ██║\n"
-           " ██║     ██║  ██║╚██████╔╝╚█████╔╝███████╗   ██║       ██║      ██║\n"
-           " ╚═╝     ╚═╝  ╚═╝ ╚═════╝  ╚════╝ ╚══════╝   ╚═╝       ╚═╝      ╚═╝\n"
-           "                                                              \n"
-           "  ██████╗          ██████╗ ██╗   ██╗██╗    ██████╗ ██████╗ ███████╗███╗   ██╗██████╗\n"
-           " ██╔════╝         ██╔═══██╗██║   ██║██║    ██╔══██╗██╔══██╗██╔════╝████╗  ██║██╔══██╗\n"
-           " ███████╗         ██║   ██║██║   ██║██║    ██████╔╝██████╔╝█████╗  ██╔██╗ ██║██║  ██║\n"
-           " ██╔═══██╗        ██║▄▄ ██║██║   ██║██║    ██╔═══╝ ██╔══██╗██╔══╝  ██║╚██╗██║██║  ██║\n"
-           " ╚██████╔╝        ╚██████╔╝╚██████╔╝██║    ██║     ██║  ██║███████╗██║ ╚████║██████╔╝\n"
-           "  ╚═════╝          ╚══▀▀═╝  ╚═════╝ ╚═╝    ╚═╝     ╚═╝  ╚═╝╚══════╝╚═╝  ╚═══╝╚═════╝\n");
-}
diff --git a/afftabjeujoueur.c b/afftabjeujoueur.c
deleted file mode 100644
index 0e0bf4c..0000000
--- a/afftabjeujoueur.c
+++ /dev/null
@@ -1,18 +0,0 @@
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-
-/* Auteur : Antoine Metz */
-/* Date :   18/06 */
-/* Résumé : Affiche le nom du joueur et sa main */
-/* Entrée(s) : Le joueur et le nb de cartes qu'il possède */
-/* Sortie(s) :  La main du joueur  */
-
-void afftabjeujoueur(joueur* tab,int taille);
-
-void afftabjeujoueur(joueur* tab,int taille){
-    for(int i=0;i<taille;i++){
-        printf("%s : ",tab[i].nom);
-        afftabcartes(tab[i].jeu,10);
-    }
-}
\ No newline at end of file
diff --git a/creerjoueur.c b/creerjoueur.c
deleted file mode 100644
index f85f592..0000000
--- a/creerjoueur.c
+++ /dev/null
@@ -1,37 +0,0 @@
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-
-/* Auteur : Antoine Metz*/
-/* Date :   18/06 */
-/* Résumé : Initialise les différents champ d'une structure joueur */
-/* Entrée(s) : Tableau de cartes, le nombre de bots et de joueurs humain et la taille du tableau. */
-/* Sortie(s) : Renvoi le joueur configuré nommé tab  */
-
-
-joueur* creerjoueurs(carte* tabcartes, int taille,int nbjoueurs,int nbbots);
-
-joueur* creerjoueurs(carte* tabcartes, int taille,int nbjoueurs,int nbbots){
-    joueur* tab;
-    tab=malloc(taille*sizeof(joueur));
-    for(int i=0;i<nbjoueurs;i++){
-        printf("entrez le nom du joueur: ");
-        scanf("%s",tab[i].nom);
-        tab[i].jeu=inittabcarte(10);
-        distribution(tabcartes,tab[i].jeu,10);
-        triselection(tab[i].jeu,10);
-        tab[i].nb_tete=malloc(sizeof(int));
-        tab[i].bot=0;
-    }
-    for(int j=nbjoueurs; j<nbjoueurs+nbbots ; j++){ 
-        printf("Création de bot %d : \n", j);
-        sprintf(tab[j].nom,"Bot [%d]",j);
-        tab[j].jeu=inittabcarte(10);
-        distribution(tabcartes,tab[j].jeu,10);
-        triselection(tab[j].jeu,10);
-        tab[j].nb_tete=malloc(sizeof(int));
-        tab[j].bot=1;
-    }
-
-    return tab;
-}
\ No newline at end of file
diff --git a/distribution.c b/distribution.c
deleted file mode 100644
index c451a9e..0000000
--- a/distribution.c
+++ /dev/null
@@ -1,23 +0,0 @@
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-
-/* Auteur : Antoine Metz */
-/* Date :   18/06 */
-/* Résumé : Distribue les cartes de manières aléatoires entre 1 et 1041, pas de doublon possibles */
-/* Entrée(s) : La main du joueur, le tableau de cartes et le nombre de cartes à distribuer */
-/* Sortie(s) : Ajoute des cartes dans la main du joueur */
-
-void distribution(carte* tabcartes,carte* tab,int nombre);
-
-void distribution(carte* tabcartes,carte* tab,int nombre){
-    int j;
-    srand(time(NULL));
-    for(int i=0;i<nombre;i++){
-        do{            
-            j=rand() % (103 + 1);
-        }while(tabcartes[j].valeur == 404);
-        echanger(tab,tabcartes,i,j);
-    }
-    
-}
\ No newline at end of file
diff --git a/echanger.c b/echanger.c
deleted file mode 100644
index 28fb809..0000000
--- a/echanger.c
+++ /dev/null
@@ -1,23 +0,0 @@
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-
-/* Auteur : ... */
-/* Date :   ... */
-/* Résumé : ... */
-/* Entrée(s) : ... */
-/* Sortie(s) :  ...  */
-
-void echanger(carte* tab,carte* tab2,int i, int j);
-
-
-void echanger(carte* tab,carte* tab2,int i, int j){
-    int temp;
-    temp=tab[i].valeur;
-    tab[i].valeur=tab2[j].valeur;
-    tab2[j].valeur=temp;
-
-    temp=tab[i].tete;
-    tab[i].tete=tab2[j].tete;
-    tab2[j].tete=temp;
-}
\ No newline at end of file
diff --git a/templatededoc.txt b/templatededoc.txt
deleted file mode 100644
index 06052d8..0000000
--- a/templatededoc.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-/* Auteur : ... */
-/* Date :   ... */
-/* Résumé : ... */
-/* Entrée(s) : ... */
-/* Sortie(s) :  ...  */
\ No newline at end of file
diff --git a/triselection.c b/triselection.c
deleted file mode 100644
index daec3b1..0000000
--- a/triselection.c
+++ /dev/null
@@ -1,24 +0,0 @@
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-
-/* Auteur : Antoine Metz */
-/* Date :   18/06 */
-/* Résumé : Effectue un tri par séléction sur le tableau en paramètre */
-/* Entrée(s) : Tableau de carte, et la taille du tableau */
-/* Sortie(s) :  Tri le tableau tab  */
-
-void triselection(carte* tab,int taille);
-
-void triselection(carte* tab,int taille){
-    int min;
-    for(int i=0;i<taille;i++){
-        min=i;
-        for(int j=i+1;j<taille;j++){
-            if((tab[j].valeur < tab[min].valeur) && (tab[j].valeur != 404)){
-                min=j;
-            }
-        }
-        echanger(tab,tab,i,min);
-    }
-}
-- 
GitLab


From 08b9cd9bca79a790c82395d73547edc07053c7ec Mon Sep 17 00:00:00 2001
From: root <root@DESKTOP-CNLRA8O.localdomain>
Date: Tue, 20 Jun 2023 14:38:10 +0200
Subject: [PATCH 21/21] Nouveau Readme

---
 README.md | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 48 insertions(+)
 create mode 100644 README.md

diff --git a/README.md b/README.md
new file mode 100644
index 0000000..6ef6792
--- /dev/null
+++ b/README.md
@@ -0,0 +1,48 @@
+
+# 6 Qui Prend
+
+
+
+## A propos : 
+
+Ce programme a été codé dans le cadre d'un projet de fin d'année de Pré-Ing 1 pour l'École Cy-Tech, cursus Math-Info Option Physique
+
+Le programme a été entièrement réalisé en C. L’affichage est uniquement constitué de sorties textuelles dans le terminal via des printf.
+
+## Installation
+
+Téléchargez les 4 fichiers contenu dans la branche main.
+
+Enregistrez-les dans la même destination, les fichiers ne doivent pas se situer dans des chemins différents.
+
+![Logo](https://i.postimg.cc/hvksBx7h/Screenshot-603.png)
+
+La compilation est laissée à l'utilisateur ; Celle-ci s'effectuera à l'aide d'un fichier Makefile.
+
+Sous Linux ouvrez le terminal et rentrez la ligne de code suivante dans le dossier où vous avez téléchargé les fichiers.
+```bash
+   make
+```
+L'éxécutable apparaitra alors dans le dossier.
+
+![Logo](https://i.postimg.cc/cLwx0NPJ/Screenshot-604.png)
+
+## Utilisation
+
+Éxécutez la commande suivante dans le terminal pour lancer le programme : 
+
+```bash
+   ./6quiprend
+```
+Suivez alors les instructions données par le programme dans le terminal, respectez les critères de saisies.
+
+## Auteurs 
+
+- Metz Antoine
+- Berrard Thierry
+- Poireault Nathan
+- Marolleau Louise
+
+## Contribution
+
+Le projet n'est pas ouvert à la contribution étant donné qu'il a été codé dans le cadre d'une évaluation scolaire.
\ No newline at end of file
-- 
GitLab