Opened 4 years ago
Closed 4 years ago
#715 closed ожидается проверка (задача сдана)
HW #2 (X0)
Reported by: | Gleb Marin | Owned by: | Sokolov Viacheslav |
---|---|---|---|
Component: | HW #2 (X0) | Version: | 2.0 |
Keywords: | Cc: |
Description
Change History (5)
comment:1 Changed 4 years ago by
Owner: | changed from Evgeny Linsky to Sokolov Viacheslav |
---|---|
Status: | new → assigned |
comment:2 Changed 4 years ago by
Version: | → 1.0 |
---|
comment:3 Changed 4 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|
O move: XXXX......
OOOOO.....
не хватает перевода строки
По -1 -1 игра не останавливается
NcursesBoardActivity? не final
Желательно разделять классы по файлам: 1 класс - 1 файл. Сейчас каша и непонятно, где какой класс искать.
посмотрите на std::make_unique
Зачем нужен Activity пока не понял. Как я уже писал, предполагается следующая структура:
main - создается Board, View, Controller
Board - 1 класс в иерархии
View - 2 разных экземпляра интерфейса
Controller - 1 класс в иерархии
controller знает про board, view
view знает про board
после создания классов зовется что-нибудь вроде
controller.gameCycle();
ответственность классов:
controller - звать методы view, на основании состояния поля принимать решения об остановке или продолжении игры (контролирует ход игры)
view - никак не влияет на состояние доски, ответственность - взаимодействие с пользователем (отображение для пользователя)
board - состояние доски
разбиение ответственности позволяет хорошо декомпозировать программу и уйти от дублирования кода
какую цель преследует Activity я пока не понял, зачем их несколько и какую выгоду несет этот интерфейс - тоже
Тесты отрисовываются красиво, к curses интерфейсу с точки зрения пользователя вопросов нет
считывание в случае stdio происходит неправильно:
1)
ввод
0
1
будет обработан не так, как просят в условии
2)
ввод
0-0x
будет обработан не так, как просят в условии
comment:4 Changed 4 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|---|
Version: | 1.0 → 2.0 |
comment:5 Changed 4 years ago by
Resolution: | → задача сдана |
---|---|
Status: | assigned → closed |
Поле выводится отраженным.
После (-1, -1) не нужно печатать поле, а в остальных случаях окончания игры - нужно.
Вместо предложенной простой архитектуры реализована какая-то своя, и в ней поправить вот эту мелочь - нетривиальная задача.
Текущая иерархия переусложненная, у классов нет четкой ответственности, View знает про Controller, хотя не должен. Зачем нужен Activity - я так и не понял. В реализованном варианте кода раза в 4 больше, чем могло бы быть, отношения между сущностями запутанные, как следствие - его тяжело менять, вносить конкретные изменения.
0-0 считается корректным ходом, но таковым не является
08 008
считается некорректным ходом, но валиден по условию
Если победа происходит последним ходом - неверно регистрируется ничья.
Назначай на своего практика, а то теряется и не проверяется.