diff --git a/homeworks/HW2/build.gradle b/homeworks/HW2/build.gradle new file mode 100644 index 0000000000..62adc7d11e --- /dev/null +++ b/homeworks/HW2/build.gradle @@ -0,0 +1,22 @@ +repositories { + mavenCentral() +} + +apply plugin: 'java' +//apply plugin: 'checkstyle' + +dependencies { + // https://mvnrepository.com/artifact/junit/junit + testCompile group: 'junit', name: 'junit', version: '4.4' +} +/* +checkstyle { + ignoreFailures = false + toolVersion = '7.5' + configFile = new File('../config/checkstyle/checkstyle.xml') +}*/ + +jar { + //from configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } + manifest { attributes 'Main-Class': 'game.BullsAndCows' } +} \ No newline at end of file diff --git a/homeworks/HW2/settings.gradle b/homeworks/HW2/settings.gradle new file mode 100644 index 0000000000..12e0c6eef2 --- /dev/null +++ b/homeworks/HW2/settings.gradle @@ -0,0 +1 @@ +rootProject.name = 'BullsAndCows' \ No newline at end of file diff --git a/homeworks/HW2/src/main/java/game/BullsAndCows.java b/homeworks/HW2/src/main/java/game/BullsAndCows.java new file mode 100644 index 0000000000..8fb0c99578 --- /dev/null +++ b/homeworks/HW2/src/main/java/game/BullsAndCows.java @@ -0,0 +1,87 @@ +package game; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.Random; +import java.util.Scanner; + +public class BullsAndCows { + private int Handle_bulls(char[] word_ar, char[] guess_word_ar, List word_list, List guess_word_list) { + int bulls = 0; + for (int i = 0; i < Math.min(word_ar.length, guess_word_ar.length); i++) { + if (word_ar[i] == guess_word_ar[i]){ + bulls++; + } else { + word_list.add(word_ar[i]); + guess_word_list.add(guess_word_ar[i]); + } + } + return bulls; + } + + private int Handle_cows(List word_list, List guess_word_list) { + int cows = 0; + for (char c : guess_word_list) { + for (int i = 0; i < word_list.size(); i++) { + if (c == word_list.get(i)) { + cows++; + word_list.remove(i); + i--; + break; + } + } + } + return cows; + } + private void Give_hint(String word, String guess_word){ + char[] word_ar = word.toCharArray(); + char[] guess_word_ar = guess_word.toCharArray(); + List word_list = new ArrayList(); + List guess_word_list = new ArrayList(); + int bulls = Handle_bulls(word_ar, guess_word_ar, word_list, guess_word_list); + int cows = Handle_cows(word_list, guess_word_list); + System.out.println("Bulls: " + bulls); + System.out.println("Cows: " + cows); + + } + + private String Get_random_word(List lines){ + int size = lines.size(); + Random rnd = new Random(); + int index = rnd.nextInt(size-1); + return lines.get(index); + } + public void Run() throws IOException { + boolean play = true; + boolean won = false; + while (play) { + List lines = ResourceReader.readFromResource("dictionary.txt"); + String word = Get_random_word(lines); + //String word = "java"; + System.out.println("Welcome to Bulls and Cows game!"); + System.out.println("I offered a " + word.length() + "-letter word, your guess?"); + Scanner sc = new Scanner(System.in); + + for (int i = 0; i < 10; i++) { + String guess_word = sc.nextLine(); + if (guess_word.equals(word)) { + won = true; + System.out.println("You won!"); + break; + } + Give_hint(word, guess_word); + } + if (!won) System.out.println("You lose:("); + System.out.println("Wanna play again? Y/N"); + String user_ans = sc.nextLine(); + if (user_ans.length() > 1 || user_ans.charAt(0) != 'Y') play = false; + } + + } + + public static void main(String[] args) throws IOException { + BullsAndCows new_game = new BullsAndCows(); + new_game.Run(); + } +} diff --git a/homeworks/HW2/src/main/java/game/ResourceReader.java b/homeworks/HW2/src/main/java/game/ResourceReader.java new file mode 100644 index 0000000000..caeb1656de --- /dev/null +++ b/homeworks/HW2/src/main/java/game/ResourceReader.java @@ -0,0 +1,26 @@ +package game; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.util.ArrayList; +import java.util.List; + +/** + * Created by a.pomosov on 07/03/2018. + */ +public class ResourceReader { + public static List readFromResource(String resourceName) + throws IOException { + InputStream inputStream = ResourceReader.class.getClassLoader().getResourceAsStream(resourceName); + ArrayList lines = new ArrayList<>(); + try (BufferedReader br = new BufferedReader(new InputStreamReader(inputStream))) { + String line; + while ((line = br.readLine()) != null) { + lines.add(line); + } + } + return lines; + } +} diff --git a/homeworks/HW2/dictionary.txt b/homeworks/HW2/src/main/resources/dictionary.txt similarity index 100% rename from homeworks/HW2/dictionary.txt rename to homeworks/HW2/src/main/resources/dictionary.txt