Opened 4 years ago
Closed 4 years ago
#712 closed ожидается проверка (задача сдана)
HW #2
Reported by: | fedorov.vladimir | Owned by: | Дмитрий Свиридкин |
---|---|---|---|
Component: | HW #2 (X0) | Version: | 3.0 |
Keywords: | Cc: |
Description
Attachments (1)
Change History (7)
comment:1 Changed 4 years ago by
Component: | HW #1 (BMP) → HW #2 (X0) |
---|
Changed 4 years ago by
Attachment: | Screenshot_20200201_172616.png added |
---|
comment:2 Changed 4 years ago by
Owner: | changed from Дмитрий Свиридкин to fedorov.vladimir |
---|---|
Type: | ожидается проверка → ожидаются исправления |
Ход за пределами поля обрабатывается некорректно.
std::cin >> x >> y;
Считывая ход таким образом у вас допустимым становятся два числа, разделенные переводом строки.
Используйте getline и istringstream
В ncurses версии у вас кнопка выхода отличается от указанной в задании --- стоит об этом написать сразу, а не когда игра закончится.
Макрос DO_CHECK -- часть интерфейса тестового "фреймворка" -- должен быть в test.h, а не в конечном cpp
Массив field у вас публичный -- его могут менять в обход методов move.
Если нужно начинать с непустого поля, завернить массив в структуру и параметризуйте ей конструктор Board. Для доступа на чтение клеток предоставьте константную функцию.
При множественных невалидных ходах в ncurses версии накапливаются артефакты-подсветки.
15 + 8 + 9.5
comment:3 Changed 4 years ago by
Owner: | changed from fedorov.vladimir to Дмитрий Свиридкин |
---|---|
Type: | ожидаются исправления → ожидается проверка |
Version: | 1.0 → 2.0 |
comment:4 Changed 4 years ago by
Owner: | changed from Дмитрий Свиридкин to fedorov.vladimir |
---|---|
Type: | ожидается проверка → ожидаются исправления |
==30038== Invalid read of size 4 ==30038== at 0x10AF94: Board::canMove(int, int) const (in /home/dmis/DATA/WORKSPACE/cpp-labs/hw_02/check/hw_02/hw_02) ==30038== by 0x10CD69: GameController::runGame(GameMod) (in /home/dmis/DATA/WORKSPACE/cpp-labs/hw_02/check/hw_02/hw_02) ==30038== by 0x10A963: main (in /home/dmis/DATA/WORKSPACE/cpp-labs/hw_02/check/hw_02/hw_02) ==30038== Address 0x1ffeffa448 is not stack'd, malloc'd or (recently) free'd
Bad Move!
-> Bad move!
Зачем контроллеру параметр RunGame?? Он все равно никак на NCursesView не влияет.
Параметризуйте им конструктор StdioView?.
Все случаи проверок (вверх/вниз/диагональ) можно покрыть функцией:
checkDirection(player, x,y, dx, dy);
GameState Board::UpdateState(Player player) const { for (int x = 0; x < 6; x++) { for (int y = 0; y < 6; y++) {
У вас везде для размеров были параметры, а тут магические константы.
А вдруг размер поменяется?
if (tokens[i][j] < '0' || tokens[i][j] > '9') { is_digit = false; break; }
std::isdigit
а еще есть std::stoi
17 + 8 + 10
comment:5 Changed 4 years ago by
Owner: | changed from fedorov.vladimir to Дмитрий Свиридкин |
---|---|
Type: | ожидаются исправления → ожидается проверка |
Version: | 2.0 → 3.0 |
comment:6 Changed 4 years ago by
Resolution: | → задача сдана |
---|---|
Status: | assigned → closed |
Проверка состояния поля некорректна
OXOXXOXOXX XXOXOXXO.O XO.OXOOXOX XOOOOXOOXX XXOXOXXXOX OXXXXOXOOX OOXOXOXO.O OOXXOXOXXO XOOOO.OOOX XXOXXOXXOO X wins!
Крестики тут точно не побеждали.
И тут тоже они еще не успели победить
O.OXOOXOXO XXOXOXX.OO XOXOXOOXOX XO.O.XOOX. XXO.OXXXOX ..XXXOX.OX OOX.XOXOXO O..XOXOXXO XOOOOXOOOX X.OXX.XXOO X wins!
file:///home/dmis/Pictures/Screenshot_20200201_172616.png