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 index 4e626b0..6911d98 100644 --- 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 @@ -1,15 +1,62 @@ package Controllers; +import java.util.*; + import Models.Word; +import Models.Difficulty; public class Game { private Word word; private int errors; + private List allwords; + private Difficulty difficulty; private final int maxErrors = 6; - public Game(Word word) { + /* 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.get(0); + } + + /* 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 = allwords.get(0).VerifyLetter(caractere) || word.get(1).VerifyLetter(caractere); + } else{ + correct = word.VerifyLetter(caractere); + } + + if (!correct) errors++; + return correct; } /* Verify error number */ @@ -21,24 +68,13 @@ public class Game { return this.maxErrors; } - /* Vue call method VerifyLetter, check status letter false/True */ - public boolean playLetter(char c) { - boolean correct = word.VerifyLetter(c); - - if (!correct) { - errors++; - } - - return correct; - } - /* All letter is completed : Won */ public boolean isWon() { - return word.IsComplete(); + return word.IsComplet(); } /* Lost if maxErrors is greater than or egal to errors */ public boolean isLost() { return errors >= maxErrors; - } -} \ 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..cd5608a --- /dev/null +++ b/TD3_DEV51_Qualite_Algo/src/main/java/fr/iutfbleau/TD3_DEV51_Qualite_Algo/Models/Difficulty.java @@ -0,0 +1,5 @@ +package 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 index fb1115f..082834d 100644 --- 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 @@ -1,4 +1,4 @@ -package fr.iutfbleau.TD3_DEV51_Qualite_Algo.Models; +package Models; public class Letter{ private char letter; 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 index 3c3404a..d3ef35d 100644 --- 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 @@ -1,11 +1,11 @@ -package fr.iutfbleau.TD3_DEV51_Qualite_Algo.Models; +package Models; import java.util.*; public class Word { private final String word; private Letter[] tabLetter; - private String c; + private String character; private Word(String word){ this.word = word; @@ -14,11 +14,11 @@ public class Word { } } /* Lettre dans le mot */ - private boolean VerifyLetter(char c){ + public boolean VerifyLetter(char character){ boolean return_bool = false; for(Letter letter : this.tabLetter){ if(!letter.getStatus()){ - if(letter.isGood(c)){ + if(letter.isGood(character)){ return_bool = true; } } @@ -27,7 +27,7 @@ public class Word { } /* Le mot a été deviné */ - private boolean IsComplet(){ + public boolean IsComplet(){ for(Letter letter : this.tabLetter){ if(!letter.getStatus()){ return false; @@ -36,5 +36,12 @@ public class Word { } return true; } + public String getWord() { + return word; + } + public Word get(int i) { + // TODO Auto-generated method stub + throw new UnsupportedOperationException("Unimplemented method 'get'"); + } } \ No newline at end of file