Skip to content

Commit 2b2c54c

Browse files
committed
add: brain_calc.py, engine.py and refactor even
1 parent 3892497 commit 2b2c54c

File tree

10 files changed

+98
-30
lines changed

10 files changed

+98
-30
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
.venv/
2+
brain_calc.cast

Makefile

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,5 +17,8 @@ package-install:
1717
lint:
1818
uv run ruff check brain_games/scripts/brain_games.py
1919
uv run ruff check brain_games/scripts/brain_even.py
20+
uv run ruff check brain_games/scripts/brain_calc.py
21+
uv run ruff check brain_games/games/even.py
22+
uv run ruff check brain_games/games/calc.py
2023
uv run ruff check brain_games/utils.py
21-
uv run ruff check brain_games/game_logic.py
24+
uv run ruff check brain_games/engine.py

brain_games/engine.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
from brain_games.utils import greet_and_ask_name
2+
3+
4+
def engine_run(game) -> None:
5+
name = greet_and_ask_name()
6+
print(game.get_msg_game_rules())
7+
for i in range(3):
8+
question_msg = game.get_question_msg()
9+
print(f"Question: {question_msg}")
10+
answer, right_answer = game.get_answer_and_right_answer(question_msg)
11+
if answer == right_answer:
12+
print('Correct!')
13+
else:
14+
print(f"'{answer}' is wrong answer ;(. "
15+
f"Correct answer was '{right_answer}'.\n"
16+
f"Let\'s try again, {name}!")
17+
break
18+
else:
19+
print(f"Congratulations, {name}!")

brain_games/game_logic.py

Lines changed: 0 additions & 5 deletions
This file was deleted.

brain_games/games/calc.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import random
2+
3+
from brain_games.utils import ask_answer
4+
5+
6+
def get_answer_and_right_answer(expression: str) -> tuple:
7+
answer = ask_answer()
8+
right_answer = get_right_answer(expression)
9+
return (answer, right_answer)
10+
11+
12+
def get_question_msg() -> str:
13+
left_num = random.randint(0, 100)
14+
right_num = random.randint(0, 100)
15+
binary_op = random.choice('+-*')
16+
return f"{left_num} {binary_op} {right_num}"
17+
18+
19+
def get_right_answer(expression: str) -> str:
20+
left_num, bin_op, right_num = expression.split()
21+
match bin_op:
22+
case '+':
23+
return str(int(left_num) + int(right_num))
24+
case '-':
25+
return str(int(left_num) - int(right_num))
26+
case '*':
27+
return str(int(left_num) * int(right_num))
28+
29+
30+
def get_msg_game_rules() -> str:
31+
return "What is the result of the expression?"

brain_games/games/even.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import random
2+
3+
from brain_games.utils import ask_answer
4+
5+
6+
def get_answer_and_right_answer(number: int) -> tuple:
7+
answer = ask_answer()
8+
right_answer = 'yes' if is_even(number) else 'no'
9+
return (answer, right_answer)
10+
11+
12+
def get_question_msg() -> int:
13+
return random.randint(0, 100)
14+
15+
16+
def is_even(number: int) -> bool:
17+
if number % 2 == 0:
18+
return True
19+
else:
20+
return False
21+
22+
23+
def get_msg_game_rules() -> str:
24+
return "Answer 'yes' if the number is even, otherwise answer 'no'."

brain_games/scripts/brain_calc.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
from brain_games import engine
2+
from brain_games.games import calc
3+
4+
5+
def main() -> None:
6+
engine.engine_run(calc)
7+
8+
9+
if __name__ == '__main__':
10+
main()

brain_games/scripts/brain_even.py

Lines changed: 4 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,9 @@
1-
import random
1+
from brain_games import engine
2+
from brain_games.games import even
23

3-
import prompt
44

5-
from brain_games.game_logic import is_even
6-
from brain_games.utils import greet_and_ask_name
7-
8-
9-
def main():
10-
name = greet_and_ask_name()
11-
print("Answer 'yes' if the number is even, otherwise answer 'no'.")
12-
for i in range(3):
13-
number = random.randint(0, 100)
14-
print(f"Question: {number}")
15-
answer = prompt.string("Your answer: ")
16-
right_answer = 'yes' if is_even(number) else 'no'
17-
if answer == right_answer:
18-
print('Correct!')
19-
else:
20-
print(f"'{answer}' is wrong answer ;(. "
21-
f"Correct answer was '{right_answer}'.\n"
22-
f"Let\'s try again, {name}!")
23-
break
24-
else:
25-
print(f"Congratulations, {name}!")
5+
def main() -> None:
6+
engine.engine_run(even)
267

278

289
if __name__ == '__main__':

brain_games/utils.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,7 @@ def greet_and_ask_name(msg_greeting=GREETING, msg_question=QUESTION) -> str:
99
name = prompt.string(msg_question)
1010
print(f"Hello, {name}! ")
1111
return name
12+
13+
14+
def ask_answer() -> str:
15+
return prompt.string("Your answer: ")

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,4 @@ dev = [
2323
[project.scripts]
2424
brain-games = "brain_games.scripts.brain_games:main"
2525
brain-even = "brain_games.scripts.brain_even:main"
26-
26+
brain-calc = "brain_games.scripts.brain_calc:main"

0 commit comments

Comments
 (0)