diff --git a/.idea/TD3_DEV51_Qualite_Algo.iml b/.idea/TD3_DEV51_Qualite_Algo.iml
new file mode 100644
index 0000000..d6ebd48
--- /dev/null
+++ b/.idea/TD3_DEV51_Qualite_Algo.iml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/TD3_DEV51_Qualite_Algo/.idea/.gitignore b/TD3_DEV51_Qualite_Algo/.idea/.gitignore
new file mode 100644
index 0000000..13566b8
--- /dev/null
+++ b/TD3_DEV51_Qualite_Algo/.idea/.gitignore
@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/TD3_DEV51_Qualite_Algo/.idea/compiler.xml b/TD3_DEV51_Qualite_Algo/.idea/compiler.xml
new file mode 100644
index 0000000..7cea7f6
--- /dev/null
+++ b/TD3_DEV51_Qualite_Algo/.idea/compiler.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/TD3_DEV51_Qualite_Algo/.idea/encodings.xml b/TD3_DEV51_Qualite_Algo/.idea/encodings.xml
new file mode 100644
index 0000000..6c65712
--- /dev/null
+++ b/TD3_DEV51_Qualite_Algo/.idea/encodings.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/TD3_DEV51_Qualite_Algo/.idea/jarRepositories.xml b/TD3_DEV51_Qualite_Algo/.idea/jarRepositories.xml
new file mode 100644
index 0000000..712ab9d
--- /dev/null
+++ b/TD3_DEV51_Qualite_Algo/.idea/jarRepositories.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/TD3_DEV51_Qualite_Algo/.idea/misc.xml b/TD3_DEV51_Qualite_Algo/.idea/misc.xml
new file mode 100644
index 0000000..001e756
--- /dev/null
+++ b/TD3_DEV51_Qualite_Algo/.idea/misc.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/TD3_DEV51_Qualite_Algo/.idea/vcs.xml b/TD3_DEV51_Qualite_Algo/.idea/vcs.xml
new file mode 100644
index 0000000..6c0b863
--- /dev/null
+++ b/TD3_DEV51_Qualite_Algo/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/TD3_DEV51_Qualite_Algo/resources/HangedGirl.jpg b/TD3_DEV51_Qualite_Algo/resources/HangedGirl.jpg
new file mode 100644
index 0000000..a769ef4
Binary files /dev/null and b/TD3_DEV51_Qualite_Algo/resources/HangedGirl.jpg differ
diff --git a/TD3_DEV51_Qualite_Algo/src/main/java/fr/iutfbleau/TD3_DEV51_Qualite_Algo/Controllers/Game.java b/TD3_DEV51_Qualite_Algo/src/main/java/fr/iutfbleau/TD3_DEV51_Qualite_Algo/Controllers/Game.java
new file mode 100644
index 0000000..96787c2
--- /dev/null
+++ b/TD3_DEV51_Qualite_Algo/src/main/java/fr/iutfbleau/TD3_DEV51_Qualite_Algo/Controllers/Game.java
@@ -0,0 +1,80 @@
+package fr.iutfbleau.TD3_DEV51_Qualite_Algo.Controllers;
+
+import fr.iutfbleau.TD3_DEV51_Qualite_Algo.Models.Difficulty;
+import fr.iutfbleau.TD3_DEV51_Qualite_Algo.Models.Word;
+
+import java.util.*;
+
+public class Game {
+ private Word word;
+ private int errors;
+ private List allwords;
+ private Difficulty difficulty;
+ private final int maxErrors = 6;
+
+ /* Hangmam Game */
+ public Game(Word word ,List allWord) {
+ this.word = word;
+ this.errors = 0;
+
+ switch (difficulty) {
+ case EASY:
+ this.word = selectWord(allWord, 0 , 7 );
+ break;
+ case MEDIUM:
+ this.word = selectWord(allWord, 0, Integer.MAX_VALUE);
+ break;
+ case HARD:
+ this.allwords = selectTwoWords(allWord);
+ break;
+ }
+ }
+
+ /* Selected Word with conditions */
+ private Word selectWord(List list, int min, int max) {
+ for (Word word : list) {
+ int length = word.getWord().length();
+ if (length >= min && length <= max) {
+ return word;
+ }
+ }
+ return list.getFirst();
+ }
+
+ /* Selected word level Difficult */
+ private List selectTwoWords(List list) {
+ return list.subList(0, Math.min(2, list.size()));
+ }
+
+ public boolean playLetter(char caractere) {
+ boolean correct;
+
+ if(difficulty == Difficulty.HARD){
+ correct = this.allwords.get(0).VerifyLetter(caractere) || this.allwords.get(1).VerifyLetter(caractere);
+ } else{
+ correct = word.VerifyLetter(caractere);
+ }
+
+ if (!correct) errors++;
+ return correct;
+ }
+
+ /* Verify error number */
+ public int getErrors() {
+ return this.errors;
+ }
+ /* Put error max */
+ public int getMaxErrors() {
+ return this.maxErrors;
+ }
+
+ /* All letter is completed : Won */
+ public boolean isWon() {
+ return word.IsComplete();
+ }
+
+ /* Lost if maxErrors is greater than or egal to errors */
+ public boolean isLost() {
+ return errors >= maxErrors;
+ }
+}
diff --git a/TD3_DEV51_Qualite_Algo/src/main/java/fr/iutfbleau/TD3_DEV51_Qualite_Algo/Main.java b/TD3_DEV51_Qualite_Algo/src/main/java/fr/iutfbleau/TD3_DEV51_Qualite_Algo/Main.java
new file mode 100644
index 0000000..f0b628f
--- /dev/null
+++ b/TD3_DEV51_Qualite_Algo/src/main/java/fr/iutfbleau/TD3_DEV51_Qualite_Algo/Main.java
@@ -0,0 +1,7 @@
+package fr.iutfbleau.TD3_DEV51_Qualite_Algo;
+
+public class Main {
+ public static void main(String[] args) {
+
+ }
+}
\ No newline at end of file
diff --git a/TD3_DEV51_Qualite_Algo/src/main/java/fr/iutfbleau/TD3_DEV51_Qualite_Algo/Models/Difficulty.java b/TD3_DEV51_Qualite_Algo/src/main/java/fr/iutfbleau/TD3_DEV51_Qualite_Algo/Models/Difficulty.java
new file mode 100644
index 0000000..5a4b609
--- /dev/null
+++ b/TD3_DEV51_Qualite_Algo/src/main/java/fr/iutfbleau/TD3_DEV51_Qualite_Algo/Models/Difficulty.java
@@ -0,0 +1,5 @@
+package fr.iutfbleau.TD3_DEV51_Qualite_Algo.Models;
+
+public enum Difficulty {
+ EASY, MEDIUM, HARD
+}
\ No newline at end of file
diff --git a/TD3_DEV51_Qualite_Algo/src/main/java/fr/iutfbleau/TD3_DEV51_Qualite_Algo/Models/Letter.java b/TD3_DEV51_Qualite_Algo/src/main/java/fr/iutfbleau/TD3_DEV51_Qualite_Algo/Models/Letter.java
new file mode 100644
index 0000000..fb1115f
--- /dev/null
+++ b/TD3_DEV51_Qualite_Algo/src/main/java/fr/iutfbleau/TD3_DEV51_Qualite_Algo/Models/Letter.java
@@ -0,0 +1,22 @@
+package fr.iutfbleau.TD3_DEV51_Qualite_Algo.Models;
+
+public class Letter{
+ private char letter;
+ private boolean status = false;
+
+ public Letter(char letter){
+ this.letter = letter;
+ }
+ /* Show status */
+ public boolean getStatus(){
+ return status;
+ }
+ /* Verify status true, false */
+ public boolean isGood(char c){
+ if( this.letter == c){
+ this.status = true;
+ return true;
+ }
+ return false;
+ }
+}
\ No newline at end of file
diff --git a/TD3_DEV51_Qualite_Algo/src/main/java/fr/iutfbleau/TD3_DEV51_Qualite_Algo/Models/Word.java b/TD3_DEV51_Qualite_Algo/src/main/java/fr/iutfbleau/TD3_DEV51_Qualite_Algo/Models/Word.java
new file mode 100644
index 0000000..c3a1978
--- /dev/null
+++ b/TD3_DEV51_Qualite_Algo/src/main/java/fr/iutfbleau/TD3_DEV51_Qualite_Algo/Models/Word.java
@@ -0,0 +1,43 @@
+package fr.iutfbleau.TD3_DEV51_Qualite_Algo.Models;
+
+import java.util.*;
+
+public class Word {
+ private final String word;
+ private Letter[] tabLetter;
+ private String character;
+
+ private Word(String word){
+ this.word = word;
+ for(int i = 0; i< this.word.length();i++){
+ this.tabLetter[i] = new Letter(this.word.charAt(i));
+ }
+ }
+ /* Lettre dans le mot */
+ public boolean VerifyLetter(char character){
+ boolean return_bool = false;
+ for(Letter letter : this.tabLetter){
+ if(!letter.getStatus()){
+ if(letter.isGood(character)){
+ return_bool = true;
+ }
+ }
+ }
+ return return_bool;
+ }
+
+ /* Le mot a été deviné */
+ public boolean IsComplete(){
+ for(Letter letter : this.tabLetter){
+ if(!letter.getStatus()){
+ return false;
+ }
+
+ }
+ return true;
+ }
+ public String getWord() {
+ return word;
+ }
+
+}
\ No newline at end of file
diff --git a/TD3_DEV51_Qualite_Algo/src/main/java/fr/iutfbleau/TD3_DEV51_Qualite_Algo/View/hangedManView.java b/TD3_DEV51_Qualite_Algo/src/main/java/fr/iutfbleau/TD3_DEV51_Qualite_Algo/View/hangedManView.java
new file mode 100644
index 0000000..e9ef442
--- /dev/null
+++ b/TD3_DEV51_Qualite_Algo/src/main/java/fr/iutfbleau/TD3_DEV51_Qualite_Algo/View/hangedManView.java
@@ -0,0 +1,75 @@
+package fr.iutfbleau.TD3_DEV51_Qualite_Algo.View;
+import javax.imageio.ImageIO;
+import javax.swing.*;
+import java.awt.*;
+import java.io.File;
+import java.io.IOException;
+
+
+public class hangedManView extends JComponent {
+
+ private int state;
+
+ public hangedManView() throws IOException {
+ super();
+ this.state = 0;
+ }
+
+ protected void paintComponent(Graphics g) {
+ super.paintComponent(g);
+ Graphics2D g2d = (Graphics2D) g;
+
+ int x = 150;
+ int y = 200;
+
+
+ if(this.state > 8) {
+ // paint une image
+ g2d.drawImage(new ImageIcon(Thread.currentThread().getContextClassLoader().getResource("resources/HangedGirl.jpg")).getImage(), x, y, this);
+ }else{
+ // on paint un homme batton
+ // Base
+ if (this.state > 0) {
+ g2d.drawLine(x - 100, y + 100, x + 100, y + 100);
+ }
+ // Poteau vertical
+ if (this.state > 1) {
+ g2d.drawLine(x - 50, y + 100, x - 50, y - 100);
+ }
+ // Traverse horizontale
+ if (this.state > 2) {
+ g2d.drawLine(x - 50, y - 100, x + 50, y - 100);
+ }
+ // Petite corde verticale
+ if (this.state > 3) {
+ g2d.drawLine(x + 50, y - 100, x + 50, y - 70);
+ }
+
+ x += 50;
+ y -= 40;
+
+ // Tête
+ if (this.state > 4) {
+ g2d.drawOval(x - 15, y - 30, 30, 30);
+ }
+ // Corps
+ if (this.state > 5) {
+ g2d.drawLine(x, y, x, y + 40);
+ }
+ // Bras
+ if (this.state > 6) {
+ g2d.drawLine(x, y + 10, x - 20, y + 20);
+ g2d.drawLine(x, y + 10, x + 20, y + 20);
+ }
+ // Jambes
+ if (this.state > 7) {
+ g2d.drawLine(x, y + 40, x - 20, y + 70);
+ g2d.drawLine(x, y + 40, x + 20, y + 70);
+ }
+ }
+ }
+
+ public void setState(int state) {
+ this.state = state;
+ }
+}