Skip to content
Open

hm_2 #1037

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions homeworks/HW2/build.gradle
Original file line number Diff line number Diff line change
@@ -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' }
}
1 change: 1 addition & 0 deletions homeworks/HW2/settings.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
rootProject.name = 'BullsAndCows'
87 changes: 87 additions & 0 deletions homeworks/HW2/src/main/java/game/BullsAndCows.java
Original file line number Diff line number Diff line change
@@ -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<Character> word_list, List<Character> 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<Character> word_list, List<Character> 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<Character> word_list = new ArrayList<Character>();
List<Character> guess_word_list = new ArrayList<Character>();
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<String> 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<String> 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();
}
}
26 changes: 26 additions & 0 deletions homeworks/HW2/src/main/java/game/ResourceReader.java
Original file line number Diff line number Diff line change
@@ -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<String> readFromResource(String resourceName)
throws IOException {
InputStream inputStream = ResourceReader.class.getClassLoader().getResourceAsStream(resourceName);
ArrayList<String> lines = new ArrayList<>();
try (BufferedReader br = new BufferedReader(new InputStreamReader(inputStream))) {
String line;
while ((line = br.readLine()) != null) {
lines.add(line);
}
}
return lines;
}
}