В первом операторе проверяется, меньше ли значение исходной карты значения той карты, на которую она кладется. Дополнительно проверяется допустимость перемещения короля на следующую «большую» карту — туза.
Во втором операторе проверяется обратное соотношение, в частности, кладется ли туз на короля.
Проверка на конец игры
Такую проверку будет выполнять метод 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