Change History (5)

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

Owner: changed from Дмитрий Свиридкин to Бубнов Данил Константинович
Type: ожидается проверкаожидаются исправления

После неверного хода не нужно повторно выводить поле.
Draw -> Draw. (у вас отсутсвует точка)

Память подтекает

==8473== HEAP SUMMARY:
==8473==     in use at exit: 16 bytes in 1 blocks
==8473==   total heap usage: 352 allocs, 351 frees, 98,232 bytes allocated
==8473== 
==8473== 16 bytes in 1 blocks are definitely lost in loss record 1 of 1
==8473==    at 0x483AE63: operator new(unsigned long) (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==8473==    by 0x10BC5E: GameController::GameController(Board&, GameMode, ViewMode) (in /home/dmis/DATA/WORKSPACE/cpp-labs/hw_02/check/hw_02/hw_02)
==8473==    by 0x10A4E7: main (in /home/dmis/DATA/WORKSPACE/cpp-labs/hw_02/check/hw_02/hw_02)
==8473== 

Два числа, разделенные переносом строки, у вас воспринимаются валидным ходом.
Используйте getline и istringstream

Программа, запускающая тесты, должна возвращать ненулевой код, если что-то упало. У вас всегда ноль.

Board(int h ,int w, int tw);
Параметры стоит переименовать, чтоб было понятно, что они означают. Особенно третий.

virtual std::pair<int, int> getTurn() const = 0;

Использовать std::pair в публичных интерфейсах не стоит. Очень часто не понятно, что имеется в виду. Лучше сделать собственную структуру на два поля и дать ей (и полям) подходящее ясное название.
Чтобы пользование вашим кодом не превращалось в "эффективный STL" с его восхитительными конструкциями
return map.insert({x, y}).first->second

Пустой файл BoardTest?, если он вам не нужен, лучше удалить.

Огромную функцию, проверяющую текущее состояние можно разбить на несколько.
Еще ее можно переписать, объединив логику проверки каждого направления в функцию, принимающую начальную точку и направление сдвига.

    if (x >= 0 && x < width
        && y >= 0 && y < height 
        && board[y][x] == Player::Empty
        && cur_player == player) {
            return true;
    }
    return false;

Аргумент if можно просто поставить в return

У вас есть оператор вывода в поток для Player, но в printBoard скопирован его код вместо вызова.

Статическое поле exit_pair вероятно должно быть константным.


12 + 6 + 0

comment:2 Changed 4 years ago by Бубнов Данил Константинович

Owner: changed from Бубнов Данил Константинович to Дмитрий Свиридкин
Type: ожидаются исправленияожидается проверка
Version: 1.02.0

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

Owner: changed from Дмитрий Свиридкин to Бубнов Данил Константинович
Type: ожидается проверкаожидаются исправления

Обработка победы ходом, заполняющим последнюю пустую клетку, не работает.

0 0a воспринимается валидным ходом забыли проверить состояние потока

Режим silent стоит сделать параметром конкретного view, а не контроллера. А то у вас потенциально может получиться silent ncurses. И ввод, скорее всего, не будет работать.


16 + 8 + 10

comment:4 Changed 4 years ago by Бубнов Данил Константинович

Owner: changed from Бубнов Данил Константинович to Дмитрий Свиридкин
Type: ожидаются исправленияожидается проверка
Version: 2.03.0

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

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

20 + 10 + 10

Note: See TracTickets for help on using tickets.