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 Sokolov Viacheslav

Type: ожидается проверкаожидаются исправления

Ввод 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}}

std::vector<std::vector<Player>> _field;

в целом все ок, но названия сбивают с толку: поле - это все же не набор игроков (а набор символов), поэтому можно либо завести сущность, соответствующую символу на поле (CellContent?, например), либо переименовать поле (что-нибудь про то, кто сделал ход в клетку)

Кажется, silent - это свойство не GameController?, а StdioBoardView?

ViewInput? и BoardView? стоит вынести из StdioBoardView?.h

У структур можно не делать конструктор, а использовать direct initialization

Uncorrect -> Incorrect

25 points_to_win = std::min(points, std::max(width, height));
зачем это? :)

comment:2 Changed 4 years ago by onofriychuk.ilya

Type: ожидаются исправленияожидается проверка
Version: 1.02.0

comment:3 Changed 4 years ago by Sokolov Viacheslav

Resolution: задача сдана
Status: assignedclosed

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

Note: See TracTickets for help on using tickets.