UrFU-Programming / Pairs

0 stars 12 forks source link

После открытия пары клеток закрывать их при открытии третьей. #5

Open Kaffeine opened 8 years ago

Kaffeine commented 8 years ago

@UrFU-Programming/X-Team

План:

  1. Добавить в Cell сигнал cellOpened(Cell *cell).
  2. Испускать сигнал в методе Cell::open().
  3. В Field добавить слот onCellOpened и подключить его к Cell::cellOpened.
  4. Добавить в Field поля Cell m_firstCell; Cell m_secondCell.
  5. Добавить в Field пустой слот closeCells().
  6. В слоте onCellOpened проверять firstCell и secondCell. Если первая клетка не задана, то задавать m_firstCell = cell, если вторая клетка не задана, задавать её = Cell. Если обе клетки заданы, вызывать closeCells().
  7. Добавить в слот closeCells() закрытие первой и второй клетки и задание полей-указателей на клетки в nullptr.

Разбейте решение на шесть коммитов (первые два пункта объедините в один коммит).

Информация о метаобъектной системе Qt, сигналах, слотах и свойствах: https://github.com/UrFU-Programming/Mines/wiki/Task#6-qobject-%D1%81%D0%B2%D0%BE%D0%B9%D1%81%D1%82%D0%B2%D0%B0-%D1%81%D0%B8%D0%B3%D0%BD%D0%B0%D0%BB%D1%8B-%D0%B8-%D1%81%D0%BB%D0%BE%D1%82%D1%8B

Спрашивайте, что непонятно.

MaxPavlutcky commented 8 years ago

Доброго времени суток! Как проверить условие,задана ли клетка? Вопрос по 6 пункту 5 задания по Pairs.

Понедельник, 18 апреля 2016, 20:19 +05:00 от Alexandr Akulich notifications@github.com:

@UrFU-Programming/x-team План:

  1. Добавить в Cell сигнал cellOpened(Cell *cell).
  2. Испускать сигнал в методе Cell::open().
  3. В Field добавить слот onCellOpened и подключить его к Cell::cellOpened.
  4. Добавить в Field поля Cell m_firstCell; Cell m_secondCell.
  5. Добавить в Field пустой слот closeCells().
  6. В слоте onCellOpened проверять firstCell и secondCell. Если первая клетка не задана, то задавать m_firstCell = cell, если вторая клетка не задана, задавать её = Cell. Если обе клетки заданы, вызывать closeCells().
  7. Добавить в слот closeCells() закрытие первой и второй клетки и задание полей-указателей на клетки в nullptr. Разбейте решение на шесть коммитов (первые два пункта объедините в один коммит). Информация о метаобъектной системе Qt, сигналах, слотах и свойствах: https://github.com/UrFU-Programming/Mines/wiki/Task#6-qobject-%D1%81%D0%B2%D0%BE%D0%B9%D1%81%D1%82%D0%B2%D0%B0-%D1%81%D0%B8%D0%B3%D0%BD%D0%B0%D0%BB%D1%8B-%D0%B8-%D1%81%D0%BB%D0%BE%D1%82%D1%8B Спрашивайте, что непонятно. — You are receiving this because you were mentioned. Reply to this email directly or view it on GitHub
Kaffeine commented 8 years ago

"Первая клетка" хранится в поле m_firstCell. "Задана ли клетка" можно проверить сравнением указателя m_firstCell с nullptr, а лучше — просто написать if (m_firstCell).

Мы заранее (в конструкторе Field) задаём значение указателя в ноль (nullptr), потом при открытии клетки в слоте onCellOpened() приравниваем указатель к указателю на открытую клетку, затем (при закрытии клетки) в closeCells() опять приравниваем указатель nullptr.

nullptr — это указатель, равный нулю. Свидетельствует о том, что указатель ни на что не указывает.