Основная часть пасьянса

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