Основная часть пасьянса
if( iview ) Well[line][pos] [i].Is = falser-return Well[line][pos][i] ;
)
ShowMessage("Неверная попытка взять карту");
return Well[0][0][0] ;
}
По аналогии с методом Getlmagelndex() здесь происходит просмотр всех карт стопки, начиная с последнего (PACK_TOTAL-1) элемента, считающегося верхним. Подразумевается, что метод GetCardQ будет вызваться только если стопка не пуста, в противном случае надо сообщить об ошибке.
Следующим будет метод добавления:
void AddCard(int line, int pos, bool pack, TCard card) ;
Карта card добавится на верх стопки pos группы line. Параметр pack характеризует, берется ли добавляемая карта из параметра card (тогда pack равен false), или с верха колоды.
Соответствующая стопка просматривается, начиная с ее верха (последнего элемента) в поисках карты, у которой значение переменной Is равно false (эта карта фактически в стопке отсутствует), и на ее место помещается (записывается) новая карта. Признак Is при этом должен, очевидно, получить значение true — карта в стопке имеется.
void TFormI::AddCard(int line, int pos, bool pack,
TCard card) { if( pack && IPack.IsCardO ) return;
int i;
for( i = 0; i < PACK_TOTAL; i ++ ) iff 1 Well[line][pos][i].Is )
{ if( pack ) Well [line] [pos] [i] = Pack.Get'Card() ;
else Well[line][pos][i] = card;
Well[line][pos][i].Is = true;
return ;
} }
201