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)

Screenshot_20200201_172616.png (3.2 KB) - added by Дмитрий Свиридкин 4 years ago.
file:///home/dmis/Pictures/Screenshot_20200201_172616.png

Download all attachments as: .zip

Change History (7)

comment:1 Changed 4 years ago by fedorov.vladimir

Component: HW #1 (BMP)HW #2 (X0)

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

Last edited 4 years ago by Дмитрий Свиридкин (previous) (diff)

comment:3 Changed 4 years ago by fedorov.vladimir

Owner: changed from fedorov.vladimir to Дмитрий Свиридкин
Type: ожидаются исправленияожидается проверка
Version: 1.02.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 fedorov.vladimir

Owner: changed from fedorov.vladimir to Дмитрий Свиридкин
Type: ожидаются исправленияожидается проверка
Version: 2.03.0

comment:6 Changed 4 years ago by Дмитрий Свиридкин

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

Проверка состояния поля некорректна

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!
Note: See TracTickets for help on using tickets.