diff --git a/brain_games/game_const.py b/brain_games/game_const.py index cefe25b..03a4147 100644 --- a/brain_games/game_const.py +++ b/brain_games/game_const.py @@ -8,3 +8,4 @@ ROUND_COUNT = 3 GREETING = "Welcome to the Brain Games!\nMay I have your name?" PROGRESSION_LENGTH = 10 +OPERATORS = ["+", "-", "*"] diff --git a/brain_games/games/calc_engine.py b/brain_games/games/calc_engine.py index d2e8690..63705bb 100644 --- a/brain_games/games/calc_engine.py +++ b/brain_games/games/calc_engine.py @@ -1,29 +1,15 @@ import random -import prompt -from brain_games.game_const import GAME_INSTRUCTIONS, ROUND_COUNT, GREETING +from brain_games.game_const import GAME_INSTRUCTIONS, OPERATORS +from brain_games.game_engine import run_game -def math_calc(): - player_name = prompt.string(f"{GREETING} ") - print(f'Hello, {player_name}!' - f'\n{GAME_INSTRUCTIONS["calc"]}') - for _ in range(ROUND_COUNT): - first_num = random.randint(1, 10) - second_num = random.randint(1, 10) - calc_sign_list = ["+", "-", "*"] - calc_sign_random = random.choice(calc_sign_list) - expression = f"{first_num} {calc_sign_random} {second_num}" - correct_answer = eval(expression) +def math_expression_and_result(): + first_num, second_num = random.randint(1, 10), random.randint(1, 10) + operator = random.choice(OPERATORS) + expression = f"{first_num} {operator} {second_num}" + result = eval(expression) + return expression, str(result) - player_answer = prompt.string(f"\nQuestion: {expression}" - f"\nAnswer: ") - if correct_answer == int(player_answer): - print("Correct!") - else: - print(f"'{player_answer}' is wrong answer ;(. " - f"Correct answer was {correct_answer}.\n" - f"Let's try again, {player_name}!") - return - - return print(f"Congratulations, {player_name}!") +def run_calc_engine_game(): + run_game(math_expression_and_result, GAME_INSTRUCTIONS['calc']) diff --git a/brain_games/games/even_engine.py b/brain_games/games/even_engine.py index 537631b..476cc87 100644 --- a/brain_games/games/even_engine.py +++ b/brain_games/games/even_engine.py @@ -1,26 +1,13 @@ -import prompt import random -from brain_games.game_const import GAME_INSTRUCTIONS, ROUND_COUNT, GREETING +from brain_games.game_const import GAME_INSTRUCTIONS +from brain_games.game_engine import run_game -def even_game(): - player_name = prompt.string(f"{GREETING} ") - print(f'Hello, {player_name}!' - f'\n{GAME_INSTRUCTIONS["even"]}') +def number_and_even_answer(): + num = random.randint(1, 30) + correct_answer = 'yes' if num % 2 == 0 else 'no' + return num, correct_answer - for _ in range(ROUND_COUNT): - num = random.randint(1, 31) - correct_answer = 'yes' if num % 2 == 0 else 'no' - player_answer = prompt.string(f'Question: {num}' - f'\nAnswer: ').lower() - - if correct_answer == player_answer: - print("Correct!") - else: - print(f"'{player_answer}' is wrong answer ;(. " - f"Correct answer was {correct_answer}.\n" - f"Let's try again, {player_name}!") - return - - return print(f"Congratulations, {player_name}!") +def run_even_engine_game(): + run_game(number_and_even_answer, GAME_INSTRUCTIONS['even']) diff --git a/brain_games/games/gcd_engine.py b/brain_games/games/gcd_engine.py index cbd0360..bdc4489 100644 --- a/brain_games/games/gcd_engine.py +++ b/brain_games/games/gcd_engine.py @@ -1,28 +1,15 @@ +import math import random -import prompt -from math import gcd -from brain_games.game_const import GAME_INSTRUCTIONS, ROUND_COUNT, GREETING +from brain_games.game_engine import run_game +from brain_games.game_const import GAME_INSTRUCTIONS -def func_gcd(): - player_name = prompt.string(f"{GREETING} ") - print(f"Hello, {player_name}!" - f"\n{GAME_INSTRUCTIONS['gcd']}") - for _ in range(ROUND_COUNT): - first_num = random.randint(1, 100) - second_num = random.randint(1, 55) +def func_numbers_and_gcd(): + first_num, second_num = random.randint(1, 50), random.randint(1, 30) + gcd_answer = math.gcd(first_num, second_num) + numbers = f"{first_num} {second_num}" + return numbers, str(gcd_answer) - correct_answer = gcd(first_num, second_num) - player_answer = prompt.string(f"\nQuestion: {first_num} {second_num}" - f"\nAnswer: ") - - if correct_answer == int(player_answer): - print("Correct!") - else: - print(f"'{player_answer}' is wrong answer ;(. " - f"Correct answer was {correct_answer}.\n" - f"Let's try again, {player_name}!") - return - - return print(f"Congratulations, {player_name}!") +def run_gcd_engine_game(): + run_game(func_numbers_and_gcd, GAME_INSTRUCTIONS['gcd']) diff --git a/brain_games/games/prgss_engine.py b/brain_games/games/prgss_engine.py index 19800e8..c458fc6 100644 --- a/brain_games/games/prgss_engine.py +++ b/brain_games/games/prgss_engine.py @@ -1,39 +1,21 @@ import random -import prompt -from brain_games.game_const import ( - PROGRESSION_LENGTH, - GAME_INSTRUCTIONS, - ROUND_COUNT, - GREETING -) +from brain_games.game_engine import run_game +from brain_games.game_const import PROGRESSION_LENGTH, GAME_INSTRUCTIONS -def func_progression(): - player_name = prompt.string(f"{GREETING} ") - print(f"Hello, {player_name}!" - f"\n{GAME_INSTRUCTIONS['progression']}") +def func_progression_and_missed_num(): + start_num, step = random.randint(1, 5), random.randint(1, 5) + progression = [] - for _ in range(ROUND_COUNT): - progression = [] + for i in range(PROGRESSION_LENGTH): + progression.append(start_num + step * i) - start_num, step = random.randint(1, 5), random.randint(1, 5) - for i in range(PROGRESSION_LENGTH): - progression.append(start_num + step * i) + index_missed = random.randint(1, PROGRESSION_LENGTH - 1) + missed_num = progression[index_missed] + progression[index_missed] = '..' + progression_for_player = ' '.join(map(str, progression)) + return progression_for_player, str(missed_num) - index_missed = random.randint(1, PROGRESSION_LENGTH - 1) - missed_num = progression[index_missed] - progression[index_missed] = '..' - progression_for_player = ' '.join(map(str, progression)) - player_answer = prompt.string(f"\nQuestion: {progression_for_player}" - f"\nAnswer: ") - - if missed_num == int(player_answer): - print("Correct!") - else: - print(f"'{player_answer}' is wrong answer ;(. " - f"Correct answer was {missed_num}.\n" - f"Let's try again, {player_name}!") - return - - return print(f"Congratulations, {player_name}!") +def run_func_progression_and_answer(): + run_game(func_progression_and_missed_num, GAME_INSTRUCTIONS['progression']) diff --git a/brain_games/games/prime_engine.py b/brain_games/games/prime_engine.py index 3e80fc5..a165a0d 100644 --- a/brain_games/games/prime_engine.py +++ b/brain_games/games/prime_engine.py @@ -1,29 +1,20 @@ import random -import prompt -from brain_games.game_const import ROUND_COUNT, GREETING, GAME_INSTRUCTIONS +from brain_games.game_engine import run_game +from brain_games.game_const import GAME_INSTRUCTIONS -def func_prime(): - player_name = prompt.string(f"{GREETING} ") - print(f"Hello, {player_name}!" - f"\n{GAME_INSTRUCTIONS['prime']}") +def func_prime(num): + prime_number = 'no' if num <= 1 or any( + num % i == 0 for i in range(2, (num // 2 + 1)) + ) else 'yes' + return prime_number - for _ in range(ROUND_COUNT): - prime_num = random.randint(1, 30) - correct_answer = 'no' if prime_num <= 1 or any( - prime_num % i == 0 for i in range(2, (prime_num // 2 + 1)) - ) else 'yes' +def get_prime_num_and_answer(): + num = random.randint(1, 30) + prime = func_prime(num) + return num, prime - player_answer = prompt.string(f"\nQuestion: {prime_num}" - f"\nAnswer: ") - if correct_answer == player_answer: - print("Correct!") - else: - print(f"'{player_answer}' is wrong answer ;(. " - f"Correct answer was '{correct_answer}'.\n" - f"Let's try again, {player_name}!") - return - - return print(f"Congratulations, {player_name}!") +def run_prime_engine_game(): + run_game(get_prime_num_and_answer, GAME_INSTRUCTIONS['prime']) diff --git a/brain_games/scripts/brain_calc.py b/brain_games/scripts/brain_calc.py index 1a71b6f..a70271e 100644 --- a/brain_games/scripts/brain_calc.py +++ b/brain_games/scripts/brain_calc.py @@ -1,9 +1,9 @@ #!/usr/bin/env python3 -from brain_games.games.calc_engine import math_calc +from brain_games.games.calc_engine import run_calc_engine_game def main(): - math_calc() + run_calc_engine_game() if __name__ == '__main__': diff --git a/brain_games/scripts/brain_even.py b/brain_games/scripts/brain_even.py index bf22106..463387c 100644 --- a/brain_games/scripts/brain_even.py +++ b/brain_games/scripts/brain_even.py @@ -1,9 +1,9 @@ #!/usr/bin/env python3 -from brain_games.games.even_engine import even_game +from brain_games.games.even_engine import run_even_engine_game def main(): - even_game() + run_even_engine_game() if __name__ == '__main__': diff --git a/brain_games/scripts/brain_gcd.py b/brain_games/scripts/brain_gcd.py index 312dfc5..03f9b24 100644 --- a/brain_games/scripts/brain_gcd.py +++ b/brain_games/scripts/brain_gcd.py @@ -1,9 +1,9 @@ #!/usr/bin/env python3 -from brain_games.games.gcd_engine import func_gcd +from brain_games.games.gcd_engine import run_gcd_engine_game def main(): - func_gcd() + run_gcd_engine_game() if __name__ == '__main__': diff --git a/brain_games/scripts/brain_prime.py b/brain_games/scripts/brain_prime.py index d8daf5a..c49deb6 100644 --- a/brain_games/scripts/brain_prime.py +++ b/brain_games/scripts/brain_prime.py @@ -1,9 +1,9 @@ #!/usr/bin/env python3 -from brain_games.games.prime_engine import func_prime +from brain_games.games.prime_engine import run_prime_engine_game def main(): - func_prime() + run_prime_engine_game() if __name__ == '__main__': diff --git a/brain_games/scripts/brain_progression.py b/brain_games/scripts/brain_progression.py index 2a653e1..e8836ff 100644 --- a/brain_games/scripts/brain_progression.py +++ b/brain_games/scripts/brain_progression.py @@ -1,9 +1,9 @@ #!/usr/bin/env python3 -from brain_games.games.prgss_engine import func_progression +from brain_games.games.prgss_engine import run_func_progression_and_answer def main(): - func_progression() + run_func_progression_and_answer() if __name__ == '__main__': diff --git a/poetry.lock b/poetry.lock index da59537..49dd055 100644 --- a/poetry.lock +++ b/poetry.lock @@ -63,4 +63,4 @@ files = [ [metadata] lock-version = "2.0" python-versions = "^3.10" -content-hash = "97129748ab2179cef92bf767692995f58bfb6184f6fbc073ff81f999be1ef6c9" +content-hash = "795478d54f397bf15f055919ee025dc61380fc61fee145dfd9d88af8ade51a92" diff --git a/pyproject.toml b/pyproject.toml index 4a8e703..e8f1329 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -11,6 +11,7 @@ packages = [ [tool.poetry.dependencies] python = "^3.10" prompt = "^0.4.1" +flake8 = "^7.1.0" [tool.poetry.scripts] brain-games = "brain_games.scripts.brain_games:main"