|
28 | 28 |
|
29 | 29 | Должен содержать два класса |
30 | 30 |
|
31 | | -- Player |
32 | | -- Enemy |
| 31 | +- `Player` |
| 32 | +- `Enemy` |
33 | 33 |
|
34 | 34 | #### Player |
35 | 35 |
|
36 | 36 | Аттрибуты: |
37 | 37 |
|
38 | | -- name - Имя игрока, задается пользователем через консоль |
39 | | -- lives - Количество жизней, берется из константы из `settings.py` |
40 | | -- score - Очки игрока, изначально 0 |
| 38 | +- `name` - Имя игрока, задается пользователем через консоль |
| 39 | +- `lives` - Количество жизней, берется из константы из `settings.py` |
| 40 | +- `score` - Очки игрока, изначально 0 |
41 | 41 |
|
42 | 42 | Методы: |
43 | 43 |
|
44 | | -- __init__ - для инициализации игрока, принимает только имя, назначает имя, кол-во жизней и очков. |
45 | | -- select_attack - метод для ввода атаки игроком. Вводим до тех пор, пока пользователь не введет валидное значение (1, 2, 3), использует константы из файла `settings.py` |
46 | | -- decrease_lives - метод, который будет вызываться если игрок проиграл "бой", уменьшает жизни на 1. Если жизни закончились, вызывает исключение `GameOver` из файла `exceptions.py` |
47 | | -- add_score - метод для начисления очков игроку. |
| 44 | +- `__init__` - для инициализации игрока, принимает только имя, назначает имя, кол-во жизней и очков. |
| 45 | +- `select_attack` - метод для ввода атаки игроком. Вводим до тех пор, пока пользователь не введет валидное значение (1, 2, |
| 46 | + 3), использует константы из файла `settings.py` |
| 47 | +- `decrease_lives` - метод, который будет вызываться если игрок проиграл "бой", уменьшает жизни на 1. Если жизни |
| 48 | + закончились, вызывает исключение `GameOver` из файла `exceptions.py` |
| 49 | +- `add_score` - метод для начисления очков игроку. |
48 | 50 |
|
49 | 51 | #### Enemy |
50 | 52 |
|
51 | 53 | Аттрибуты: |
52 | 54 |
|
53 | | -- lives - Кол-во жизней, изначально зависит от уровня соперника и уровня сложности, уменьшается на 1 когда соперник проигрывает "бой" |
54 | | -- level - уровень соперника, будет увеличиваться с каждым новым соперником. Изначально 1. |
| 55 | +- `lives` - Кол-во жизней, изначально зависит от уровня соперника и уровня сложности, уменьшается на 1 когда соперник |
| 56 | + проигрывает "бой" |
| 57 | +- `level` - уровень соперника, будет увеличиваться с каждым новым соперником. Изначально 1. |
55 | 58 |
|
56 | 59 | Методы: |
57 | 60 |
|
58 | | -- __init__ - для инициализации соперника, принимает только уровень и сложность, что бы вычислить кол-во жизней, назначает кол-во жизней и уровень. |
59 | | -- select_attack - метод для случайного выбора атаки (1, 2, 3), использует константы из файла `settings.py` |
60 | | -- decrease_lives - уменьшает жизни при проигрыше "боя", вызывает исключение `EnemyDown` из файла `exceptions.py` если у соперника закончились жизни |
| 61 | +- `__init__` - для инициализации соперника, принимает только уровень и сложность, что бы вычислить кол-во жизней, |
| 62 | + назначает кол-во жизней и уровень. |
| 63 | +- `select_attack` - метод для случайного выбора атаки (1, 2, 3), использует константы из файла `settings.py` |
| 64 | +- `decrease_lives` - уменьшает жизни при проигрыше "боя", вызывает исключение `EnemyDown` из файла `exceptions.py` если у |
| 65 | + соперника закончились жизни |
61 | 66 |
|
62 | 67 | ### game.py |
63 | 68 |
|
|
67 | 72 |
|
68 | 73 | Аттрибуты: |
69 | 74 |
|
70 | | -- player - объект игрока |
71 | | -- enemy - объект соперника, при убийстве будет создан новый, с более высоким уровнем |
72 | | -- mode - уровень сложности, normal или hard, содержит либо 1, либо 2, которые определены константами |
| 75 | +- `player` - объект игрока |
| 76 | +- `enemy` - объект соперника, при убийстве будет создан новый, с более высоким уровнем |
| 77 | +- `mode` - уровень сложности, normal или hard, содержит либо 1, либо 2, которые определены константами |
73 | 78 |
|
74 | 79 | Методы: |
75 | 80 |
|
76 | | -- __init__ - принимает объект игрока и уровень сложности, создает первого соперника |
77 | | -- create_enemy - метод для создания нового соперника |
78 | | -- play - метод запуска игры. Запускает бесконечный цикл в одной итерации которого происходит "бой". Для этого вызывает два метода, `fight` и `handle_fight_result`. Отслеживает не произошло ли одно из исключений при вызове второго метода `GameOver` или `EnemyDown`, при первом завершает игру и вызывает метод для записи очков, при втором создает нового, более сильного соперника. |
79 | | -- fight - метод запрашивает у пользователя и соперника атаки, из констант получает результат боя (-1, 0, 1) |
80 | | -- handle_fight_result - принимает результат боя, и в зависимости от результата отнимает жизни либо у игрока, либо у соперника. |
81 | | -- save_score - вызывает сохранение очков при помощи вызова класса из файла `score.py` |
| 81 | +- `__init__` - принимает объект игрока и уровень сложности, создает первого соперника |
| 82 | +- `create_enemy` - метод для создания нового соперника |
| 83 | +- `play` - метод запуска игры. Запускает бесконечный цикл в одной итерации которого происходит "бой". Для этого вызывает |
| 84 | + два метода, `fight` и `handle_fight_result`. Отслеживает не произошло ли одно из исключений при вызове второго |
| 85 | + метода `GameOver` или `EnemyDown`, при первом завершает игру и вызывает метод для записи очков, при втором создает |
| 86 | + нового, более сильного соперника. |
| 87 | +- `fight` - метод запрашивает у пользователя и соперника атаки, из констант получает результат боя (-1, 0, 1) |
| 88 | +- `handle_fight_result` - принимает результат боя, и в зависимости от результата отнимает жизни либо у игрока, либо у |
| 89 | + соперника. |
| 90 | +- `save_score` - вызывает сохранение очков при помощи вызова класса из файла `score.py` |
82 | 91 |
|
83 | 92 | ### exceptions.py |
84 | 93 |
|
85 | | -Классы |
| 94 | +Классы |
86 | 95 |
|
87 | | -GameOver - когда у игрока заканчиваются жизни |
88 | | -EnemyDown - когда у соперника заканчиваются жизни |
| 96 | +- `GameOver` - когда у игрока заканчиваются жизни |
| 97 | +- `EnemyDown` - когда у соперника заканчиваются жизни |
89 | 98 |
|
90 | 99 | ### settings.py |
91 | 100 |
|
@@ -138,67 +147,75 @@ ATTACK_PAIRS_OUTCOME = { |
138 | 147 |
|
139 | 148 | Классы: |
140 | 149 |
|
141 | | -- ScoreHandler - класс для обработки очков |
142 | | -- GameRecord - класс содержащий записи об игроках |
143 | | -- PlayerRecord - класс для хранения записи об одном игроке |
| 150 | +- `ScoreHandler` - класс для обработки очков |
| 151 | +- `GameRecord` - класс содержащий записи об игроках |
| 152 | +- `PlayerRecord` - класс для хранения записи об одном игроке |
144 | 153 |
|
145 | 154 | #### ScoreHandler |
146 | 155 |
|
147 | 156 | Аттрибуты: |
148 | 157 |
|
149 | | -- game_record - объект класса GameRecord, туда мы будем считывать сохраненные очки и записывать таблицу с новыми |
150 | | -- file_name - имя файла откуда и куда мы записываем очки |
| 158 | +- `game_record` - объект класса GameRecord, туда мы будем считывать сохраненные очки и записывать таблицу с новыми |
| 159 | +- `file_name` - имя файла откуда и куда мы записываем очки |
151 | 160 |
|
152 | 161 | Методы: |
153 | 162 |
|
154 | | -- __init__ - принимает только имя файла и сохраняет его. Вызывает метод для чтения файла. |
155 | | -- read - метод, который будет читать файл и каждую его строку сохранять в PlayerRecord, которые будут сохранятся в GameRecord. |
156 | | -- save - метод, который нужен, что бы записать новые результаты в файл (предварительно отсортировать и обрезать, если нужно) |
157 | | -- display - метод для отображения очков |
| 163 | +- `__init__` - принимает только имя файла и сохраняет его. Вызывает метод для чтения файла. |
| 164 | +- `read` - метод, который будет читать файл и каждую его строку сохранять в `PlayerRecord`, которые будут сохранятся в |
| 165 | + `GameRecord`. |
| 166 | +- `save` - метод, который нужен, что бы записать новые результаты в файл (предварительно отсортировать и обрезать, если |
| 167 | + нужно) |
| 168 | +- `display` - метод для отображения очков |
158 | 169 |
|
159 | 170 | #### GameRecord |
160 | 171 |
|
161 | 172 | Аттрибуты: |
162 | 173 |
|
163 | | -- records - список объектов типа PlayerRecord |
| 174 | +- `records` - список объектов типа PlayerRecord |
164 | 175 |
|
165 | 176 | Методы: |
166 | 177 |
|
167 | | -- __init__ - создает объект с пустым списком записей |
168 | | -- add_record - метод для добавления записи об одном игроке. Должен проверять нет ли у нас уже такого игрока, и если есть, то перезаписывать его результат. Тот же самый игрок проверяется по имени и уровню сложности (игрок может быть представлен в таблице два раза на разном уровне сложности). (Можно использовать меджик метод __eq__ для поиска через `in`) |
169 | | -- prepare_records - метод для сортировки существующих результатов и обрезки до максимального кол-ва указанного в настройках |
170 | | - |
| 178 | +- `__init__` - создает объект с пустым списком записей |
| 179 | +- `add_record` - метод для добавления записи об одном игроке. Должен проверять нет ли у нас уже такого игрока, и если |
| 180 | + есть, то перезаписывать его результат. Тот же самый игрок проверяется по имени и уровню сложности (игрок может быть |
| 181 | + представлен в таблице два раза на разном уровне сложности). (Можно использовать меджик метод `__eq__` для поиска |
| 182 | + через `in`) |
| 183 | +- `prepare_records` - метод для сортировки существующих результатов и обрезки до максимального кол-ва указанного в |
| 184 | + настройках |
171 | 185 |
|
172 | 186 | #### PlayerRecord |
173 | 187 |
|
174 | 188 | Аттрибуты: |
175 | 189 |
|
176 | | -- name - имя игрока |
177 | | -- mode - уровень сложности |
178 | | -- score - кол-во очков |
| 190 | +- `name` - имя игрока |
| 191 | +- `mode` - уровень сложности |
| 192 | +- `score` - кол-во очков |
179 | 193 |
|
180 | 194 | Методы: |
181 | 195 |
|
182 | | -- __init__ - для создания объекта принимает все три параметра |
183 | | -- __gt__ - для того что бы можно было отсортировать записи по очкам |
184 | | -- __str__ - для удобного вывода данных |
| 196 | +- `__init__` - для создания объекта принимает все три параметра |
| 197 | +- `__gt__` - для того что бы можно было отсортировать записи по очкам |
| 198 | +- `__str__` - для удобного вывода данных |
185 | 199 |
|
186 | 200 | ### main.py |
187 | 201 |
|
188 | 202 | Содержит функции: |
189 | 203 |
|
190 | | -- main - для запуска всего кода, внутри этой функции должен быть запущен процесс выбора из трех пунктов (Запуск игры, посмотреть очки и выйти из игры (1,2,3)) |
191 | | -- play_game - вызывается если игрок выбрал начать игру, в этой функции будет запущен процесс создания игрока, создание объекта игры и запуск самой игры |
192 | | -- create_player - спросить игрока имя и сложность, создать объект игрока с указанным именем, и передать объект игрока и сложность в класс игры. |
193 | | -- show_scores - показать очки, используя класс `ScoreHandler` |
194 | | -- exit - выйти из игры |
| 204 | +- `main` - для запуска всего кода, внутри этой функции должен быть запущен процесс выбора из трех пунктов (Запуск игры, |
| 205 | + посмотреть очки и выйти из игры (1,2,3)) |
| 206 | +- `play_game` - вызывается если игрок выбрал начать игру, в этой функции будет запущен процесс создания игрока, создание |
| 207 | + объекта игры и запуск самой игры |
| 208 | +- `create_player` - спросить игрока имя и сложность, создать объект игрока с указанным именем, и передать объект игрока и |
| 209 | + сложность в класс игры. |
| 210 | +- `show_scores` - показать очки, используя класс `ScoreHandler` |
| 211 | +- `exit` - выйти из игры |
195 | 212 |
|
196 | 213 | ## Пример как выглядит содержимое файла с очками |
197 | 214 |
|
198 | | - |
199 | | -Name Mode Score |
200 | | -Vlad Normal 14 |
201 | | -Test Hard 12 |
202 | | -Jack Normal 12 |
203 | | -Vlad Hard 10 |
204 | | -Jack Hard 9 |
| 215 | +| Name | Mode | Score | |
| 216 | +|------|--------|-------| |
| 217 | +| Vlad | Normal | 14 | |
| 218 | +| Test | Hard | 12 | |
| 219 | +| Jack | Normal | 12 | |
| 220 | +| Vlad | Hard | 10 | |
| 221 | +| Jack | Hard | 9 | |
0 commit comments