diff --git a/.vs/VSWorkspaceState.json b/.vs/VSWorkspaceState.json
new file mode 100644
index 0000000..29038eb
--- /dev/null
+++ b/.vs/VSWorkspaceState.json
@@ -0,0 +1,11 @@
+{
+ "ExpandedNodes": [
+ "",
+ "\\SwichGIT",
+ "\\SwichGIT\\src",
+ "\\SwichGIT\\src\\css",
+ "\\SwichGIT\\src\\js"
+ ],
+ "SelectedNode": "\\SwichGIT\\src\\css\\PartieGame.css",
+ "PreviewInSolutionExplorer": false
+}
\ No newline at end of file
diff --git a/.vs/slnx.sqlite b/.vs/slnx.sqlite
new file mode 100644
index 0000000..ce76683
Binary files /dev/null and b/.vs/slnx.sqlite differ
diff --git a/.vs/swish/config/applicationhost.config b/.vs/swish/config/applicationhost.config
new file mode 100644
index 0000000..7a99442
--- /dev/null
+++ b/.vs/swish/config/applicationhost.config
@@ -0,0 +1,1025 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.vs/swish/v16/.suo b/.vs/swish/v16/.suo
new file mode 100644
index 0000000..1ee95aa
Binary files /dev/null and b/.vs/swish/v16/.suo differ
diff --git a/SwichGIT/Doc/Forme.md b/SwichGIT/Doc/Forme.md
new file mode 100644
index 0000000..3848ef1
--- /dev/null
+++ b/SwichGIT/Doc/Forme.md
@@ -0,0 +1,133 @@
+# Projet Swish
+**Etudes des formes**
+> Avec C.TOFFIN, Y.SEVRET, A.GOLFIER, T.SOUCHON et Monsieur LAFOURCADE EN 2A de DUT Info.
+
+---
+## SOMMAIRE
+ - [Explications](#Explications)
+ - [Etude du cercle](#Etude-du-cercle)
+ - [Etude du carré](#Etude-du-carré)
+ - [Etude du triangle](#Etude-du-triangle)
+ - [Etude du pentagone](#Etude-du-pentagone)
+ - [Etude du losange](#Etude-du-losange)
+
+
+---
+## Explications
+
+Chaque forme est contenu dans une div carré. Pour simplifier mes calculs, je prends un carré de 100x100 qui permet de calculer facilement par la suite, si nous augmentons ou diminuons la taille de la div.
+
+La division étant définie par :
+```css
+#containform
+{
+ box-sizing: content-box;
+ height: 100;
+ width: 100;
+ display: table-cell;
+ vertical-align: middle;
+}
+```
+
+---
+## Etude du cercle
+
+Cette structure contient deux formes :
+ - Un anneau (composé de 2 ronds) qui représente la partie extérieur
+ - Un rond qui représente la partie intérieur manquante
+
+
+
+Code forme anneau :
+```css
+#anneau
+{
+ background-color: #DE3030;
+ border-radius: 3vw;
+ display: table-cell;
+ vertical-align: middle;
+}
+
+#rondinterieur
+{
+ background-color: var(--lightsedonca);
+ display: table;
+ margin: 0 auto;
+ border-radius: 3vw;
+}
+```
+
+Pour résumer, le rond intérieur va se centrer au milieu de l'anneau. Et prendra la couleur définie par la variable "--lightseconda" qui correspond à la couleur de la carte (qui change avec le mode jour/nuit).
+
+---
+## Etude du carré
+
+Cette structure contient deux formes :
+ - Un carré (composé de 2 carré) qui représente la partie extérieur
+ - Un carré qui représente la partie intérieur manquante
+
+
+
+Code forme anneau :
+```css
+#carre
+{
+ background-color: #DE3030;
+ display: table-cell;
+ vertical-align: middle;
+}
+
+#carreinterieur
+{
+ background-color: var(--lightsedonca);
+ display: table;
+ margin: 0 auto;
+}
+```
+
+Pour résumer, le carré intérieur va se centrer au milieu du carré. Et prendra la couleur définie par la variable "--lightseconda" qui correspond à la couleur de la carte (qui change avec le mode jour/nuit).
+
+---
+## Etude du triangle
+
+Cette structure contient deux formes :
+ - Un triangle (composé de 2 triangles) qui représente la partie extérieur
+ - Un triangle qui représente la partie intérieur manquante
+
+
+
+
+| Nom | Triangle Extérieur | Triangle intérieur |
+|:-: |:-: |:-: |
+| Calculs côtés |AB = 100 Notons F = (1/2)AB Soit AF = 50 et FC = 100 D'après de théorème de Pythagore : AC² = AF² + FC² AC² = 50²+100² AC² = 12500 AC = sqrt(12500) = 111.80 ```AC = AB = 111.80``` | Si XY = 50 Notons G = (1/2)XY soit XG = 25 et GZ = 50 D'après de théorème de Pythagore : XZ² = XG²+GZ² XZ² = 25²+50² XZ² = 3125 XZ = sqrt(3125) = 55.90 ```XZ = YZ = 55.90```|
+| Calculs angles | Cos  = AF / AC = 50 / 111.80 Cos  = 0.44722719141 ```Cos^(-1)A = 63.434°``` En suivant la même méthode : ```Cos^(-1) B = 63.434°``` ```Cos^(-1) C = 53.132°``` | ```Cos^(-1) X = 63.434°``` ```Cos^(-1) Y = 63.434°``` ```Cos^(-1) Z = 53.132° ```|
+
+
+Placement petit triangle :
+Si AC = 111.80 et AB = 100
+Le petit triangle devra être à 50 de la gauche et 55.9 du bottom.
+
+---
+## Etude du pentagone
+
+Cette structure contient deux formes :
+ - Un losange (composé de deux triangle) qui représente la partie extérieur
+ - Un losange plus petit (composé de deux triangle également) qui représente la partie intérieur manquante
+
+
+
+
+| Calcul angle du trapèze | Calcul angle du triangle |
+|:-: |:-: |
+| Pour le triangle EFA : EF = 25 et AF = 50 D'après de théorème de Pythagore : EA² = EF²+FA² EA² = 25²+50² EA² = 3125 EA = sqrt(3125) = 55.90 ```L'angle E est de 63.434° et l'angle C est de 63.434°``` L'angle A = angle B et la somme des angles d'un trapèze est de 360°. Ainsi : 360 - 63.434 - 63.434 = 233.132 Angle A = 223.132/2 = 116.566° ```Angle B = Angle A = 116.566°``` | EG = 50 et GD = 50 D'après de théorème de Pythagore : ED² = EG² + DG² ED² = 50² + 50² ED² = 5000 ED = sqrt(5000) = 70.71
```Angle E = 45°``` ```Angle C = 45°``` ```Angle D = 90° ```|
+
+---
+## Etude du losange
+
+Cette structure contient deux formes :
+ - Un triangle (composé de 2 triangles ) qui représente la partie extérieur
+ - Un triangle (composé de 2 triangles) qui représente la partie intérieur manquante
+
+
+
+Pour le calcul des côtés, revoir le pentagone (même triangle).
diff --git a/SwichGIT/Doc/TachesAFaire.md b/SwichGIT/Doc/TachesAFaire.md
new file mode 100644
index 0000000..de6d0f9
--- /dev/null
+++ b/SwichGIT/Doc/TachesAFaire.md
@@ -0,0 +1,22 @@
+#
+Liste des tâches à réaliser
+
+
+| Tâches | Durée | Dépendences |
+|:------------------------------------------------:|:-----:|:-----------:|
+| Cahier des charges | | |
+| Définir les modes de jeux | | |
+| Définir les règles | | |
+| Choisir l'implémentation des modes de jeu | | |
+| Definir les fonctions de base | | |
+| Faire la version web | | |
+| Apporter correctif nécessaires | | |
+| Version jeu en local | | |
+| Serveur local multi | | |
+| Définir les fonctions supplémentaires | | |
+| Inclure d'autres modes de jeu | | |
+| Version étendue | | |
+| Faire mode daltonien | | |
+| Mode jour/nuit | | |
+| Version conforme au appareil(Tablette/télephone) | | |
+| Verifier conformité avec CDC | | |
\ No newline at end of file
diff --git a/SwichGIT/ServerPyt/.idea/ServerPyt.iml b/SwichGIT/ServerPyt/.idea/ServerPyt.iml
new file mode 100644
index 0000000..d0876a7
--- /dev/null
+++ b/SwichGIT/ServerPyt/.idea/ServerPyt.iml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/SwichGIT/ServerPyt/.idea/inspectionProfiles/Project_Default.xml b/SwichGIT/ServerPyt/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 0000000..40985a1
--- /dev/null
+++ b/SwichGIT/ServerPyt/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/SwichGIT/ServerPyt/.idea/inspectionProfiles/profiles_settings.xml b/SwichGIT/ServerPyt/.idea/inspectionProfiles/profiles_settings.xml
new file mode 100644
index 0000000..105ce2d
--- /dev/null
+++ b/SwichGIT/ServerPyt/.idea/inspectionProfiles/profiles_settings.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/SwichGIT/ServerPyt/.idea/misc.xml b/SwichGIT/ServerPyt/.idea/misc.xml
new file mode 100644
index 0000000..d1e22ec
--- /dev/null
+++ b/SwichGIT/ServerPyt/.idea/misc.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/SwichGIT/ServerPyt/.idea/modules.xml b/SwichGIT/ServerPyt/.idea/modules.xml
new file mode 100644
index 0000000..e5fbddf
--- /dev/null
+++ b/SwichGIT/ServerPyt/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/SwichGIT/ServerPyt/.idea/vcs.xml b/SwichGIT/ServerPyt/.idea/vcs.xml
new file mode 100644
index 0000000..6c0b863
--- /dev/null
+++ b/SwichGIT/ServerPyt/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/SwichGIT/ServerPyt/.idea/workspace.xml b/SwichGIT/ServerPyt/.idea/workspace.xml
new file mode 100644
index 0000000..b52d1c3
--- /dev/null
+++ b/SwichGIT/ServerPyt/.idea/workspace.xml
@@ -0,0 +1,140 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1605462744659
+
+
+ 1605462744659
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/SwichGIT/ServerPyt/client.py b/SwichGIT/ServerPyt/client.py
new file mode 100644
index 0000000..6fb53fd
--- /dev/null
+++ b/SwichGIT/ServerPyt/client.py
@@ -0,0 +1,40 @@
+import socket
+import threading
+
+class Client:
+ def __init__(self):
+ self.create_connection()
+
+ def create_connection(self):
+ self.s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
+
+ while 1:
+ try:
+ host = input("Entrez l'adresse IP de l'Host : ")
+ port = int(input("Entrez le port : "))
+ self.s.connect((host,port))
+
+ break
+ except:
+ print("Impossible de se connecter au serveur")
+
+ self.username = input('Entrez votre pseudo : ')
+ self.s.send(self.username.encode())
+
+ message_handler = threading.Thread(target=self.handle_messages,args=())
+ message_handler.start()
+
+ input_handler = threading.Thread(target=self.input_handler,args=())
+ input_handler.start()
+
+ def handle_messages(self):
+ while 1:
+ print(self.s.recv(1204).decode())
+ print("")
+
+ def input_handler(self):
+ while 1:
+ print("Message : ",end='')
+ self.s.send((self.username+' - '+input()).encode())
+
+client = Client()
diff --git a/SwichGIT/ServerPyt/server.py b/SwichGIT/ServerPyt/server.py
new file mode 100644
index 0000000..93cd8ac
--- /dev/null
+++ b/SwichGIT/ServerPyt/server.py
@@ -0,0 +1,62 @@
+import socket
+import threading
+
+class Server:
+ def __init__(self):
+ self.start_server()
+
+ def start_server(self):
+ self.s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
+
+ host = socket.gethostbyname(socket.gethostname())
+ port = int(input("Entrez le port sur lequel le serveur va être : "))
+
+ self.clients = []
+
+ self.s.bind((host,port))
+ self.s.listen(100)
+
+ print("Ip de l'host "+str(host))
+ print('Marche sur le port '+str(port))
+
+ self.username_lookup = {}
+
+ while True:
+ c, addr = self.s.accept()
+
+ username = c.recv(1024).decode()
+
+ print('Nouvelle connection : Pseudo '+str(username))
+ self.broadcast('Nouvelle personne à rejoind : Pseudo '+username)
+
+ self.username_lookup[c] = username
+
+ self.clients.append(c)
+
+ threading.Thread(target=self.handle_client,args=(c,addr,)).start()
+
+ def broadcast(self,msg):
+ for connection in self.clients:
+ connection.send(msg.encode())
+
+ def handle_client(self,c,addr):
+ while True:
+ try:
+ msg = c.recv(1024)
+ except:
+ c.shutdown(socket.SHUT_RDWR)
+ self.clients.remove(c)
+
+ print(str(self.username_lookup[c])+' est parti')
+ self.broadcast(str(self.username_lookup[c])+' a quite')
+
+ break
+
+ if msg.decode() != '':
+ print(str(msg.decode()))
+ for connection in self.clients:
+ if connection != c:
+ connection.send(msg)
+
+
+server = Server()