Change History (5)

comment:1 Changed 4 years ago by sukhodolskiy.maksim

Version: 1.02.0

comment:2 Changed 4 years ago by Sokolov Viacheslav

Version: 2.01.0

comment:3 Changed 4 years ago by Sokolov Viacheslav

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

29 class Board {

final

37 BoardState? checkRows() const;
39 BoardState? checkCols() const;
41 BoardState? checkFirstDiag() const;
43 BoardState? checkSecDiag() const;

можно объединить в один метод, который проверяет, есть ли 5 в ряд по направлению (направление же можно перебрать в цикле по {{0, 1}, {1, 0}, {1, 1}, {1, -1}}

59 TileState? field[FIELD_SIZE][FIELD_SIZE]{};

зачем {}?

45 BoardState? checkWhoToMove() const;

предлагаю именовать whosTurn или что-то вроде того (можно просто state())

15 explicit BoardView?(Board &board, Mode);

так BoardView? знает про все свои реализации, что плохо для интерфейса

28 Board *board_;
указатель ради копируемости?
не очень понятно, зачем это поле в интерфейсе

4 #include "StdioBoardView?.h"
5 #include "NcursesBoardView?.h"
6 #include <cassert>
7 #include <cstring>

все эти включения не нужны в include/GameController.h

19 virtual void runGame() = 0;
21 virtual void startGame() = 0;
23 virtual void finishGame() = 0;
25 virtual bool makeTurn(Point p) = 0;

в задании предполагается, что BoardView? отвечает за взаимодействие с пользователем, а Controller - за исполнение игрового цикла. То есть во view уместны методы вроде
считать / вывести (например, отрисовать поле, получить очередной (не факт, что валидный) ход от пользователя и тп). Ориентиром может служить отсутствие дублирования кода между разными View. makeTurn, например, типичный метод для Controller, а во view его быть не должно.

14 bool xInRange(int left, int right) const;

лучше lower / upper как менее завязанные на геометрию (еще непонятно, inclusive или exclusive)

comment:4 Changed 4 years ago by sukhodolskiy.maksim

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

comment:5 Changed 4 years ago by Sokolov Viacheslav

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

В Board ничего не поменялось

Имена не самые удачные. Например,
isGameEnd можно было бы именовать canceled / stopped / endRequested / ... - так понятнее, что речь про отмену снаружи, а не потому, что поле заполнено.

17 assert(false); is this ok if not using exceptions?

yes

не обрабатываются потенциальные ошибки ввода / вывода

Note: See TracTickets for help on using tickets.