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; + } +}