Opened 4 years ago
Closed 4 years ago
#717 closed ожидается проверка (задача сдана)
HW #2
Reported by: | onofriychuk.ilya | Owned by: | Sokolov Viacheslav |
---|---|---|---|
Component: | HW #2 (X0) | Version: | 2.0 |
Keywords: | Cc: |
Description
Change History (3)
comment:1 Changed 4 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|
comment:2 Changed 4 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|---|
Version: | 1.0 → 2.0 |
comment:3 Changed 4 years ago by
Resolution: | → задача сдана |
---|---|
Status: | assigned → closed |
64 std::vector<std::vector<Player>> _board;
65 std::vector<std::pair<int ,int>> winLine;
66 static const std::vector<DirectionAsPair?> directions;
67 int inARowToWin;
68 int _height;
69 int _width;
70 int countFillCell = 0;
71 Player _cur_player = Player::O;
72 StateGame? _state;
какие-то приватные поля начинаются с _
, какие-то - нет
std::optional<const std::vector<std::pair<int, int>>*>
либо optional, либо const*. Вместе нет смысла.
4 class StdioBoardView? final:public BoardView?{
пробелов бы
93 if (checkDirection(rows, colomns, HORIZONTAL)) {
94 _state.setFinish(player);
95 } else if (checkDirection(rows, colomns, VERTICAL)) {
96 _state.setFinish(player);
97 } else if (checkDirection(rows, colomns, LEFT_DIAG)) {
98 _state.setFinish(player);
99 } else if (checkDirection(rows, colomns, RIGHT_DIAG)) {
100 _state.setFinish(player);
можно же цикл написать
отсутствует проверка ошибок вывода в std::cout
Ввод 0-0 будет обработан не так, как требуется в условии
State:
на мой вкус удачнее названия IN_PROGRESS, FINISHED
Возможно, логичнее у StateGame? сделать конструктор по-умолчанию
points -> inARow?
const у методов не хватает
switchPlayer должен быть private?
он используется в тестах, но сам метод непонятный - с точки зрения игры это что-то невалидное
из названия getWinLine непонятно, что именно делает метод (если возвращает набор позиций, который привел к победе, то он не всегда существует - было бы уместно использовать std::optional)
вместо методов check* удобнее сделать метод checkDirection, который принимает направление, и набор directions: {{0,1}, {1,0}, {1, -1}, {1, 1}}
в целом все ок, но названия сбивают с толку: поле - это все же не набор игроков (а набор символов), поэтому можно либо завести сущность, соответствующую символу на поле (CellContent?, например), либо переименовать поле (что-нибудь про то, кто сделал ход в клетку)
Кажется, silent - это свойство не GameController?, а StdioBoardView?
ViewInput? и BoardView? стоит вынести из StdioBoardView?.h
У структур можно не делать конструктор, а использовать direct initialization
Uncorrect -> Incorrect
25 points_to_win = std::min(points, std::max(width, height));
зачем это? :)