Реализация метода Getlmagelndex() во многом аналогична этому методу. Только перебор происходит не по колоде, а по настольному раскладу, хранящемуся в трехмерном массиве Well. И ведется он не с нуля, а с конца каждой стопки Well[line][pos] к началу — так удобнее для будущего показа содержимого стопок. Обратите внимание на этот цикл:
for( i = PACK_TOTAL-1; i >= 0; i - )
Здесь счетчик i получает значение 103 (последний элемент стопки из 104 карт, считая с нуля), и понижается до 0 включительно с помощью операции «—».
int TFormI::GetImageIndex(int line, int pos)
{
int i;
for( i == PACK_TOTAL-1; i >= 0; i-- )
if( Well[line][pos][i].Is ) .
return Well[line][pos][i].GetSuit()*VALUE_NUM + Well[line][pos][i].GetValueO ;
return NONE_NUM;
}
Добавление и удаление карт из стопок
Для удаления карты из стопки pos группы line создадим метод TCard GetCard(int line, int pos, bool view);
Он может использоваться не только для изъятия верхней карты соответствующей стопки, но и для простого просмотра ее значения (параметр view должен в этом случае иметь значение true). В любом случае методом будет возвращаться соответствующее значение карты.
TCard TFormI::GetCard( int line, int pos, bool view)
{
int i;
for( i = PACK_TOTAL-1; i >= 0; i - )
v
if( Well[line][pos] [i].Is ) { // карта найдена:
200