Skip to content

Commit c58e22a

Browse files
committed
Minor refactoring from 3rd code review
1 parent af3bc01 commit c58e22a

File tree

7 files changed

+40
-38
lines changed

7 files changed

+40
-38
lines changed

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

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ public class Engine {
88
public static void gameRun(String gameRules, String[][] questionsAndAnswers) {
99
Scanner input = new Scanner(System.in);
1010
String playerAnswer;
11-
int gameCount = 0;
1211
System.out.println("Welcome to the Brain Games!");
1312
System.out.print("May I have your name? ");
1413
String userName = input.next();
@@ -17,20 +16,16 @@ public static void gameRun(String gameRules, String[][] questionsAndAnswers) {
1716
for (String[] questionAndAnswer : questionsAndAnswers) {
1817
String question = questionAndAnswer[0];
1918
String answer = questionAndAnswer[1];
20-
System.out.println(question);
19+
System.out.println("Question " + question);
2120
playerAnswer = input.next();
2221
if (answer.equals(playerAnswer)) {
2322
System.out.println("Correct!");
24-
gameCount++;
2523
} else {
2624
System.out.println("'" + playerAnswer + "' is wrong answer ;(. Correct answer was '" + answer + "'.");
2725
System.out.println("Let's try again, " + userName + "!");
28-
break;
29-
}
30-
31-
if (gameCount == NUMBER_OF_GAMES) {
32-
System.out.println("Congratulations, " + userName + "!");
26+
return;
3327
}
3428
}
29+
System.out.println("Congratulations, " + userName + "!");
3530
}
3631
}

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

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package hexlet.code.games;
22

33
import hexlet.code.Engine;
4+
import hexlet.code.utils.Utils;
45

56
public class CalcGame {
67
static final int MAX_NUMBER_VALUE = 100;
@@ -21,12 +22,12 @@ public static void calcGame() {
2122
String gameRules = "What is the result of the expression?";
2223
String[][] questionsAndAnswers = new String[COLUMN_INDEX][ROW_INDEX];
2324
for (int i = 0; i < Engine.NUMBER_OF_GAMES; i++) {
24-
int firstNumber = (int) (Math.random() * MAX_NUMBER_VALUE);
25-
int secondNumber = (int) (Math.random() * MAX_NUMBER_VALUE);
26-
int operatorIndex = (int) (Math.random() * MAX_INDEX_VALUE);
25+
int firstNumber = Utils.generateNumber(0, MAX_NUMBER_VALUE);
26+
int secondNumber = Utils.generateNumber(0, MAX_NUMBER_VALUE);
27+
int operatorIndex = Utils.generateNumber(0, MAX_INDEX_VALUE);
2728
char[] operator = {'+', '-', '*'};
2829
int solution = getCalculation(firstNumber, secondNumber, operator[operatorIndex]);
29-
questionsAndAnswers[i][0] = "Question: " + firstNumber + " " + operator[operatorIndex] + " " + secondNumber;
30+
questionsAndAnswers[i][0] = firstNumber + " " + operator[operatorIndex] + " " + secondNumber;
3031
questionsAndAnswers[i][1] = Integer.toString(solution);
3132
}
3233
Engine.gameRun(gameRules, questionsAndAnswers);

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package hexlet.code.games;
22

33
import hexlet.code.Engine;
4+
import hexlet.code.utils.Utils;
45

56
public class EvenGame {
67
static final int MAX_NUMBER_VALUE = 100;
@@ -11,9 +12,9 @@ public static void evenGame() {
1112
String gameRules = "Answer 'yes' if the number is even, otherwise answer 'no'.";
1213
String[][] questionsAndAnswers = new String[COLUMN_INDEX][ROW_INDEX];
1314
for (int i = 0; i < Engine.NUMBER_OF_GAMES; i++) {
14-
int guessedNumber = (int) (Math.random() * MAX_NUMBER_VALUE);
15+
int guessedNumber = Utils.generateNumber(0, MAX_NUMBER_VALUE);
1516
String solution = guessedNumber % 2 == 0 ? "yes" : "no";
16-
questionsAndAnswers[i][0] = "Question: " + guessedNumber;
17+
questionsAndAnswers[i][0] = Integer.toString(guessedNumber);
1718
questionsAndAnswers[i][1] = solution;
1819
}
1920
Engine.gameRun(gameRules, questionsAndAnswers);

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

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package hexlet.code.games;
22

33
import hexlet.code.Engine;
4+
import hexlet.code.utils.Utils;
45

56
public class GCDGame {
67
static final int MAX_NUMBER_VALUE = 100;
@@ -20,10 +21,10 @@ public static void gcdGame() {
2021
String gameRules = "Find the greatest common divisor of given numbers.";
2122
String[][] questionsAndAnswers = new String[COLUMN_INDEX][ROW_INDEX];
2223
for (int i = 0; i < Engine.NUMBER_OF_GAMES; i++) {
23-
int firstNumber = (int) (Math.random() * MAX_NUMBER_VALUE);
24-
int secondNumber = (int) (Math.random() * MAX_NUMBER_VALUE);
24+
int firstNumber = Utils.generateNumber(0, MAX_NUMBER_VALUE);
25+
int secondNumber = Utils.generateNumber(0, MAX_NUMBER_VALUE);
2526
int solution = getGCD(firstNumber, secondNumber);
26-
questionsAndAnswers[i][0] = "Question: " + firstNumber + " " + secondNumber;
27+
questionsAndAnswers[i][0] = firstNumber + " " + secondNumber;
2728
questionsAndAnswers[i][1] = Integer.toString(solution);
2829
}
2930
Engine.gameRun(gameRules, questionsAndAnswers);

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
package hexlet.code.games;
22

33
import hexlet.code.Engine;
4+
import hexlet.code.utils.Utils;
45

56
public class PrimeGame {
67
static final int MAX_NUMBER_VALUE = 100;
78
static final int COLUMN_INDEX = 3;
89
static final int ROW_INDEX = 2;
9-
static final int MIN_INDEX_TO_START = 3;
1010

1111
public static boolean isPrime(int number) {
12-
//int minIndex = 3;
12+
final int minIndex = 3;
1313
if (number < 2) {
1414
return false;
1515
}
@@ -19,7 +19,7 @@ public static boolean isPrime(int number) {
1919
if (number % 2 == 0) {
2020
return false;
2121
}
22-
for (int j = MIN_INDEX_TO_START; j * j <= number; j += 2) {
22+
for (int j = minIndex; j * j <= number; j += 2) {
2323
if (number % j == 0) {
2424
return false;
2525
}
@@ -31,8 +31,8 @@ public static void primeGame() {
3131
String gameRules = "Answer 'yes' if given number is prime. Otherwise answer 'no'.";
3232
String[][] questionsAndAnswers = new String[COLUMN_INDEX][ROW_INDEX];
3333
for (int i = 0; i < Engine.NUMBER_OF_GAMES; i++) {
34-
int guessedNumber = (int) (Math.random() * MAX_NUMBER_VALUE);
35-
questionsAndAnswers[i][0] = "Question: " + guessedNumber;
34+
int guessedNumber = Utils.generateNumber(0, MAX_NUMBER_VALUE);
35+
questionsAndAnswers[i][0] = Integer.toString(guessedNumber);
3636
questionsAndAnswers[i][1] = isPrime(guessedNumber) ? "yes" : "no";
3737
}
3838
Engine.gameRun(gameRules, questionsAndAnswers);

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

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,35 @@
11
package hexlet.code.games;
22

33
import hexlet.code.Engine;
4+
import hexlet.code.utils.Utils;
45

56
public class ProgressionGame {
6-
static final int MAX_NUMBERS_LENGTH = 9;
7+
static final int MAX_NUMBERS_LENGTH = 10;
78
static final int MAX_NUMBER_VALUE = 100;
89
static final int MAX_STEP_VALUE = 10;
910
static final int MIN_STEP_VALUE = 1;
1011
static final int COLUMN_INDEX = 3;
1112
static final int ROW_INDEX = 2;
1213

13-
public static String getProgressionAndQuestion(int[] numbers, int startNumber, int step, int hiddenNumberIndex) {
14-
StringBuilder printNumbers = new StringBuilder("Question:");
14+
public static String[] getProgression(int progressionLength, int startNumber, int step) {
15+
//StringBuilder printNumbers = new StringBuilder();
16+
String[] numbers = new String[progressionLength];
1517
for (int j = 0; j < numbers.length; j++) {
16-
numbers[j] = startNumber + j * step;
17-
if (j == hiddenNumberIndex) {
18-
printNumbers.append(" ..");
19-
} else {
20-
printNumbers.append(" ").append(numbers[j]);
21-
}
18+
numbers[j] = Integer.toString(startNumber + j * step);
2219
}
23-
return printNumbers.toString();
20+
return numbers;
2421
}
2522

2623
public static void progressionGame() {
2724
String gameRules = "What number is missing in the progression?";
2825
String[][] questionsAndAnswers = new String[COLUMN_INDEX][ROW_INDEX];
2926
for (int i = 0; i < Engine.NUMBER_OF_GAMES; i++) {
30-
int[] numbers = new int[MAX_NUMBERS_LENGTH];
31-
int startNumber = (int) (Math.random() * MAX_NUMBER_VALUE);
32-
int step = (int) (Math.random() * MAX_STEP_VALUE + MIN_STEP_VALUE);
33-
int hiddenNumberIndex = (int) (Math.random() * numbers.length);
34-
questionsAndAnswers[i][0] = getProgressionAndQuestion(numbers, startNumber, step, hiddenNumberIndex);
35-
questionsAndAnswers[i][1] = Integer.toString(numbers[hiddenNumberIndex]);
27+
int startNumber = Utils.generateNumber(0, MAX_NUMBER_VALUE);
28+
int step = Utils.generateNumber(MIN_STEP_VALUE, MAX_STEP_VALUE);
29+
String[] numbers = getProgression(MAX_NUMBERS_LENGTH, startNumber, step);
30+
int hiddenNumberIndex = Utils.generateNumber(0, numbers.length);
31+
questionsAndAnswers[i][0] = String.join(" ", numbers).replace(numbers[hiddenNumberIndex], "..");
32+
questionsAndAnswers[i][1] = numbers[hiddenNumberIndex];
3633
}
3734
Engine.gameRun(gameRules, questionsAndAnswers);
3835
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package hexlet.code.utils;
2+
3+
public class Utils {
4+
public static int generateNumber(int min, int max) {
5+
return (int) Math.floor(Math.random() * (max - min + 1)) + min;
6+
}
7+
}

0 commit comments

Comments
 (0)