Skip to content

Commit ddb7458

Browse files
committed
add Calc game, rename Game class to Engine, move randomizer to Engine
1 parent e041360 commit ddb7458

File tree

4 files changed

+60
-14
lines changed

4 files changed

+60
-14
lines changed

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

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import java.util.Scanner;
44
import hexlet.code.games.Even;
5+
import hexlet.code.games.Calc;
56

67
public class App {
78
public static void main(String[] args) {
@@ -10,19 +11,16 @@ public static void main(String[] args) {
1011
System.out.println("Please enter the game number and press Enter.");
1112
System.out.println("1 - Greet");
1213
System.out.println("2 - Even");
14+
System.out.println("3 - Calc");
1315
System.out.println("0 - Exit");
1416
System.out.print("Your choice: ");
1517
var userChoice = scanner.next();
1618

1719
switch (userChoice) {
18-
case "1":
19-
Cli.greetUser(scanner);
20-
break;
21-
case "2":
22-
Even.play(scanner);
23-
break;
24-
default:
25-
return;
20+
case "1" -> Cli.greetUser(scanner);
21+
case "2" -> Even.play(scanner);
22+
case "3" -> Calc.play(scanner);
23+
default -> scanner.close();
2624
}
2725
}
2826
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package hexlet.code.games;
2+
3+
import java.util.Scanner;
4+
5+
public class Calc {
6+
public static void play(Scanner scanner) {
7+
Engine.greet(scanner);
8+
9+
while (Engine.isContinuing()) {
10+
var number1 = Engine.getRandomNumber(50);
11+
var number2 = Engine.getRandomNumber(50);
12+
char operator;
13+
14+
Integer correctAnswer = switch (Engine.getRandomNumber(3)) {
15+
case 0 -> {
16+
operator = '+';
17+
yield number1 + number2;
18+
}
19+
case 1 -> {
20+
operator = '-';
21+
yield number1 - number2;
22+
}
23+
default -> {
24+
operator = '*';
25+
// balancing difficulty
26+
number2 = number2 / 2;
27+
number1 = number1 / 2;
28+
yield number1 * (number2);
29+
}
30+
};
31+
32+
System.out.println("What is the result of the expression?");
33+
System.out.println("Question: " + number1 + " " + operator + " " + number2);
34+
System.out.print("Your answer: ");
35+
var userAnswer = scanner.next();
36+
37+
Engine.compareAnswers(userAnswer, Integer.toString(correctAnswer));
38+
}
39+
40+
Engine.end(scanner);
41+
}
42+
}

app/src/main/java/hexlet/code/games/Game.java renamed to app/src/main/java/hexlet/code/games/Engine.java

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

3+
import java.util.Random;
34
import java.util.Scanner;
45

5-
public class Game {
6+
public class Engine {
67
private static String userName;
78
private static boolean defeated = false;
89
private static int round = 1;
10+
private static Random randomizer = new Random();
911

1012
public static void greet(Scanner scanner) {
1113
System.out.println("Welcome to the Brain Games!");
@@ -18,6 +20,10 @@ public static boolean isContinuing() {
1820
return round <= 3 && !defeated;
1921
}
2022

23+
public static int getRandomNumber(int bound) {
24+
return randomizer.nextInt(bound);
25+
}
26+
2127
public static void compareAnswers(String userAnswer, String correctAnswer) {
2228
if (userAnswer.equals(correctAnswer)) {
2329
System.out.println("Correct!");

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

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

55
public class Even {
66
public static void play(Scanner scanner) {
7-
Game.greet(scanner);
7+
Engine.greet(scanner);
88

99
System.out.println("Answer 'yes' if the number is even, otherwise answer 'no'.");
1010

11-
while (Game.isContinuing()) {
12-
var randomNumber = Game.getRandomNumber();
11+
while (Engine.isContinuing()) {
12+
var randomNumber = Engine.getRandomNumber(100) + 1; // added 1 to avoid 0 and keep equal chances
1313
var correctAnswer = randomNumber % 2 == 0 ? "yes" : "no";
1414

1515
System.out.println("Question: " + randomNumber);
1616
System.out.print("Your answer: ");
1717
var userAnswer = scanner.next();
1818

19-
Game.compareAnswers(userAnswer, correctAnswer);
19+
Engine.compareAnswers(userAnswer, correctAnswer);
2020
}
2121

22-
Game.end(scanner);
22+
Engine.end(scanner);
2323
}
2424
}

0 commit comments

Comments
 (0)