dots_v1#1
Conversation
12gerts
left a comment
There was a problem hiding this comment.
- Нет README
- Нет аннотаций типов
- Не настроен black и mypy
- Нет прокоммита
- Нет указания о используемых библиотеках
- Нет тестов
|
|
||
| class DotsGame: | ||
| def __init__(self, root): | ||
| self.root = root |
| self.setup_ui() | ||
| self.create_grid() |
| color = "darkred" | ||
| winning_score = red_score | ||
| else: | ||
| winner = "Ничья" |
| if hasattr(self.game_logic, 'is_board_full') and self.game_logic.is_board_full(): | ||
| message = f"Доска заполнена! Игра окончена! Победитель: {winner}" if winner != "Ничья" else "Доска заполнена! Игра окончена! Ничья!" | ||
| else: | ||
| message = f"Игра завершена досрочно! Победитель: {winner}" if winner != "Ничья" else "Игра завершена досрочно! Ничья!" |
There was a problem hiding this comment.
вот это бы упростить можно. А еще можно в enum сохранять сразу Победитель: Красный игрок и не надо будет условие проверять, вы все равно нигде это больше не используете
| entry["score"] | ||
| )) | ||
|
|
||
| def create_end_game_button(self): |
There was a problem hiding this comment.
огромный метод, декомпозиция нужна
|
|
||
|
|
||
| def load_leaderboard(): | ||
| if not os.path.exists("leaderboard.txt"): |
| leaderboard = [] | ||
| for line in lines: | ||
| if line.strip(): | ||
| parts = line.strip().split(",") |
There was a problem hiding this comment.
так может лучше json вместо txt?
| "name": parts[1], | ||
| "score": int(parts[2]) | ||
| }) | ||
| while len(leaderboard) < 3: |
|
|
||
|
|
||
| def update_leaderboard(new_name, new_score): | ||
| leaderboard = load_leaderboard() |
There was a problem hiding this comment.
Сделайте его моделькой какой-нибудь вместо словаря (BaseModel, dataclass, NamedTuple)
|
|
||
| def update_leaderboard(new_name, new_score): | ||
| leaderboard = load_leaderboard() | ||
| if new_score > leaderboard[-1]["score"] or leaderboard[-1]["name"] == "None": |
There was a problem hiding this comment.
лучше конвертировать условие и сразу выйти
There was a problem hiding this comment.
.idea должна быть в gitignore
| @@ -1 +1,63 @@ | |||
| # Dots_Game No newline at end of file | |||
| # 🎮 Точки - классическая стратегическая игра | |||
There was a problem hiding this comment.
как устанавливать? как запускать?
| RED_WIN = ("Красный игрок", "darkred") | ||
| DRAW = ("Ничья", "black") | ||
|
|
||
| def __init__(self, winner_text: str, color: str) -> None: |
There was a problem hiding this comment.
откуда в enum инит взялся???
| BLUE_WIN = ("Синий игрок", "darkblue") | ||
| RED_WIN = ("Красный игрок", "darkred") | ||
| DRAW = ("Ничья", "black") |
There was a problem hiding this comment.
вот это что-то странное, если честно.
Сделайте что- то одно и mapping
| blue_score = self._game_logic.scores[1] | ||
| red_score = self._game_logic.scores[2] |
There was a problem hiding this comment.
что-то как-то не особо красиво это
| ) | ||
|
|
||
| if result != GameResult.DRAW: | ||
| winning_score = blue_score if result == GameResult.BLUE_WIN else red_score |
There was a problem hiding this comment.
тут тоже непонятно зачем условие, можно сразу хранить нужное
| for i in range(start_x, end_x, CELL_SIZE): | ||
| self._canvas.create_line(i, start_y, i, end_y, tags="grid_line", fill="lightblue") | ||
| for i in range(start_y, end_y, CELL_SIZE): |
| else: | ||
| pass |
| f"{'Доска заполнена' if board_full else 'Игра завершена досрочно'}! " f"Игра окончена! {result.winner_text}" | ||
| ) | ||
|
|
||
| winning_score = blue_score if result == GameResult.BLUE_WIN else red_score |
There was a problem hiding this comment.
тут без условия, маппинг нужен
| flake8 = "^7.2.0" | ||
| isort = "^6.0.1" | ||
| pre-commit = "^4.2.0" | ||
| pydantic = "^2.11.3" |
There was a problem hiding this comment.
для чего он добавился, если он нигде не используется?
There was a problem hiding this comment.
pydantic добавила, потому что при запуске с poetry обнаружила, что он используется в leaderboard и нигде не указан как внешняя библиотека
There was a problem hiding this comment.
А он сам не подтягивается?
There was a problem hiding this comment.
при запуске с poetry не пропускал, пока я не добавила явно в зависимости, поэтому решила оставить
v1