10. Обобщение -- матьучекия
Перемещение карты
Метод перемещения карты — основной в логике работы пасьянса. Ведь игра и построена на перекладывании карт из одной стопки в другую.
Этот метод описывается, как и все предыдущие, в классе TFormI заголовочного файла MainUnit.h:
void MoveCard(int linel, int posi, int line2, int pos2) ;
а его реализация — в файле MainUnit.cpp:
void TFormI::MoveCard(int linel, int posi, int line2,
int pos2) { TCard card;
card = ,GetCard( linel, posi, false); < AddCard(line2, pos2, false, card);
}
Работает данный метод очень просто. Из стопки posi группы linel методом GetCardQ берется карта (параметр view — «только просмотр», равен false), запоминается во временной переменной card, и затем с помощью метода AddCard() добавляется к стопке pos2 группы line2 (параметр взятия карты из колоды равен false).
Новая игра
Теперь, имея такой мощный метод, как MoveCard(), можно сгенерировать начальную раскладку пасьянса. Для этого понадобится метод Новая игра:
void NewGame() ;
Прежде всего надо колоду перетасовать (Pack.Shuffle()), а переменной Cycle (число выкладываемых во вспомогательном ряду карт) присвоить начальное значение 5. Затем надо очистить игровой стол — всем переменным Is массива карт Well присвоить false (никаких карты в стопке нет). Для этого потребуется тройной цикл — по каждому измерению массива:
Далее необходимо сформировать 4 стопки по 11 карт. Сделать это поможет метод AddCardQ. Первым его параметром будет 0 (добавлять в» группу 0 — стены), вторым — счетчик текущей колоды (4 колоды, от 0 до 3), третьим — true (карта берется из колоды), четвертым — временная переменная card, которая была описана только для применения в качестве неиспользуемого параметра.
202