Основная часть пасьянса
и т. д., но подобный подход не совсем эффективен, ведь если бы потребовалось выполнить сто проверок, то тогда код соответствующего метода неимоверно бы разросся.
Инициализация массивов
Правильно надо сделать так — выделить все координаты стопок и соответствующие им номера стопок и групп в отдельный массив и выполнить один оператор цикла, чтобы сразу определить нужные значения.
Подобный массив должен иметь два измерения: по первому — 18 элементов (18 стопок), по второму — 4 элемента (две координаты верхнего левого угла стопки и номер группы и стопки):
int Coords[18] [4] ;
А как задать этом массиву начальные значения — ведь они все определяются до начала работы программы и представляют собой константы? К счастью, Си++ разреШает заранее, во время описания массивов, инициализировать их начальными значениями с помощью оператора присваивания. Эти значения берутся в фигурные скобки, а если измерений массива несколько, то они группируются тоже с помощью фигурных скобок, начиная с последнего измерения (в нашем случае — это четверки чисел), и разделяются запятыми:
int Coords[18][4] =
{
{LEFT11,TOPI 1,0,0} , // первая четверка
{LEFT12,TOP12,0,1},{LEFT13,TOP13,0,2},{LEFT14,TOP14,0,3},
{LEFI21,TOE21,2,0} ,.{LEFI22,T3F22,2,1}, ОЕРЕЗДОЕЗ ,2,2}, {LEFI24/10^24,2,3},
0?FI31,TOP31,1,0}, {LEFI32,TDP32,1,1}, {ГЕРТЗЗ/ГОЮЗД^}, {LEFI34,TOP34,1,3},
// вспомогательный ряд
{I?FT41,TOP41,4,0}, {LEFr41+SHIFl5,TOP41,4,l}, {LEFr41+SHIFl5*2/IOP41,4,2},
{LEFT41+SHIFT5*3,TOP41,4,3),{LEFT41+SHIFT5*4,TOP41,4,4},
{INV_LEFT,INV_TOP,3,0} // склад
};
Карты во вспомогательном ряду имеют одинаковую верхнюю координату ТОР41, а по горизонтали сдвинуты друг относительно друга на 4)иксиро-ванное значение SHIFT5, равное ширине карты +10 точек.
213