Skip to content

Commit eabccf3

Browse files
committed
brain_games with engine
1 parent 74747c1 commit eabccf3

17 files changed

+348
-2
lines changed

Makefile

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,15 @@ brain-even:
1010
brain-calc:
1111
poetry run brain-calc
1212

13+
brain-gcd:
14+
poetry run brain-gcd
15+
16+
brain-progression:
17+
poetry run brain-progression
18+
19+
brain-prime:
20+
poetry run brain-prime
21+
1322
build:
1423
poetry build
1524

README.md

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,28 +5,55 @@
55
Для установки используйте
66
pip install brain_games
77

8+
## Maintanability:
9+
[![Maintainability](https://api.codeclimate.com/v1/badges/6f28945f5289f2f48b5f/maintainability)](https://codeclimate.com/github/NikLuki/python-project-49/maintainability)
10+
811
## Запуск игры:
912
Для запуска ввести
1013
make brain-games
1114
Для игры brain-even:
1215
make brain-even
1316
Для игры brain-calc:
1417
make brain-calc
18+
Для игры brain-gcd:
19+
make brain-gcd
20+
Для игры brain-progression:
21+
make brain-progression
22+
Для игры brain-prime:
23+
make brain-prime
1524

1625
## Пример игры brain-even:
1726
https://asciinema.org/a/caOozKOiguC7CCKgWi21rTwdO
1827

1928
## Победа или поражение:
20-
Ответьте верно (yes/no) на три вопроса подряд, чтобы выиграть
29+
Ответьте верно (yes/no) является ли число четным три раза подряд, чтобы выиграть
2130
При вводе неверного ответа, либо любых других символов - сообщение о проигрыше
2231

2332
## Пример игры brain-calc:
2433
https://asciinema.org/a/Y3wB0Z1MMlZ2WKarfZJzL2jVH
2534

2635
## Победа или поражение:
27-
Ответьте верно на три вопроса подряд, чтобы выиграть
36+
Вычислите верно три выражения подряд, чтобы выиграть
2837
При вводе неверного ответа, либо любых других символов - сообщение о проигрыше
2938

39+
## Пример игры make-gcd:
40+
https://asciinema.org/a/I2IYNlfoqAWlYANTGIQ1NHcux
3041

42+
## Победа или поражение:
43+
Найдите самый большой общий знаменатель три раза подряд, чтобы выиграть
44+
При вводе неверного ответа, либо любых других символов - сообщение о проигрыше
3145

46+
## Пример игры make-progression:
47+
https://asciinema.org/a/oTvNFVFfrUpLBcrpaxigO8Otu
48+
49+
## Победа или поражение:
50+
Подставьте верное число в ряд три раза подряд, чтобы выиграть
51+
При вводе неверного ответа, либо любых других символов - сообщение о проигрыше
52+
53+
## Пример игры brain-prime:
54+
https://asciinema.org/a/fMGV8agOHQjeh8x0hdTjomRE6
55+
56+
## Победа или поражение:
57+
Ответьте верно(yes/no), является ли число простым, чтобы выиграть
58+
При ввооде неверного ответа, либо любых других символов - сообщение о проигрыше
3259

1.55 KB
Binary file not shown.

brain_games/engine.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# engine.py
2+
3+
def welcome_user():
4+
print("Welcome to the Brain Games!")
5+
name = input("May I have your name? ")
6+
print(f"Hello, {name}!")
7+
return name
8+
9+
def ask_question(question):
10+
print(f"Question: {question}")
11+
return input("Your answer: ")
12+
13+
def check_answer(user_answer, correct_answer, name):
14+
if user_answer == correct_answer:
15+
print("Correct!")
16+
return True
17+
else:
18+
print(f"'{user_answer}' is wrong answer ;(. Correct answer was '{correct_answer}'.")
19+
print(f"Let's try again, {name}!")
20+
return False
21+
22+
def run_game(game_logic):
23+
name = welcome_user()
24+
print(game_logic['instructions'])
25+
26+
for _ in range(3): # Максимальное количество раундов
27+
question, correct_answer = game_logic['get_question_and_answer']()
28+
user_answer = ask_question(question)
29+
30+
if not check_answer(user_answer, correct_answer, name):
31+
return
32+
33+
print(f"Congratulations, {name}!")
34+
35+
0 Bytes
Binary file not shown.
1005 Bytes
Binary file not shown.
1.29 KB
Binary file not shown.
Binary file not shown.

brain_games/scripts/brain_gcd.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import random
2+
import math
3+
from brain_games.engine import run_game
4+
5+
def get_question_and_answer():
6+
number1 = random.randint(1, 100) # Генерация первого случайного числа
7+
number2 = random.randint(1, 100) # Генерация второго случайного числа
8+
correct_answer = str(math.gcd(number1, number2))
9+
return f"{number1} {number2}", correct_answer
10+
11+
def main():
12+
game_logic = {
13+
'instructions': 'Find the greatest common divisor of given numbers.',
14+
'get_question_and_answer': get_question_and_answer
15+
}
16+
run_game(game_logic)
17+
18+
if __name__ == '__main__':
19+
main()

brain_games/scripts/brain_prime.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import random
2+
from brain_games.engine import run_game
3+
4+
def is_prime(n):
5+
##Проверяет, является ли число простым
6+
if n < 2:
7+
return False
8+
for i in range(2, int(n ** 0.5) + 1):
9+
if n % i == 0:
10+
return False
11+
return True
12+
13+
def generate_question():
14+
##Создает вопрос и правильный ответ
15+
number = random.randint(1, 100) ## Генерация случайного числа от 1 до 100
16+
correct_answer = 'yes' if is_prime(number) else 'no'
17+
return str(number), correct_answer
18+
19+
def game_logic():
20+
return {
21+
'instructions': 'Answer "yes" if given number is prime. Otherwise answer "no".',
22+
'get_question_and_answer': generate_question
23+
}
24+
25+
def main():
26+
run_game(game_logic())
27+
28+
if __name__ == "__main__":
29+
main()

0 commit comments

Comments
 (0)