Skip to content

Commit 3dd169b

Browse files
committed
Edits made
1 parent 6567878 commit 3dd169b

File tree

7 files changed

+77
-91
lines changed

7 files changed

+77
-91
lines changed

app/src/main/java/hexlet/code/Engine.java

Lines changed: 27 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -6,46 +6,23 @@
66
public class Engine {
77
private static final int NUMBER_OF_QUESTION = 0;
88
private static final int NUMBER_OF_ANSWER = 1;
9+
public static final int COUNT_LEVELS = 3;
910

10-
public static String greeting() {
11-
System.out.println("Welcome to the Brain Games!");
12-
System.out.print("May I have your name ? ");
13-
String userName = Engine.getUserInput();
14-
System.out.println("Hello, " + userName + "!");
15-
return userName;
16-
}
1711

18-
private static String getUserInput() {
12+
public static void startLevels(String gameRule, String[][]levels) {
1913
Scanner inputStr = new Scanner(System.in);
20-
return inputStr.next().trim();
21-
}
22-
public static void wrongAnswer(String userAnswer, String rightAnswer, String userName) {
23-
String wrongMassage = "'"
24-
+ userAnswer
25-
+ "' is wrong answer ;(. Correct answer was '"
26-
+ rightAnswer
27-
+ "'.";
28-
29-
String restartMassage = "Let's try again, "
30-
+ userName
31-
+ "!";
32-
33-
System.out.println(wrongMassage);
34-
System.out.println(restartMassage);
35-
}
36-
37-
public static void startLevels(String gameRule, String[][]date) {
38-
String userName = Engine.greeting();
14+
System.out.println("Welcome to the Brain Games!");
15+
String userName = getUserName(inputStr);
3916
System.out.println(gameRule);
4017

41-
for (String[] level : date) {
18+
for (String[] level : levels) {
4219
String question = level[NUMBER_OF_QUESTION];
4320
String rightAnswer = level[NUMBER_OF_ANSWER];
4421

4522
System.out.println("Question: " + question);
4623

4724
System.out.print("Your answer: ");
48-
String userAnswer = Engine.getUserInput();
25+
String userAnswer = inputStr.next().trim();
4926
if (!userAnswer.equalsIgnoreCase(rightAnswer)) {
5027
Engine.wrongAnswer(userAnswer, rightAnswer, userName);
5128
return;
@@ -54,4 +31,25 @@ public static void startLevels(String gameRule, String[][]date) {
5431
}
5532
System.out.println("Congratulations, " + userName + "!");
5633
}
34+
public static void wrongAnswer(String userAnswer, String rightAnswer, String userName) {
35+
String wrongMassage = "'"
36+
+ userAnswer
37+
+ "' is wrong answer ;(. Correct answer was '"
38+
+ rightAnswer
39+
+ "'.";
40+
41+
String restartMassage = "Let's try again, "
42+
+ userName
43+
+ "!";
44+
45+
System.out.println(wrongMassage);
46+
System.out.println(restartMassage);
47+
}
48+
private static String getUserName(Scanner inputStream) {
49+
System.out.print("May I have your name ? ");
50+
String userName = inputStream.next().trim();
51+
System.out.println("Hello, " + userName + "!");
52+
return userName;
53+
}
54+
5755
}

app/src/main/java/hexlet/code/games/Calc.java

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,22 +6,20 @@ public class Calc {
66
private static final String[] SYMBOLS_OPERATION = {"+", "-", "*"};
77
private static final int MAX_NUMBER = 10;
88
private static final int MIN_NUMBER = 1;
9-
private static final int COUNT_LEVELS = 3;
9+
1010

1111
public static void startGame() {
1212

13-
String[][] result = new String[COUNT_LEVELS][2];
13+
String[][] result = new String[Engine.COUNT_LEVELS][2];
1414
for (int level = 0; level < result.length; level++) {
15-
for (int i = 0; i < result[level].length; i++) {
16-
int leftArgument = Utils.randomIntValue(MIN_NUMBER, MAX_NUMBER);
17-
int rightArgument = Utils.randomIntValue(MIN_NUMBER, MAX_NUMBER);
18-
int numberOfOperation = Utils.randomIntValue(0, SYMBOLS_OPERATION.length);
19-
20-
String question = leftArgument + " " + SYMBOLS_OPERATION[numberOfOperation] + " " + rightArgument;
21-
int rightAnswer = Calc.getRightAnswer(leftArgument, rightArgument, numberOfOperation);
22-
result[level][0] = question;
23-
result[level][1] = Integer.toString(rightAnswer);
24-
}
15+
int leftArgument = Utils.randomIntValue(MIN_NUMBER, MAX_NUMBER);
16+
int rightArgument = Utils.randomIntValue(MIN_NUMBER, MAX_NUMBER);
17+
int numberOfOperation = Utils.randomIntValue(0, SYMBOLS_OPERATION.length);
18+
19+
String question = leftArgument + " " + SYMBOLS_OPERATION[numberOfOperation] + " " + rightArgument;
20+
int rightAnswer = Calc.getRightAnswer(leftArgument, rightArgument, numberOfOperation);
21+
result[level][0] = question;
22+
result[level][1] = Integer.toString(rightAnswer);
2523
}
2624

2725
Engine.startLevels(GAME_RULE, result);

app/src/main/java/hexlet/code/games/Even.java

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,16 @@
44

55
public class Even {
66
private static final String GAME_RULE = "Answer 'yes' if the number is even, otherwise answer 'no'.";
7-
private static final int COUNT_LEVELS = 3;
7+
88

99
public static void startGame() {
10-
String[][] levels = new String[COUNT_LEVELS][2];
10+
String[][] levels = new String[Engine.COUNT_LEVELS][2];
1111
for (int level = 0; level < levels.length; level++) {
12-
for (int i = 0; i < levels[level].length; i++) {
12+
int question = Utils.randomIntValue();
1313

14-
int question = Utils.randomIntValue();
15-
String rightAnswer = Even.isEven(question) ? "yes" : "no";
16-
levels[level][0] = Integer.toString(question);
17-
levels[level][1] = rightAnswer;
18-
}
14+
String rightAnswer = Even.isEven(question) ? "yes" : "no";
15+
levels[level][0] = Integer.toString(question);
16+
levels[level][1] = rightAnswer;
1917
}
2018
Engine.startLevels(GAME_RULE, levels);
2119
}

app/src/main/java/hexlet/code/games/GCD.java

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,22 +4,22 @@
44

55
public class GCD {
66
private static final String GAME_RULE = "Find the greatest common divisor of given numbers.";
7-
private static final int COUNT_LEVELS = 3;
7+
private static final int MAX_NUMBER = 30;
8+
private static final int MIN_NUMBER = 1;
89

910

1011
public static void startGame() {
1112

12-
String[][] levels = new String[COUNT_LEVELS][2];
13+
String[][] levels = new String[Engine.COUNT_LEVELS][2];
1314
for (int level = 0; level < levels.length; level++) {
14-
for (int i = 0; i < levels[level].length; i++) {
15-
int leftArgument = Utils.randomIntValue();
16-
int rightArgument = Utils.randomIntValue();
17-
18-
String question = leftArgument + " " + rightArgument;
19-
int rightAnswer = GCD.getGCD(leftArgument, rightArgument);
20-
levels[level][0] = question;
21-
levels[level][1] = Integer.toString(rightAnswer);
22-
}
15+
int leftArgument = Utils.randomIntValue(MIN_NUMBER, MAX_NUMBER);
16+
int rightArgument = Utils.randomIntValue(MIN_NUMBER, MAX_NUMBER);
17+
18+
String question = leftArgument + " " + rightArgument;
19+
int rightAnswer = GCD.getGCD(leftArgument, rightArgument);
20+
levels[level][0] = question;
21+
levels[level][1] = Integer.toString(rightAnswer);
22+
2323
}
2424

2525
Engine.startLevels(GAME_RULE, levels);

app/src/main/java/hexlet/code/games/Prime.java

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,27 +5,21 @@
55
public class Prime {
66

77
private static final String GAME_RULE = "Answer 'yes' if given number is prime. Otherwise answer 'no'.";
8-
private static final int COUNT_LEVELS = 3;
9-
108

119
public static void startGame() {
1210

13-
String[][] levels = new String[COUNT_LEVELS][2];
11+
String[][] levels = new String[Engine.COUNT_LEVELS][2];
1412
for (int level = 0; level < levels.length; level++) {
15-
for (int i = 0; i < levels[level].length; i++) {
16-
17-
int question = Utils.randomIntValue();
18-
String rightAnswer = Prime.isPrimeNumber(question) ? "yes" : "no";
13+
int question = Utils.randomIntValue();
14+
String rightAnswer = Prime.isPrimeNumber(question) ? "yes" : "no";
1915

20-
levels[level][0] = Integer.toString(question);
21-
levels[level][1] = rightAnswer;
22-
}
16+
levels[level][0] = Integer.toString(question);
17+
levels[level][1] = rightAnswer;
2318
}
24-
2519
Engine.startLevels(GAME_RULE, levels);
2620
}
2721
private static boolean isPrimeNumber(int num) {
28-
if (num == 1) {
22+
if (num == 1 || num == 0) {
2923
return false;
3024
}
3125
for (int i = 2; i <= Math.sqrt(num); i++) {

app/src/main/java/hexlet/code/games/Progression.java

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -9,26 +9,24 @@ public class Progression {
99
private static final int RIGHT_BORDER_OF_SIZE_PROGRESSION = 10;
1010
private static final int LEFT_BORDER_OF_STEP_PROGRESSION = 5;
1111
private static final int RIGHT_BORDER_OF_STEP_PROGRESSION = 10;
12-
private static final int COUNT_LEVELS = 3;
1312

1413
public static void startGame() {
1514

16-
String[][] levels = new String[COUNT_LEVELS][2];
15+
String[][] levels = new String[Engine.COUNT_LEVELS][2];
1716
for (int level = 0; level < levels.length; level++) {
18-
for (int i = 0; i < levels[level].length; i++) {
19-
int sizeProgression = Utils.randomIntValue(LEFT_BORDER_OF_SIZE_PROGRESSION,
20-
RIGHT_BORDER_OF_SIZE_PROGRESSION);
21-
int stepOfProgression = Utils.randomIntValue(LEFT_BORDER_OF_STEP_PROGRESSION,
22-
RIGHT_BORDER_OF_STEP_PROGRESSION);
23-
int[] progression = Progression.generateProgression(sizeProgression, stepOfProgression);
24-
int positionOfWishingElement = Utils.randomIntValue(0, progression.length);
25-
26-
27-
String question = getQuestion(progression, positionOfWishingElement);
28-
int rightAnswer = progression[positionOfWishingElement];
29-
levels[level][0] = question;
30-
levels[level][1] = Integer.toString(rightAnswer);
31-
}
17+
int sizeProgression = Utils.randomIntValue(LEFT_BORDER_OF_SIZE_PROGRESSION,
18+
RIGHT_BORDER_OF_SIZE_PROGRESSION);
19+
int stepOfProgression = Utils.randomIntValue(LEFT_BORDER_OF_STEP_PROGRESSION,
20+
RIGHT_BORDER_OF_STEP_PROGRESSION);
21+
int start = Utils.randomIntValue();
22+
int[] progression = Progression.generateProgression(start, sizeProgression, stepOfProgression);
23+
int positionOfWishingElement = Utils.randomIntValue(0, progression.length);
24+
25+
26+
String question = getQuestion(progression, positionOfWishingElement);
27+
int rightAnswer = progression[positionOfWishingElement];
28+
levels[level][0] = question;
29+
levels[level][1] = Integer.toString(rightAnswer);
3230
}
3331

3432
Engine.startLevels(GAME_RULE, levels);
@@ -50,10 +48,10 @@ private static String getQuestion(int[] progression, int positionOfWishingElemen
5048
return result.toString().trim();
5149
}
5250

53-
private static int[] generateProgression(int sizeProgression, int stepOfProgression) {
51+
private static int[] generateProgression(int start, int sizeProgression, int stepOfProgression) {
5452
int[] progression = new int[sizeProgression];
5553

56-
progression[0] = Utils.randomIntValue();
54+
progression[0] = start;
5755
for (int i = 1; i < progression.length; i++) {
5856
progression[i] = progression[i - 1] + stepOfProgression;
5957
}

app/src/main/java/hexlet/code/games/Utils.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ public static int randomIntValue(int leftBorder, int rightBorder) {
77
}
88

99
public static int randomIntValue() {
10-
final int left = 1;
10+
final int left = 0;
1111
final int right = 26;
1212
return randomIntValue(left, right);
1313
}

0 commit comments

Comments
 (0)