Skip to content

Commit 3b4f3cf

Browse files
initial commit
0 parents  commit 3b4f3cf

6 files changed

Lines changed: 106 additions & 0 deletions

File tree

.gitignore

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# Python-generated files
2+
__pycache__/
3+
*.py[oc]
4+
build/
5+
dist/
6+
wheels/
7+
*.egg-info
8+
9+
# Virtual environments
10+
.venv
11+
*.json

.python-version

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
3.12

README.md

Whitespace-only changes.

main.py

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
import json
2+
3+
4+
class Hero:
5+
def __init__(self, name: str):
6+
self.name = name
7+
self.hp = 100
8+
self.weapon_type = "sword"
9+
self.inventory = []
10+
self.level = "forest"
11+
12+
def attack(self, enemy_name: str):
13+
print(f"[{self.name}] атакует {enemy_name}!")
14+
damage = 0
15+
16+
if self.weapon_type == "sword":
17+
damage = 15
18+
print("Взмах мечом! Вжииих!")
19+
elif self.weapon_type == "bow":
20+
damage = 10
21+
print("Выстрел из лука! Пиу!")
22+
elif self.weapon_type == "magic_staff":
23+
damage = 25
24+
self.hp -= 5
25+
print("Магический удар! Бабах! (Потрачено 5 HP)")
26+
else:
27+
print("Герой бьет кулаками.")
28+
damage = 2
29+
30+
print(f"Нанесено {damage} урона.")
31+
32+
if damage > 20:
33+
print("🏆 АЧИВКА: Сокрушительный удар!")
34+
35+
def move(self, location: str):
36+
self.level = location
37+
print(f"\n[{self.name}] переходит в локацию: {self.level}")
38+
self.spawn_enemy()
39+
40+
def spawn_enemy(self):
41+
print("Генерация врагов...")
42+
if self.level == "forest":
43+
print("Появился Лесной Орк (HP: 50)!")
44+
elif self.level == "lava":
45+
print("Появился Огненный Элементаль (HP: 100)!")
46+
elif self.level == "ice_caves":
47+
print("Появился Ледяной Тролль (HP: 80)!")
48+
49+
def save_game(self, filename: str = "save.json"):
50+
data = {
51+
"name": self.name,
52+
"hp": self.hp,
53+
"weapon_type": self.weapon_type,
54+
"level": self.level,
55+
}
56+
with open(filename, "w", encoding="utf-8") as f:
57+
json.dump(data, f)
58+
print(f"\n💾 Игра сохранена в {filename}")
59+
60+
def render_ui(self):
61+
print("\n" + "=" * 30)
62+
print(f"ГЕРОЙ: {self.name} | HP: {self.hp}")
63+
print(
64+
f"ОРУЖИЕ: {self.weapon_type.upper()} | ЛОКАЦИЯ: {self.level.upper()}"
65+
)
66+
print("=" * 30 + "\n")
67+
68+
69+
if __name__ == "__main__":
70+
player = Hero("Артур")
71+
player.render_ui()
72+
73+
player.attack("Слизень")
74+
75+
player.weapon_type = "magic_staff"
76+
player.attack("Гоблин")
77+
78+
player.move("lava")
79+
player.save_game()

pyproject.toml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
[project]
2+
name = "design-patterns-game-final"
3+
version = "0.1.0"
4+
description = "Add your description here"
5+
readme = "README.md"
6+
requires-python = ">=3.12"
7+
dependencies = []

uv.lock

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)