Opened 4 years ago
Closed 4 years ago
#708 closed ожидается проверка (задача сдана)
HW #2
Reported by: | Vladislav Nosivskoy | Owned by: | Дмитрий Свиридкин |
---|---|---|---|
Component: | HW #2 (X0) | Version: | 3.0 |
Keywords: | Cc: |
Description
Почему-то не компилируется фреймворк тестирования, хотя изначально вообще скопировал ваш код с пары, потом пытался изменять, не помогло. Остальная часть должна работать корректно.
Change History (6)
comment:1 Changed 4 years ago by
Owner: | changed from Дмитрий Свиридкин to Vladislav Nosivskoy |
---|---|
Type: | ожидается проверка → ожидаются исправления |
comment:2 Changed 4 years ago by
Owner: | changed from Vladislav Nosivskoy to Дмитрий Свиридкин |
---|---|
Type: | ожидаются исправления → ожидается проверка |
Version: | 1.0 → 2.0 |
comment:3 Changed 4 years ago by
Owner: | changed from Дмитрий Свиридкин to Vladislav Nosivskoy |
---|---|
Type: | ожидается проверка → ожидаются исправления |
Перед выводом поля нужен перевод строки.
Некорректно обрабатывается победа последним ходом, заполняющим последнюю клетку поля.
два числа, разделенных переводом строки, воспринимаются как валидный ход.
Возможно, лучше параметризовать потоками только View. А контроллер сделать унифицированным, подходящим для любого View.
Реализовать игровой цикл с помощью рекурсии -- плохая идея. Стэк не бесконечен.
14 + 7 + 0
comment:4 Changed 4 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|---|
Version: | 2.0 → 3.0 |
comment:5 Changed 4 years ago by
Owner: | changed from Vladislav Nosivskoy to Дмитрий Свиридкин |
---|
comment:6 Changed 4 years ago by
Resolution: | → задача сдана |
---|---|
Status: | assigned → closed |
src/stdioModelView.cpp:8:1: note: ‘std::istream_iterator’ is defined in header ‘<iterator>’; did you forget to ‘#include <iterator>’? 7 | #include "stdioModelView.h" +++ |+#include <iterator>
if (currentState == END_DRAW) { vw.printDraw(); } else if (currentState == END_X_WIN) { vw.printXWins(); } else if (currentState == END_O_WIN) { vw.printOWins(); }
Есть подозрение, что это должна быть один метод View::printResult(state)
if (isNumbers && (int)tokens.size() == 2) { std::istringstream isXY(tokens[0] + " " + tokens[1]); isXY >> x >> y; } else { x = b.width; y = b.height; }
Сигнализировать об ошибке ввода лучше в возвращаемом значении функции. У вас она все равно void возвращает.
20 + 8.5 + 0
у вас есть каталог test и вы пытаетесь сделать еще и бинарь test. Конфликт имен.
multiple definition of `Testing::testCases'; obj/test.o:(.bss+0x0): first defined here
Заголовочный файл с глобальной переменной подключен в двух разных .cpp, объектники которых объединяются в один.
Можно либо завернуть в inline-функцию, либо спрятать глобальную переменную в test.cpp и реализовать конструктор базовогго класса там же.
Либо использовать static inline из C+17.
Но лучше спрятать в test.cpp
+ вы забыли в макросе вызвать конструктор для новосозданного теста
Подставновка filename и ##exp видимо перепутаны местамми
Переключение игроков не работает
После каждого некорректного кода не нужно перевыводить поле
Где-то остутствуют необъодимые переводы строк.
Зачем код (отличающийся одним if (silent) return) продублирован в двух классах? Аналогично, зачем продублирован код всяких приглашений в default и в Silent версии?
Код конктрукторов board дублируется. Делегируйте, либо уберите конструктор без параметров и используйте параметры по умолчанию для конструктора с параметрами.
getMovePlayerX и getMovePlayerO -- две совершенно одинаковые функции. Сделайте одну и передайте подходящие аргументы.
Параметризовать контроллер потоками ввода и вывода -- это здорово.
5+2+0