diff --git a/.gitignore b/.gitignore
index 5e83119..42c30e0 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,2 @@
.settings
+.idea/
diff --git a/Pts3Serveur.iml b/Pts3Serveur.iml
new file mode 100644
index 0000000..c7ef73a
--- /dev/null
+++ b/Pts3Serveur.iml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bin/Serveur.class b/bin/Serveur.class
index 2722342..03aaa4c 100644
Binary files a/bin/Serveur.class and b/bin/Serveur.class differ
diff --git a/bin/game/Board.class b/bin/game/Board.class
index 920438f..8709e30 100644
Binary files a/bin/game/Board.class and b/bin/game/Board.class differ
diff --git a/bin/game/Command.class b/bin/game/Command.class
index 1a398c8..2787f9f 100644
Binary files a/bin/game/Command.class and b/bin/game/Command.class differ
diff --git a/bin/game/ComsJoueur.class b/bin/game/ComsJoueur.class
index a06a8ac..26ff0e6 100644
Binary files a/bin/game/ComsJoueur.class and b/bin/game/ComsJoueur.class differ
diff --git a/bin/game/DeckSerializer.class b/bin/game/DeckSerializer.class
index de5a988..a9ad87e 100644
Binary files a/bin/game/DeckSerializer.class and b/bin/game/DeckSerializer.class differ
diff --git a/bin/game/Hand.class b/bin/game/Hand.class
index b4d9142..438057a 100644
Binary files a/bin/game/Hand.class and b/bin/game/Hand.class differ
diff --git a/bin/game/Joueur.class b/bin/game/Joueur.class
index d9c260a..531cbf8 100644
Binary files a/bin/game/Joueur.class and b/bin/game/Joueur.class differ
diff --git a/bin/game/Match.class b/bin/game/Match.class
index 28cf5d8..922bae7 100644
Binary files a/bin/game/Match.class and b/bin/game/Match.class differ
diff --git a/bin/game/PlayerTesteur.class b/bin/game/PlayerTesteur.class
index 7d18dab..3453475 100644
Binary files a/bin/game/PlayerTesteur.class and b/bin/game/PlayerTesteur.class differ
diff --git a/bin/game/SimpleUDP.class b/bin/game/SimpleUDP.class
index 76c42d4..cd41b78 100644
Binary files a/bin/game/SimpleUDP.class and b/bin/game/SimpleUDP.class differ
diff --git a/bin/game/cards/Card.class b/bin/game/cards/Card.class
index d087fa4..4ab2415 100644
Binary files a/bin/game/cards/Card.class and b/bin/game/cards/Card.class differ
diff --git a/bin/game/cards/CardRegistery.class b/bin/game/cards/CardRegistery.class
index 694f6ba..075eacb 100644
Binary files a/bin/game/cards/CardRegistery.class and b/bin/game/cards/CardRegistery.class differ
diff --git a/bin/game/cards/MoyenAge/Moyen_Age_Charlemagne.class b/bin/game/cards/MoyenAge/Moyen_Age_Charlemagne.class
index 9e7c1fd..33780d5 100644
Binary files a/bin/game/cards/MoyenAge/Moyen_Age_Charlemagne.class and b/bin/game/cards/MoyenAge/Moyen_Age_Charlemagne.class differ
diff --git a/bin/game/cards/MoyenAge/Moyen_Age_CharlesV.class b/bin/game/cards/MoyenAge/Moyen_Age_CharlesV.class
index d388bc0..c2a40ed 100644
Binary files a/bin/game/cards/MoyenAge/Moyen_Age_CharlesV.class and b/bin/game/cards/MoyenAge/Moyen_Age_CharlesV.class differ
diff --git a/bin/game/cards/MoyenAge/Moyen_Age_CharlesVII.class b/bin/game/cards/MoyenAge/Moyen_Age_CharlesVII.class
index 6f0d031..45b188d 100644
Binary files a/bin/game/cards/MoyenAge/Moyen_Age_CharlesVII.class and b/bin/game/cards/MoyenAge/Moyen_Age_CharlesVII.class differ
diff --git a/bin/game/cards/MoyenAge/Moyen_Age_Chretien_De_Troyes.class b/bin/game/cards/MoyenAge/Moyen_Age_Chretien_De_Troyes.class
index 3648844..14a2800 100644
Binary files a/bin/game/cards/MoyenAge/Moyen_Age_Chretien_De_Troyes.class and b/bin/game/cards/MoyenAge/Moyen_Age_Chretien_De_Troyes.class differ
diff --git a/bin/game/cards/MoyenAge/Moyen_Age_Christine.class b/bin/game/cards/MoyenAge/Moyen_Age_Christine.class
index 4cdc882..04f1b5f 100644
Binary files a/bin/game/cards/MoyenAge/Moyen_Age_Christine.class and b/bin/game/cards/MoyenAge/Moyen_Age_Christine.class differ
diff --git a/bin/game/cards/MoyenAge/Moyen_Age_Clovis.class b/bin/game/cards/MoyenAge/Moyen_Age_Clovis.class
index d20ed9c..9621baa 100644
Binary files a/bin/game/cards/MoyenAge/Moyen_Age_Clovis.class and b/bin/game/cards/MoyenAge/Moyen_Age_Clovis.class differ
diff --git a/bin/game/cards/MoyenAge/Moyen_Age_Croisade.class b/bin/game/cards/MoyenAge/Moyen_Age_Croisade.class
index e17773e..d19a93b 100644
Binary files a/bin/game/cards/MoyenAge/Moyen_Age_Croisade.class and b/bin/game/cards/MoyenAge/Moyen_Age_Croisade.class differ
diff --git a/bin/game/cards/MoyenAge/Moyen_Age_Etienne.class b/bin/game/cards/MoyenAge/Moyen_Age_Etienne.class
index b6061b5..66ec0e4 100644
Binary files a/bin/game/cards/MoyenAge/Moyen_Age_Etienne.class and b/bin/game/cards/MoyenAge/Moyen_Age_Etienne.class differ
diff --git a/bin/game/cards/MoyenAge/Moyen_Age_Ferré.class b/bin/game/cards/MoyenAge/Moyen_Age_Ferré.class
index f53cf81..c633e3d 100644
Binary files a/bin/game/cards/MoyenAge/Moyen_Age_Ferré.class and b/bin/game/cards/MoyenAge/Moyen_Age_Ferré.class differ
diff --git a/bin/game/cards/MoyenAge/Moyen_Age_Guerre_100.class b/bin/game/cards/MoyenAge/Moyen_Age_Guerre_100.class
index fd2f3db..114eafa 100644
Binary files a/bin/game/cards/MoyenAge/Moyen_Age_Guerre_100.class and b/bin/game/cards/MoyenAge/Moyen_Age_Guerre_100.class differ
diff --git a/bin/game/cards/MoyenAge/Moyen_Age_Guillaume.class b/bin/game/cards/MoyenAge/Moyen_Age_Guillaume.class
index eff0cd2..d5a64e2 100644
Binary files a/bin/game/cards/MoyenAge/Moyen_Age_Guillaume.class and b/bin/game/cards/MoyenAge/Moyen_Age_Guillaume.class differ
diff --git a/bin/game/cards/MoyenAge/Moyen_Age_Heresie_Cathares.class b/bin/game/cards/MoyenAge/Moyen_Age_Heresie_Cathares.class
index fe0d3eb..28e98d2 100644
Binary files a/bin/game/cards/MoyenAge/Moyen_Age_Heresie_Cathares.class and b/bin/game/cards/MoyenAge/Moyen_Age_Heresie_Cathares.class differ
diff --git a/bin/game/cards/MoyenAge/Moyen_Age_Hugue.class b/bin/game/cards/MoyenAge/Moyen_Age_Hugue.class
index 3af66e0..fa0ab95 100644
Binary files a/bin/game/cards/MoyenAge/Moyen_Age_Hugue.class and b/bin/game/cards/MoyenAge/Moyen_Age_Hugue.class differ
diff --git a/bin/game/cards/MoyenAge/Moyen_Age_Isabelle.class b/bin/game/cards/MoyenAge/Moyen_Age_Isabelle.class
index cff1d72..e0349be 100644
Binary files a/bin/game/cards/MoyenAge/Moyen_Age_Isabelle.class and b/bin/game/cards/MoyenAge/Moyen_Age_Isabelle.class differ
diff --git a/bin/game/cards/MoyenAge/Moyen_Age_Jean.class b/bin/game/cards/MoyenAge/Moyen_Age_Jean.class
index e203520..f38c3d2 100644
Binary files a/bin/game/cards/MoyenAge/Moyen_Age_Jean.class and b/bin/game/cards/MoyenAge/Moyen_Age_Jean.class differ
diff --git a/bin/game/cards/MoyenAge/Moyen_Age_Jean_Vienne.class b/bin/game/cards/MoyenAge/Moyen_Age_Jean_Vienne.class
index f4a2d09..9efe35c 100644
Binary files a/bin/game/cards/MoyenAge/Moyen_Age_Jean_Vienne.class and b/bin/game/cards/MoyenAge/Moyen_Age_Jean_Vienne.class differ
diff --git a/bin/game/cards/MoyenAge/Moyen_Age_Jeanne.class b/bin/game/cards/MoyenAge/Moyen_Age_Jeanne.class
index 6c345a0..1c9685a 100644
Binary files a/bin/game/cards/MoyenAge/Moyen_Age_Jeanne.class and b/bin/game/cards/MoyenAge/Moyen_Age_Jeanne.class differ
diff --git a/bin/game/cards/MoyenAge/Moyen_Age_Louis.class b/bin/game/cards/MoyenAge/Moyen_Age_Louis.class
index 0c81fd9..7345e7a 100644
Binary files a/bin/game/cards/MoyenAge/Moyen_Age_Louis.class and b/bin/game/cards/MoyenAge/Moyen_Age_Louis.class differ
diff --git a/bin/game/cards/MoyenAge/Moyen_Age_Malediction_Templier.class b/bin/game/cards/MoyenAge/Moyen_Age_Malediction_Templier.class
index 0aefcec..a1ffeb1 100644
Binary files a/bin/game/cards/MoyenAge/Moyen_Age_Malediction_Templier.class and b/bin/game/cards/MoyenAge/Moyen_Age_Malediction_Templier.class differ
diff --git a/bin/game/cards/MoyenAge/Moyen_Age_Peste.class b/bin/game/cards/MoyenAge/Moyen_Age_Peste.class
index cdd78fd..e290bb5 100644
Binary files a/bin/game/cards/MoyenAge/Moyen_Age_Peste.class and b/bin/game/cards/MoyenAge/Moyen_Age_Peste.class differ
diff --git a/bin/game/cards/MoyenAge/Moyen_Age_Philippe.class b/bin/game/cards/MoyenAge/Moyen_Age_Philippe.class
index b68c4f0..a5bd9de 100644
Binary files a/bin/game/cards/MoyenAge/Moyen_Age_Philippe.class and b/bin/game/cards/MoyenAge/Moyen_Age_Philippe.class differ
diff --git a/bin/game/cards/MoyenAge/Moyen_Age_PhilippeIV.class b/bin/game/cards/MoyenAge/Moyen_Age_PhilippeIV.class
index 25048e6..84cfe3c 100644
Binary files a/bin/game/cards/MoyenAge/Moyen_Age_PhilippeIV.class and b/bin/game/cards/MoyenAge/Moyen_Age_PhilippeIV.class differ
diff --git a/bin/game/cards/MoyenAge/Moyen_Age_Philippe_Cacqueray.class b/bin/game/cards/MoyenAge/Moyen_Age_Philippe_Cacqueray.class
index 4a5a51b..0670f9a 100644
Binary files a/bin/game/cards/MoyenAge/Moyen_Age_Philippe_Cacqueray.class and b/bin/game/cards/MoyenAge/Moyen_Age_Philippe_Cacqueray.class differ
diff --git a/bin/game/cards/MoyenAge/Moyen_Age_Pierre.class b/bin/game/cards/MoyenAge/Moyen_Age_Pierre.class
index 3ae60eb..e84c161 100644
Binary files a/bin/game/cards/MoyenAge/Moyen_Age_Pierre.class and b/bin/game/cards/MoyenAge/Moyen_Age_Pierre.class differ
diff --git a/bin/game/cards/MoyenAge/Moyen_Age_Pierre_Ermite.class b/bin/game/cards/MoyenAge/Moyen_Age_Pierre_Ermite.class
index 2da6475..30ba319 100644
Binary files a/bin/game/cards/MoyenAge/Moyen_Age_Pierre_Ermite.class and b/bin/game/cards/MoyenAge/Moyen_Age_Pierre_Ermite.class differ
diff --git a/bin/game/cards/MoyenAge/Moyen_Age_Pouvoir_Du_Franc.class b/bin/game/cards/MoyenAge/Moyen_Age_Pouvoir_Du_Franc.class
index 2fa8fc4..dda67a2 100644
Binary files a/bin/game/cards/MoyenAge/Moyen_Age_Pouvoir_Du_Franc.class and b/bin/game/cards/MoyenAge/Moyen_Age_Pouvoir_Du_Franc.class differ
diff --git a/bin/game/cards/MoyenAge/Moyen_Age_Prise_Sainte_Terre.class b/bin/game/cards/MoyenAge/Moyen_Age_Prise_Sainte_Terre.class
index 592f73f..2edfd08 100644
Binary files a/bin/game/cards/MoyenAge/Moyen_Age_Prise_Sainte_Terre.class and b/bin/game/cards/MoyenAge/Moyen_Age_Prise_Sainte_Terre.class differ
diff --git a/bin/game/cards/MoyenAge/Moyen_Age_Roland.class b/bin/game/cards/MoyenAge/Moyen_Age_Roland.class
index cf4a7a0..edd496d 100644
Binary files a/bin/game/cards/MoyenAge/Moyen_Age_Roland.class and b/bin/game/cards/MoyenAge/Moyen_Age_Roland.class differ
diff --git a/bin/game/cards/MoyenAge/Moyen_Age_Sire_Jean.class b/bin/game/cards/MoyenAge/Moyen_Age_Sire_Jean.class
index e7f4d17..1199d09 100644
Binary files a/bin/game/cards/MoyenAge/Moyen_Age_Sire_Jean.class and b/bin/game/cards/MoyenAge/Moyen_Age_Sire_Jean.class differ
diff --git a/bin/game/cards/MoyenAge/Moyen_Age_Traite_Verdun.class b/bin/game/cards/MoyenAge/Moyen_Age_Traite_Verdun.class
index 6437dbd..34f4fc4 100644
Binary files a/bin/game/cards/MoyenAge/Moyen_Age_Traite_Verdun.class and b/bin/game/cards/MoyenAge/Moyen_Age_Traite_Verdun.class differ
diff --git a/bin/game/cards/Mythes/Mythes_12_Travaux.class b/bin/game/cards/Mythes/Mythes_12_Travaux.class
index 30c87e9..43988d7 100644
Binary files a/bin/game/cards/Mythes/Mythes_12_Travaux.class and b/bin/game/cards/Mythes/Mythes_12_Travaux.class differ
diff --git a/bin/game/cards/Mythes/Mythes_Achille.class b/bin/game/cards/Mythes/Mythes_Achille.class
index 2bb2122..719ac38 100644
Binary files a/bin/game/cards/Mythes/Mythes_Achille.class and b/bin/game/cards/Mythes/Mythes_Achille.class differ
diff --git a/bin/game/cards/Mythes/Mythes_Amazones.class b/bin/game/cards/Mythes/Mythes_Amazones.class
index f8ad415..f57baba 100644
Binary files a/bin/game/cards/Mythes/Mythes_Amazones.class and b/bin/game/cards/Mythes/Mythes_Amazones.class differ
diff --git a/bin/game/cards/Mythes/Mythes_Castor_Pollux.class b/bin/game/cards/Mythes/Mythes_Castor_Pollux.class
index 0f99aa7..c54a06d 100644
Binary files a/bin/game/cards/Mythes/Mythes_Castor_Pollux.class and b/bin/game/cards/Mythes/Mythes_Castor_Pollux.class differ
diff --git a/bin/game/cards/Mythes/Mythes_Chant_Sirene.class b/bin/game/cards/Mythes/Mythes_Chant_Sirene.class
index 88f0873..713cf1a 100644
Binary files a/bin/game/cards/Mythes/Mythes_Chant_Sirene.class and b/bin/game/cards/Mythes/Mythes_Chant_Sirene.class differ
diff --git a/bin/game/cards/Mythes/Mythes_Chaos.class b/bin/game/cards/Mythes/Mythes_Chaos.class
index 481b59d..0c1dad7 100644
Binary files a/bin/game/cards/Mythes/Mythes_Chaos.class and b/bin/game/cards/Mythes/Mythes_Chaos.class differ
diff --git a/bin/game/cards/Mythes/Mythes_Cheval_Troie.class b/bin/game/cards/Mythes/Mythes_Cheval_Troie.class
index b0d8ef4..95125df 100644
Binary files a/bin/game/cards/Mythes/Mythes_Cheval_Troie.class and b/bin/game/cards/Mythes/Mythes_Cheval_Troie.class differ
diff --git a/bin/game/cards/Mythes/Mythes_Chiron.class b/bin/game/cards/Mythes/Mythes_Chiron.class
index c6fd5b9..8615c9d 100644
Binary files a/bin/game/cards/Mythes/Mythes_Chiron.class and b/bin/game/cards/Mythes/Mythes_Chiron.class differ
diff --git a/bin/game/cards/Mythes/Mythes_Dédale.class b/bin/game/cards/Mythes/Mythes_Dédale.class
index d11db17..7eaaeaa 100644
Binary files a/bin/game/cards/Mythes/Mythes_Dédale.class and b/bin/game/cards/Mythes/Mythes_Dédale.class differ
diff --git a/bin/game/cards/Mythes/Mythes_Enigme_Sphinx.class b/bin/game/cards/Mythes/Mythes_Enigme_Sphinx.class
index 5678995..def0e27 100644
Binary files a/bin/game/cards/Mythes/Mythes_Enigme_Sphinx.class and b/bin/game/cards/Mythes/Mythes_Enigme_Sphinx.class differ
diff --git a/bin/game/cards/Mythes/Mythes_Eole.class b/bin/game/cards/Mythes/Mythes_Eole.class
index fbb8261..d365fee 100644
Binary files a/bin/game/cards/Mythes/Mythes_Eole.class and b/bin/game/cards/Mythes/Mythes_Eole.class differ
diff --git a/bin/game/cards/Mythes/Mythes_Erinyes.class b/bin/game/cards/Mythes/Mythes_Erinyes.class
index 52992d6..ec545ab 100644
Binary files a/bin/game/cards/Mythes/Mythes_Erinyes.class and b/bin/game/cards/Mythes/Mythes_Erinyes.class differ
diff --git a/bin/game/cards/Mythes/Mythes_Guerre_Sept_Chefs.class b/bin/game/cards/Mythes/Mythes_Guerre_Sept_Chefs.class
index 81158a3..19af9eb 100644
Binary files a/bin/game/cards/Mythes/Mythes_Guerre_Sept_Chefs.class and b/bin/game/cards/Mythes/Mythes_Guerre_Sept_Chefs.class differ
diff --git a/bin/game/cards/Mythes/Mythes_Hades.class b/bin/game/cards/Mythes/Mythes_Hades.class
index 6362333..960ca5f 100644
Binary files a/bin/game/cards/Mythes/Mythes_Hades.class and b/bin/game/cards/Mythes/Mythes_Hades.class differ
diff --git a/bin/game/cards/Mythes/Mythes_Heracles.class b/bin/game/cards/Mythes/Mythes_Heracles.class
index 2789a3b..c517031 100644
Binary files a/bin/game/cards/Mythes/Mythes_Heracles.class and b/bin/game/cards/Mythes/Mythes_Heracles.class differ
diff --git a/bin/game/cards/Mythes/Mythes_Hermione.class b/bin/game/cards/Mythes/Mythes_Hermione.class
index aeb621f..9436dfa 100644
Binary files a/bin/game/cards/Mythes/Mythes_Hermione.class and b/bin/game/cards/Mythes/Mythes_Hermione.class differ
diff --git a/bin/game/cards/Mythes/Mythes_Icar.class b/bin/game/cards/Mythes/Mythes_Icar.class
index 9157a72..3a09d14 100644
Binary files a/bin/game/cards/Mythes/Mythes_Icar.class and b/bin/game/cards/Mythes/Mythes_Icar.class differ
diff --git a/bin/game/cards/Mythes/Mythes_Kunée.class b/bin/game/cards/Mythes/Mythes_Kunée.class
index 049dd53..0ed0b78 100644
Binary files a/bin/game/cards/Mythes/Mythes_Kunée.class and b/bin/game/cards/Mythes/Mythes_Kunée.class differ
diff --git a/bin/game/cards/Mythes/Mythes_Minos.class b/bin/game/cards/Mythes/Mythes_Minos.class
index 5e52eca..927c0e6 100644
Binary files a/bin/game/cards/Mythes/Mythes_Minos.class and b/bin/game/cards/Mythes/Mythes_Minos.class differ
diff --git a/bin/game/cards/Mythes/Mythes_Oedipie.class b/bin/game/cards/Mythes/Mythes_Oedipie.class
index c1983f8..0672542 100644
Binary files a/bin/game/cards/Mythes/Mythes_Oedipie.class and b/bin/game/cards/Mythes/Mythes_Oedipie.class differ
diff --git a/bin/game/cards/Mythes/Mythes_Perséphone.class b/bin/game/cards/Mythes/Mythes_Perséphone.class
index e38bff7..c613bb2 100644
Binary files a/bin/game/cards/Mythes/Mythes_Perséphone.class and b/bin/game/cards/Mythes/Mythes_Perséphone.class differ
diff --git a/bin/game/cards/Mythes/Mythes_Poseidon.class b/bin/game/cards/Mythes/Mythes_Poseidon.class
index c597136..9e408d6 100644
Binary files a/bin/game/cards/Mythes/Mythes_Poseidon.class and b/bin/game/cards/Mythes/Mythes_Poseidon.class differ
diff --git a/bin/game/cards/Mythes/Mythes_Psyché.class b/bin/game/cards/Mythes/Mythes_Psyché.class
index e66b956..e2f0ccb 100644
Binary files a/bin/game/cards/Mythes/Mythes_Psyché.class and b/bin/game/cards/Mythes/Mythes_Psyché.class differ
diff --git a/bin/game/cards/Mythes/Mythes_Rapt.class b/bin/game/cards/Mythes/Mythes_Rapt.class
index 54e52b9..e6da47b 100644
Binary files a/bin/game/cards/Mythes/Mythes_Rapt.class and b/bin/game/cards/Mythes/Mythes_Rapt.class differ
diff --git a/bin/game/cards/Mythes/Mythes_Sémélé.class b/bin/game/cards/Mythes/Mythes_Sémélé.class
index cf283c7..7313bf5 100644
Binary files a/bin/game/cards/Mythes/Mythes_Sémélé.class and b/bin/game/cards/Mythes/Mythes_Sémélé.class differ
diff --git a/bin/game/cards/Mythes/Mythes_Thanatos.class b/bin/game/cards/Mythes/Mythes_Thanatos.class
index 30514b1..680b840 100644
Binary files a/bin/game/cards/Mythes/Mythes_Thanatos.class and b/bin/game/cards/Mythes/Mythes_Thanatos.class differ
diff --git a/bin/game/cards/Mythes/Mythes_Titanomachie.class b/bin/game/cards/Mythes/Mythes_Titanomachie.class
index 185d0a7..a461307 100644
Binary files a/bin/game/cards/Mythes/Mythes_Titanomachie.class and b/bin/game/cards/Mythes/Mythes_Titanomachie.class differ
diff --git a/bin/game/cards/Mythes/Mythes_Toison.class b/bin/game/cards/Mythes/Mythes_Toison.class
index a7cb09a..845d07d 100644
Binary files a/bin/game/cards/Mythes/Mythes_Toison.class and b/bin/game/cards/Mythes/Mythes_Toison.class differ
diff --git a/bin/game/cards/Mythes/Mythes_Zeus.class b/bin/game/cards/Mythes/Mythes_Zeus.class
index 09ce36f..881e2b6 100644
Binary files a/bin/game/cards/Mythes/Mythes_Zeus.class and b/bin/game/cards/Mythes/Mythes_Zeus.class differ
diff --git a/bin/game/cards/Mythes/Mythes_Zeus_VS_Typhon.class b/bin/game/cards/Mythes/Mythes_Zeus_VS_Typhon.class
index b1fbcd3..54079d4 100644
Binary files a/bin/game/cards/Mythes/Mythes_Zeus_VS_Typhon.class and b/bin/game/cards/Mythes/Mythes_Zeus_VS_Typhon.class differ
diff --git a/bin/game/cards/Renaissance/Renaissance_Copernic.class b/bin/game/cards/Renaissance/Renaissance_Copernic.class
index 9135e73..b9c2c6e 100644
Binary files a/bin/game/cards/Renaissance/Renaissance_Copernic.class and b/bin/game/cards/Renaissance/Renaissance_Copernic.class differ
diff --git a/bin/game/cards/Renaissance/Renaissance_Mehmet.class b/bin/game/cards/Renaissance/Renaissance_Mehmet.class
index 5ba0732..84675c3 100644
Binary files a/bin/game/cards/Renaissance/Renaissance_Mehmet.class and b/bin/game/cards/Renaissance/Renaissance_Mehmet.class differ
diff --git a/bin/game/cards/Renaissance/Renaissance_Soliman.class b/bin/game/cards/Renaissance/Renaissance_Soliman.class
index a16cb9f..6e5f7fb 100644
Binary files a/bin/game/cards/Renaissance/Renaissance_Soliman.class and b/bin/game/cards/Renaissance/Renaissance_Soliman.class differ
diff --git a/bin/game/cards/Renaissance/Rennaissance_Casimir.class b/bin/game/cards/Renaissance/Rennaissance_Casimir.class
index c258ec1..5dd4caa 100644
Binary files a/bin/game/cards/Renaissance/Rennaissance_Casimir.class and b/bin/game/cards/Renaissance/Rennaissance_Casimir.class differ
diff --git a/bin/game/cards/Renaissance/Rennaissance_Charles.class b/bin/game/cards/Renaissance/Rennaissance_Charles.class
index 22b9b05..61bcd87 100644
Binary files a/bin/game/cards/Renaissance/Rennaissance_Charles.class and b/bin/game/cards/Renaissance/Rennaissance_Charles.class differ
diff --git a/bin/game/cards/Renaissance/Rennaissance_Chatherine.class b/bin/game/cards/Renaissance/Rennaissance_Chatherine.class
index 00b0ab2..9974201 100644
Binary files a/bin/game/cards/Renaissance/Rennaissance_Chatherine.class and b/bin/game/cards/Renaissance/Rennaissance_Chatherine.class differ
diff --git a/bin/game/cards/Renaissance/Rennaissance_Chute_Constantinople.class b/bin/game/cards/Renaissance/Rennaissance_Chute_Constantinople.class
index 7266961..ec5e3a5 100644
Binary files a/bin/game/cards/Renaissance/Rennaissance_Chute_Constantinople.class and b/bin/game/cards/Renaissance/Rennaissance_Chute_Constantinople.class differ
diff --git a/bin/game/cards/Renaissance/Rennaissance_Concile_Trente.class b/bin/game/cards/Renaissance/Rennaissance_Concile_Trente.class
index c5d2b3f..7108b74 100644
Binary files a/bin/game/cards/Renaissance/Rennaissance_Concile_Trente.class and b/bin/game/cards/Renaissance/Rennaissance_Concile_Trente.class differ
diff --git a/bin/game/cards/Renaissance/Rennaissance_Constantin.class b/bin/game/cards/Renaissance/Rennaissance_Constantin.class
index f654430..f004544 100644
Binary files a/bin/game/cards/Renaissance/Rennaissance_Constantin.class and b/bin/game/cards/Renaissance/Rennaissance_Constantin.class differ
diff --git a/bin/game/cards/Renaissance/Rennaissance_Decouverte_Amerique.class b/bin/game/cards/Renaissance/Rennaissance_Decouverte_Amerique.class
index 6c8777b..a7b3a0d 100644
Binary files a/bin/game/cards/Renaissance/Rennaissance_Decouverte_Amerique.class and b/bin/game/cards/Renaissance/Rennaissance_Decouverte_Amerique.class differ
diff --git a/bin/game/cards/Renaissance/Rennaissance_Elisabeth.class b/bin/game/cards/Renaissance/Rennaissance_Elisabeth.class
index 3a927f9..3a23404 100644
Binary files a/bin/game/cards/Renaissance/Rennaissance_Elisabeth.class and b/bin/game/cards/Renaissance/Rennaissance_Elisabeth.class differ
diff --git a/bin/game/cards/Renaissance/Rennaissance_Ferdinand.class b/bin/game/cards/Renaissance/Rennaissance_Ferdinand.class
index 74b3200..8d4e6cf 100644
Binary files a/bin/game/cards/Renaissance/Rennaissance_Ferdinand.class and b/bin/game/cards/Renaissance/Rennaissance_Ferdinand.class differ
diff --git a/bin/game/cards/Renaissance/Rennaissance_Fin_Guerre_Cent_Ans.class b/bin/game/cards/Renaissance/Rennaissance_Fin_Guerre_Cent_Ans.class
index 241d41d..853fdb2 100644
Binary files a/bin/game/cards/Renaissance/Rennaissance_Fin_Guerre_Cent_Ans.class and b/bin/game/cards/Renaissance/Rennaissance_Fin_Guerre_Cent_Ans.class differ
diff --git a/bin/game/cards/Renaissance/Rennaissance_Francois.class b/bin/game/cards/Renaissance/Rennaissance_Francois.class
index dce2243..e9547eb 100644
Binary files a/bin/game/cards/Renaissance/Rennaissance_Francois.class and b/bin/game/cards/Renaissance/Rennaissance_Francois.class differ
diff --git a/bin/game/cards/Renaissance/Rennaissance_Guerres_Italie.class b/bin/game/cards/Renaissance/Rennaissance_Guerres_Italie.class
index 059fddf..2b993c1 100644
Binary files a/bin/game/cards/Renaissance/Rennaissance_Guerres_Italie.class and b/bin/game/cards/Renaissance/Rennaissance_Guerres_Italie.class differ
diff --git a/bin/game/cards/Renaissance/Rennaissance_Henri.class b/bin/game/cards/Renaissance/Rennaissance_Henri.class
index 515d6b8..1b7a9ba 100644
Binary files a/bin/game/cards/Renaissance/Rennaissance_Henri.class and b/bin/game/cards/Renaissance/Rennaissance_Henri.class differ
diff --git a/bin/game/cards/Renaissance/Rennaissance_Henri_8.class b/bin/game/cards/Renaissance/Rennaissance_Henri_8.class
index ef582b5..858084f 100644
Binary files a/bin/game/cards/Renaissance/Rennaissance_Henri_8.class and b/bin/game/cards/Renaissance/Rennaissance_Henri_8.class differ
diff --git a/bin/game/cards/Renaissance/Rennaissance_Isabelle.class b/bin/game/cards/Renaissance/Rennaissance_Isabelle.class
index 7bd6ded..a783f37 100644
Binary files a/bin/game/cards/Renaissance/Rennaissance_Isabelle.class and b/bin/game/cards/Renaissance/Rennaissance_Isabelle.class differ
diff --git a/bin/game/cards/Renaissance/Rennaissance_Ivan.class b/bin/game/cards/Renaissance/Rennaissance_Ivan.class
index c1d5a5a..26b05d5 100644
Binary files a/bin/game/cards/Renaissance/Rennaissance_Ivan.class and b/bin/game/cards/Renaissance/Rennaissance_Ivan.class differ
diff --git a/bin/game/cards/Renaissance/Rennaissance_Leonard.class b/bin/game/cards/Renaissance/Rennaissance_Leonard.class
index 979d7a1..0757a03 100644
Binary files a/bin/game/cards/Renaissance/Rennaissance_Leonard.class and b/bin/game/cards/Renaissance/Rennaissance_Leonard.class differ
diff --git a/bin/game/cards/Renaissance/Rennaissance_Machiavel.class b/bin/game/cards/Renaissance/Rennaissance_Machiavel.class
index 5e56e29..b55e2df 100644
Binary files a/bin/game/cards/Renaissance/Rennaissance_Machiavel.class and b/bin/game/cards/Renaissance/Rennaissance_Machiavel.class differ
diff --git a/bin/game/cards/Renaissance/Rennaissance_Michel_Ange.class b/bin/game/cards/Renaissance/Rennaissance_Michel_Ange.class
index 95bc126..1fd5c2d 100644
Binary files a/bin/game/cards/Renaissance/Rennaissance_Michel_Ange.class and b/bin/game/cards/Renaissance/Rennaissance_Michel_Ange.class differ
diff --git a/bin/game/cards/Renaissance/Rennaissance_Nobunaga.class b/bin/game/cards/Renaissance/Rennaissance_Nobunaga.class
index efa76a3..9b2d0d3 100644
Binary files a/bin/game/cards/Renaissance/Rennaissance_Nobunaga.class and b/bin/game/cards/Renaissance/Rennaissance_Nobunaga.class differ
diff --git a/bin/game/cards/Renaissance/Rennaissance_Presse_Imprimer.class b/bin/game/cards/Renaissance/Rennaissance_Presse_Imprimer.class
index a32e14d..58ef5d5 100644
Binary files a/bin/game/cards/Renaissance/Rennaissance_Presse_Imprimer.class and b/bin/game/cards/Renaissance/Rennaissance_Presse_Imprimer.class differ
diff --git a/bin/game/cards/Renaissance/Rennaissance_Rabelais.class b/bin/game/cards/Renaissance/Rennaissance_Rabelais.class
index b02c203..2c58a52 100644
Binary files a/bin/game/cards/Renaissance/Rennaissance_Rabelais.class and b/bin/game/cards/Renaissance/Rennaissance_Rabelais.class differ
diff --git a/bin/game/cards/Renaissance/Rennaissance_Reforme.class b/bin/game/cards/Renaissance/Rennaissance_Reforme.class
index e614c9e..fadc25e 100644
Binary files a/bin/game/cards/Renaissance/Rennaissance_Reforme.class and b/bin/game/cards/Renaissance/Rennaissance_Reforme.class differ
diff --git a/bin/game/cards/Renaissance/Rennaissance_Shakespeare.class b/bin/game/cards/Renaissance/Rennaissance_Shakespeare.class
index 9a9a749..6538bd9 100644
Binary files a/bin/game/cards/Renaissance/Rennaissance_Shakespeare.class and b/bin/game/cards/Renaissance/Rennaissance_Shakespeare.class differ
diff --git a/bin/game/cards/Renaissance/Rennaissance_Skanderberg.class b/bin/game/cards/Renaissance/Rennaissance_Skanderberg.class
index c83888e..9dbfa21 100644
Binary files a/bin/game/cards/Renaissance/Rennaissance_Skanderberg.class and b/bin/game/cards/Renaissance/Rennaissance_Skanderberg.class differ
diff --git a/bin/game/cards/Renaissance/Rennaissance_Succession_Bourgogne.class b/bin/game/cards/Renaissance/Rennaissance_Succession_Bourgogne.class
index dca8767..447d259 100644
Binary files a/bin/game/cards/Renaissance/Rennaissance_Succession_Bourgogne.class and b/bin/game/cards/Renaissance/Rennaissance_Succession_Bourgogne.class differ
diff --git a/bin/game/cards/Renaissance/Rennaissance_Vlad.class b/bin/game/cards/Renaissance/Rennaissance_Vlad.class
index 9b1a7b7..8c0ed4a 100644
Binary files a/bin/game/cards/Renaissance/Rennaissance_Vlad.class and b/bin/game/cards/Renaissance/Rennaissance_Vlad.class differ
diff --git a/bin/game/deck/Deck.class b/bin/game/deck/Deck.class
index 79a81af..89e4469 100644
Binary files a/bin/game/deck/Deck.class and b/bin/game/deck/Deck.class differ
diff --git a/bin/game/deck/DeckRegistery.class b/bin/game/deck/DeckRegistery.class
index a884f08..5b41933 100644
Binary files a/bin/game/deck/DeckRegistery.class and b/bin/game/deck/DeckRegistery.class differ
diff --git a/bin/game/deck/MoyeneAge.class b/bin/game/deck/MoyeneAge.class
index bf2a287..af93d96 100644
Binary files a/bin/game/deck/MoyeneAge.class and b/bin/game/deck/MoyeneAge.class differ
diff --git a/bin/game/deck/Mythes.class b/bin/game/deck/Mythes.class
index 792e5f5..671c3f0 100644
Binary files a/bin/game/deck/Mythes.class and b/bin/game/deck/Mythes.class differ
diff --git a/bin/game/deck/Renaissance.class b/bin/game/deck/Renaissance.class
index add599d..c93b54b 100644
Binary files a/bin/game/deck/Renaissance.class and b/bin/game/deck/Renaissance.class differ
diff --git a/src/Serveur.java b/src/Serveur.java
index 4c50c1c..8e956c1 100644
--- a/src/Serveur.java
+++ b/src/Serveur.java
@@ -14,10 +14,10 @@ public class Serveur {
final String host = "localhost";
final int port = 10430;
+ //socket du serveur permet la connection de client
ServerSocket tCPserver = null;
try {
tCPserver = new ServerSocket(port, 50, InetAddress.getByName(host));
- //tCPserver.setSoTimeout();
} catch (UnknownHostException e1) {// cette exception ne s'affichera jammais vu que l'on utilise localhost
} catch (IOException e1) {
System.err.println(
@@ -27,6 +27,7 @@ public class Serveur {
System.out.println("server ready");
+ //la file d'attente
Socket joueur1EnAttente = null;
ComsJoueur joueur1Com = null;
Socket joueur2EnAttente = null;
diff --git a/src/game/Board.java b/src/game/Board.java
index 19bedac..938e84b 100644
--- a/src/game/Board.java
+++ b/src/game/Board.java
@@ -2,6 +2,10 @@ package game;
import game.cards.Card;
+/**
+ * cette classe est le terrain du jeu
+ * tout les carte placé sur le terrain sont stocké ici
+ */
public class Board {
private Card[] board;
diff --git a/src/game/Command.java b/src/game/Command.java
index 8caa0c2..56344d8 100644
--- a/src/game/Command.java
+++ b/src/game/Command.java
@@ -1,24 +1,33 @@
package game;
+
+/**
+ * cette classe contien une liste de commande utilisé entre le client et le serveur
+ */
public final class Command {
- private Command(){} // pas de contructor on ne veut pas instancier cette classe
- public static final String YOURTURN="yourturn";
- public static final String DRAW = "draw";
- public static final String GET_DECK = "getDeck";
- public static final String PUT_CARD = "putCard";
- public static final String PUT_ENEMY_CARD = "enemycard";
+
+ private Command(){} // pas de contructor on ne veut pas instancier cette classe
+ public static final String YOURTURN="yourturn"; // commande de debut de tours
+ public static final String DRAW = "draw"; //demande a pioché
+ public static final String GET_DECK = "getDeck"; // demande le deck
+ public static final String PUT_CARD = "putCard"; // place une carte
+ public static final String PUT_ENEMY_CARD = "enemycard"; // place une carte sur le terrain adverse
+ public static final String PASS_TURN = "passTurn"; // passe son tours
+ public static final String POPUP = "pupup"; // affiche un messsage
+ public static final String ENEMYTURN = "enemyTurn"; // tours enemy
+ public static final String SETMANA = "setmana"; // defini la mana
+ public static final String WIN = "win"; // gagne
+ public static final String LOSE = "lose"; // perds
+ public static final String PING = "ping"; //envoie un ping en l'attente d'un pong
+ public static final String PONG = "pong";
+ public static final String NOK = "nok"; // refuse une actoin
+ public static final String OK = "ok"; // accepte une actoin
+ public static final String MEULE = "meule"; // fait pioché mais n'ajoute pas a la main la carte sera donc perdu
+
+
+ //inutilisé
public static final String SHUFFLE_DECK = "shuffleDeck";
public static final String SELECT_CARD = "selectCard";
public static final String ATTACK = "attack";
public static final String DEFEND = "defend";
public static final String CAST_SPELL = "castSpell";
- public static final String PASS_TURN = "passTurn";
- public static final String POPUP = "pupup";
- public static final String ENEMYTURN = "enemyTurn";
- public static final String SETMANA = "setmana";
- public static final String WIN = "win";
- public static final String LOSE = "lose";
- public static final String PING = "ping";
- public static final String PONG = "pong";
- public static final String NOK = "nok";
- public static final String OK = "ok";
}
diff --git a/src/game/ComsJoueur.java b/src/game/ComsJoueur.java
index edf522f..dc49af3 100644
--- a/src/game/ComsJoueur.java
+++ b/src/game/ComsJoueur.java
@@ -16,13 +16,26 @@ public class ComsJoueur {
serverIn = new ObjectInputStream(connection.getInputStream());
this.socket=connection;
}
-
+
+ /**
+ * envoie un message sous forme de chaine de caractére
+ * le choix de la chaine de caractére permet déviter des crash on n'a pas euh de cours sur le reseau
+ * donc ce genre de communication est assez obscure pour nous
+ * @param message
+ * @throws IOException
+ */
public void send(String message) throws IOException
{
serverOut.writeObject(message);
System.out.println("Sending "+message);
}
-
+
+
+ /**
+ * recoit une chaine de caractére
+ * voire la description de send() pour des info suplementaire
+ * @return
+ */
public String recieve()
{
try {
@@ -34,26 +47,32 @@ public class ComsJoueur {
return "time out";
}
}
-
- public Object waitAndRecieve()
- {
- String returnVal;
- while((returnVal =(String) recieve())!= null);
- return returnVal;
- }
-
+
+ /**
+ * ferme la connection a la fin du match
+ * @throws IOException
+ */
public void close() throws IOException
{
serverOut.close();
serverIn.close();
}
-
+
+ /**
+ * retourne le socket de connection
+ * @return
+ */
public Socket getSocket() {
return socket;
}
- public void send(int cardId) throws IOException {
- send(""+cardId);
+ /**
+ * envoie un entier en le convertissant en chaine
+ * @param message
+ * @throws IOException
+ */
+ public void send(int message) throws IOException {
+ send(""+message);
}
}
diff --git a/src/game/DeckSerializer.java b/src/game/DeckSerializer.java
index fc17946..d068ef7 100644
--- a/src/game/DeckSerializer.java
+++ b/src/game/DeckSerializer.java
@@ -4,12 +4,23 @@ import game.cards.Card;
import game.deck.Deck;
public class DeckSerializer {
+ /**
+ * transforme le deck en chaine envoyable au client
+ * @param d
+ * @return
+ */
public static String serializeDeck(Deck d)
{
+ //la direction reste incertaine car on n'est pas sur de l'ordre des données recut
return forwardSerialisze(d);
}
-
+
+ /**
+ * sérialise le deck a l'envers
+ * @param d
+ * @return
+ */
private static String reverseSerialisze(Deck d)
{
StringBuilder str = new StringBuilder(d.getCards().size()*2);
@@ -20,7 +31,12 @@ public class DeckSerializer {
}
return str.toString();
}
-
+
+ /**
+ * sérialise la deck a l'endroit
+ * @param d
+ * @return
+ */
private static String forwardSerialisze(Deck d)
{
StringBuilder str = new StringBuilder(d.getCards().size()*2);
diff --git a/src/game/Hand.java b/src/game/Hand.java
index e7e6fbc..fe91683 100644
--- a/src/game/Hand.java
+++ b/src/game/Hand.java
@@ -9,40 +9,58 @@ import game.deck.Deck;
public class Hand {
List hand;
private Deck deck;
+ private static final int MAX_CARD_IN_HAND = 5;
public Hand(Deck deck) {
this.deck=deck;
this.hand = new ArrayList<>();
}
- //TODO limiter le nombre de carte
+ /**
+ * permet de piocher des carte depuis le deck et de les mettre dans la main
+ * @param i nombre de carte pioché
+ *
+ * si la main est pleine alors il arettra de pioché et se mettera a meulé
+ */
public void draw(int i) {
for(int j=0 ; j < i ; j++)
{
- hand.add(deck.getCards().pop());
+ if(!isFull())hand.add(deck.draw());
+ else{
+ //si la main est pleine alors la carte pioché est perdu
+ deck.draw();
+ }
}
}
/**
- * retourne l'index de la carte
+ * retourne la carte si elle est contenu dans la main de la carte
* @param c la classe de la carte cherché
- * @return -1 si elle n'est pas trouver
+ * @return null si elle n'est pas trouver
*/
- public int contains(Class extends Card> c) {
- int index = 0;
+ public Card contains(Class extends Card> c) {
for(Card ca : hand)
{
if(ca.getClass().equals(c))
{
- return index;
+ return ca;
}
- index++;
}
- return -1;
+ return null;
}
- public Card remove(int index) {
- return hand.remove(index);
+ /**
+ * retire la carte
+ * @param c carte a retirer
+ * @return si la carte a été retirer
+ */
+ public Boolean remove(Card c)
+ {
+ return hand.remove(c);
+
}
+ public boolean isFull() {
+ return hand.size() == MAX_CARD_IN_HAND;
+ }
}
diff --git a/src/game/Joueur.java b/src/game/Joueur.java
index 0c08981..06306c8 100644
--- a/src/game/Joueur.java
+++ b/src/game/Joueur.java
@@ -16,14 +16,18 @@ public class Joueur {
private int mana;
- public Joueur(ComsJoueur connectionJoueur) throws IOException {
+ public Joueur(ComsJoueur connectionJoueur) {
coms=connectionJoueur;
pV =20;
}
+ /**
+ * cette fonction permet d'obtenir le deck du joueur et de préparer la main
+ * @throws IOException
+ */
public void requestDataEarlyGameData() throws IOException {
- coms.send("getDeck");
- String deckname = (String) coms.recieve();
+ coms.send(Command.GET_DECK);
+ String deckname = coms.recieve();
deck = DeckRegistery.get(deckname);
deck.shuffle();
hand = new Hand(deck);
@@ -31,7 +35,12 @@ public class Joueur {
draw(5);
}
-
+
+ /**
+ * cette fonction permet de pioche une quantité donné
+ * @param amount la quantié
+ * @throws IOException
+ */
public void draw(int amount) throws IOException
{
coms.send(Command.DRAW);
@@ -39,18 +48,43 @@ public class Joueur {
hand.draw(amount);
}
+ /**
+ * affiche sur l'ecran que c'est le tours de l'adversaire
+ * @throws IOException
+ */
public void debutTourEnemie() throws IOException {
coms.send(Command.ENEMYTURN);
}
+ /**
+ * affiche un menu de victoire
+ * @throws IOException
+ */
public void win() throws IOException {
coms.send(Command.WIN);
}
-
+
+ /**
+ * affiche un menu de defaite
+ * @throws IOException
+ */
public void lose() throws IOException {
coms.send(Command.LOSE);
}
+ /**
+ * cette commande doit être utilisé a chaque début de tour elle permet d'augmenter la mana du joueur
+ * @throws IOException
+ */
+ public void prepMana() throws IOException {
+ //on prepare la mana
+ if(currentMana < 10)currentMana++;
+ mana=currentMana;
+ coms.send(Command.SETMANA);
+ coms.send(mana);
+ }
+
+
/**
* premiére phase de jeu avant d'attacker
* @param adversaire
@@ -58,23 +92,16 @@ public class Joueur {
* @throws IOException
*/
public void mainPhase1(Joueur adversaire, Board board) throws IOException {
- //on prepare la mana
- if(currentMana < 10)currentMana++;
- mana=currentMana;
- coms.send(Command.SETMANA);
- coms.send(mana);
-
- //on affiche le debut de tour
- coms.send(Command.YOURTURN);
System.out.println("NOW WE SHOULDN'T SEND COMMAND");
boolean phaseActive=true;
- //debut de l'écoude des action client
+ //on retire le time out sur l'adversaire car sa peut causer des désyncronisatoin et des crash
adversaire.getComs().getSocket().setSoTimeout(Integer.MAX_VALUE);
+ //debut de l'écoude des action client
while(phaseActive)
{
coms.getSocket().setSoTimeout(500);
- String command = (String) coms.recieve();
+ String command = coms.recieve();
coms.getSocket().setSoTimeout(Integer.MAX_VALUE);
if(command != null && !command.equals("time out"))
{
@@ -103,13 +130,16 @@ public class Joueur {
}
}
+ //cette mothode est utilisé l'orse qu'un joueur utilise Command.PLACECARD
+ //elle verifie si le joueur peut la jouer et refuse ou confirme en fonction
private void putCard(Joueur adversaire, Board board) throws IOException {
- //crash here
- String info = (String) coms.recieve();
+ String info = coms.recieve();
//si ce n'est pas un nombre
if(!info.matches("-?\\d+")) {
+ //alors on affiche l'inforamtion si la sortie d'erreur
System.err.println(info);
}else {
+ //on recupére la carte
int cardId = Integer.parseInt(info);
Class extends Card> cardClass = CardRegistery.get(cardId);
@@ -117,14 +147,20 @@ public class Joueur {
int zone = Integer.parseInt(coms.recieve());
-
- int handIndex = hand.contains(cardClass);
- if(handIndex == -1)coms.send(Command.NOK);
+
+
+ Card handCard = hand.contains(cardClass);
+
+ //si la carte n'est pas trouve ou si elle coute trop cher
+ if(handCard == null || mana < handCard.getCost()){
+ //on refuse le placement
+ coms.send(Command.NOK);
+ }
else {
if(board.isZoneAvaliable(zone))
{
- Card card = hand.remove(handIndex);
- board.setCard(zone, card);
+ hand.remove(handCard);
+ board.setCard(zone, handCard);
adversaire.enemyPlay(cardId,zone);
coms.send(Command.OK);
}else {
@@ -135,20 +171,23 @@ public class Joueur {
}
+ /**
+ * cette fonctoin est appelé affin de placer une carte sur le plateur énemie
+ * @param cardId
+ * @param zone
+ * @throws IOException
+ */
private void enemyPlay(int cardId,int zone) throws IOException {
coms.send(Command.PUT_ENEMY_CARD);
coms.send(cardId);
coms.send(zone);
}
- public void mainPhase2() {
- // TODO Auto-generated method stub
-
- }
-
+ /**
+ * cette methode a pour but d'executé les evenement de fin de trous des cartes
+ */
public void endPhase() {
// TODO Auto-generated method stub
-
}
public ComsJoueur getComs() {
@@ -168,10 +207,40 @@ public class Joueur {
{
return !isDead();
}
-
+
+ /**
+ * envoie le message donné qui aparaitera alors comme une toast
+ * @param message
+ * @throws IOException
+ */
public void sendMessage(String message) throws IOException
{
- coms.send("pupup");
+ coms.send(Command.POPUP);
coms.send(message);
}
+
+ /**
+ * affiche le debut de tours
+ * @throws IOException
+ */
+ public void yourturn() throws IOException {
+ //on affiche le debut de tour
+ coms.send(Command.YOURTURN);
+ }
+
+
+ public boolean isHandFull() {
+ return hand.isFull();
+ }
+
+ /**
+ * retire le nombre de carte donné du deck
+ * @param nbcard nombre de carte a supprimé
+ * @throws IOException
+ */
+ public void meule(int nbcard) throws IOException {
+ coms.send(Command.MEULE);
+ coms.send(nbcard);
+ deck.draw(1);
+ }
}
diff --git a/src/game/Match.java b/src/game/Match.java
index 7c0ed88..35138fc 100644
--- a/src/game/Match.java
+++ b/src/game/Match.java
@@ -5,7 +5,6 @@ import java.util.Random;
public class Match extends Thread {
Joueur joueur1, joueur2;
- int tour = 1;
private Board board;
private Random rand;
@@ -39,6 +38,7 @@ public class Match extends Thread {
tour(joueur2);
} catch (IOException e) {
endGameAfterIssue();
+ return;
}
}
try {
@@ -48,6 +48,9 @@ public class Match extends Thread {
}
}
+ /**
+ * si le jeu a un crash il faut que si un joueur ai perdu la connection l'autre gagne
+ */
private void endGameAfterIssue() {
if(PlayerTesteur.playerTest(joueur1.getComs()))
{
@@ -65,8 +68,12 @@ public class Match extends Thread {
e.printStackTrace();
}
}
- joueur1.setPV(0);
- joueur2.setPV(0);
+ try {
+ joueur1.getComs().close();
+ } catch (IOException e) {}
+ try {
+ joueur2.getComs().close();
+ } catch (IOException e) {}
}
//annonce du vainqueur et du perdant
@@ -78,21 +85,38 @@ public class Match extends Thread {
joueur1.win();
joueur2.lose();
}
+ joueur1.getComs().close();
+ joueur2.getComs().close();
}
- //enchainement d'action que fait un joueur durant son tour
+ /**
+ * enchainement d'acction effectué durant un tours
+ * @param joueur joueur effectuant les actions
+ * @throws IOException
+ */
private void tour(Joueur joueur) throws IOException {
//on affiche le message du debut de tour enemie
Joueur enemy = joueur.equals(joueur1) ? joueur2 : joueur1;
+
+ //si la main du joeur n'est pas pleine
+ if(!joueur.isHandFull())joueur.draw(1); //pioche 1 carte
+ else{
+ //sinon on pert une carte
+ joueur.meule(1);
+ }
+ //on prepare la mana
+ joueur.prepMana();
+ //on dit au joeur que c'est a lui de jouer
+ joueur.yourturn();
+ //et on dit au joueur oposé que ce n'est pas le tien
enemy.debutTourEnemie();
- joueur.draw(1); //pioche 1 carte
-
+
joueur.mainPhase1(enemy,board); //Joue autant de carte qu'il veut/peut
battlePhase(joueur);//lance des attaques à son adversaire qui peut répliquer
- //ne sera peut-ếtre pas utilisé vu que on sapproche trop vite de la datte butoire
- joueur.endPhase();//fin du tour du @joueur peut être utiliser pour les actions auto des cartes
+ //cette phases ne serira surment pas car nous manquon de temps pour implrementer les fonctionnalité specifique de certaine cartes
+ joueur.endPhase();//fin du tour du @joueur
}
private void battlePhase(Joueur joueur) {
diff --git a/src/game/PlayerTesteur.java b/src/game/PlayerTesteur.java
index 49a181c..c84319c 100644
--- a/src/game/PlayerTesteur.java
+++ b/src/game/PlayerTesteur.java
@@ -3,8 +3,12 @@ package game;
import java.io.IOException;
public class PlayerTesteur {
-
-
+
+ /**
+ * test si un joueur est planté ou non
+ * @param com un ComsJoeur correspondant au joueur
+ * @return false si le joeur est hs
+ */
public static boolean playerTest(ComsJoueur com)
{
try {
diff --git a/src/game/SimpleUDP.java b/src/game/SimpleUDP.java
deleted file mode 100644
index acd5e62..0000000
--- a/src/game/SimpleUDP.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package game;
-
-import java.io.IOException;
-import java.net.DatagramPacket;
-import java.net.DatagramSocket;
-import java.net.InetAddress;
-import java.net.Socket;
-
-public class SimpleUDP {
- private byte[] buf;
- private DatagramSocket uDPServeur;
- private InetAddress address;
- private static int port;
-
- public SimpleUDP(DatagramSocket uDPServeur,Socket baseSocket)
- {
- this.uDPServeur=uDPServeur;
- this.address=baseSocket.getInetAddress();
- port = baseSocket.getPort();
- }
-
- public void sendPacket(String message) throws IOException
- {
- DatagramPacket packet
- = new DatagramPacket(buf, buf.length, address, port);
- uDPServeur.send(packet);
- }
-
- public String recivePacket() throws IOException
- {
- DatagramPacket packet = new DatagramPacket(buf, buf.length);
- uDPServeur.receive(packet);
- return new String(packet.getData(), 0, packet.getLength());
- }
-}
diff --git a/src/game/cards/Card.java b/src/game/cards/Card.java
index 71710a0..2c627af 100644
--- a/src/game/cards/Card.java
+++ b/src/game/cards/Card.java
@@ -25,7 +25,16 @@ public abstract class Card{
return health;
}
+ /**
+ * l'attack par defaut des cartes
+ * @return
+ */
public abstract int getDefaultAttack();
+
+ /**
+ * les point de vie par default de la carte
+ * @return
+ */
public abstract int getDefaultHealth();
/**
diff --git a/src/game/cards/CardRegistery.java b/src/game/cards/CardRegistery.java
index e1a4ea5..bb80fa7 100644
--- a/src/game/cards/CardRegistery.java
+++ b/src/game/cards/CardRegistery.java
@@ -94,6 +94,9 @@ import game.cards.Renaissance.Rennaissance_Skanderberg;
import game.cards.Renaissance.Rennaissance_Succession_Bourgogne;
import game.cards.Renaissance.Rennaissance_Vlad;
+/**
+ * cette carte est un registre contenant toutes les cartes cela permet de sérialisé les cartes entre le client et le servuer avec un minimum d'information
+ */
public class CardRegistery {
public static List> registry;
@@ -204,25 +207,32 @@ public class CardRegistery {
registry.add(Moyen_Age_Pouvoir_Du_Franc.class);
}
+ /**
+ * retourne l'index de la carte donné en argument
+ * @param class1 la class de la carte
+ * @return index
+ */
public static int get(Class extends Card> class1) {
- checkregistry();
+ checkRegistry();
int a = registry.indexOf(class1);
return a != -1 ? a : 0;
}
+ /**
+ * retourne la class de la carte a l'index donné
+ * @param index index de la class
+ * @return class de la carte
+ */
public static Class extends Card> get(int index) {
- checkregistry();
+ checkRegistry();
if(registry.size() <= index || index < 0) return null;
return registry.get(index);
}
-
- public static int get(Card card) {
- checkregistry();
- return get(card.getClass());
- }
-
- public static void checkregistry()
+ /**
+ * verifie si le registre existe sinon le crée
+ */
+ private static void checkRegistry()
{
if(registry == null)initCardRegistery();
}
diff --git a/src/game/deck/Deck.java b/src/game/deck/Deck.java
index a2119fe..0ed0f77 100644
--- a/src/game/deck/Deck.java
+++ b/src/game/deck/Deck.java
@@ -1,6 +1,8 @@
package game.deck;
+import java.util.ArrayList;
import java.util.Collections;
+import java.util.List;
import java.util.Stack;
import game.cards.Card;
@@ -9,9 +11,36 @@ public abstract class Deck {
public abstract Stack getCards();
+ /**
+ * mélange le deck
+ * /!\ il faut envoyer le deck au client une fois mélanger
+ */
public void shuffle()
{
Collections.shuffle(getCards());
}
+ /**
+ * retire une carte de deck
+ * @return la carte retirer
+ */
+ public Card draw()
+ {
+ return getCards().pop();
+ }
+
+ /**
+ * retire une liste de carte
+ * @param amount
+ * @return
+ */
+ public List draw(int amount)
+ {
+ List cards = new ArrayList<>();
+ for(int i = 0 ; i < amount ; i++)
+ {
+ cards.add(draw());
+ }
+ return cards;
+ }
}
diff --git a/src/game/deck/DeckRegistery.java b/src/game/deck/DeckRegistery.java
index fd53072..4d0658b 100644
--- a/src/game/deck/DeckRegistery.java
+++ b/src/game/deck/DeckRegistery.java
@@ -1,6 +1,19 @@
package game.deck;
+/**
+ * registre de deck
+ * le client ne sais pas quelles cartes apartienne a quel deck
+ * cette information est conservé uniquement sur le serveur donc le client demande un deck
+ * et le serveur le sert
+ * d'ou l'interet d'un registre de deck
+ */
public class DeckRegistery {
+
+ /**
+ * retourne un nouveau deck en fonction du nom donné
+ * @param name
+ * @return
+ */
public static Deck get(String name)
{
switch (name.trim()) {
@@ -11,7 +24,7 @@ public class DeckRegistery {
case "renaissance":
return new Renaissance();
default:
- System.out.println(name);
+ System.out.println("deck non trouvé :"+name);
return new MoyeneAge();
}
}