В первом операторе проверяется, меньше ли значение исходной карты значения той карты, на которую она кладется. Дополнительно проверяется допустимость перемещения короля на следующую «большую» карту — туза.

Во втором операторе проверяется обратное соотношение, в частности, кладется ли туз на короля.

Проверка на конец игры

Такую проверку будет выполнять метод GameFin():

void GameFin() ;

Чтобы пасьянс был успешно закончен, надо, чтобы колода была пуста, а во всех группах, кроме 1-й (колонны) ни в одной стопке не было карт. Тогда можно показать сообщение GAME_WIN_STR: его надо описать в Text.h:

const AnsiString GAME_WIN_STR '= "Пасьянс успешно сошелся\";

и вызвать методы начала новой игры и отрисовки новой раскладки. void TFormI::GameFin() { if( Pack.IsCardO ) return;

int i, j ;

for( i = 0; i < 5; i ++ ) if( i i= 1 )

for( j = 0; j < 5; j ++ ) if( IsCards(i,j) ) return;

ShowMessage(GAME_WIN_STR) ;

NewGame();

ShowAll() ;

}

А где вызывать эту проверку на конец игры? Ее лучше всего вставить в следующие места: в начало логического блока, обрабатывающего щелчок кнопкой мыши на главной колоде, и в начало блока, выполняющего перемещение карты (оба эти блока расположены в методе обработки щелчка FormMouseUpO).

224