![]() |
#22 |
Участник
|
SP4 (29.12.2008)
Цитата:
Взятие пешки на проходе Цитата:
X++: ... if(typeFigure != ChessTypeFigure::Knight) { pawnOnMove = this.checkCutPawnOnMove(_moveTo); if(pawnOnMove) if (typeFigure == ChessTypeFigure::Pawn || Box::yesNo("Вы можете взять пешку на проходе. Взять?" ,DialogButton::No) == DialogButton::Yes) if(this.cutPawnOnMove(_moveTo, pawnOnMove)) return true; } ... 1. e2-e4 d7-d6 2.Cf1-c4 e7-e5 И при попытке хода слоном с c4 на e6 получается та же картина с диалогом и взятием пешки на e5 (см. картинку во вложении). Тут дело в порядке проверки условий взятия на проходе - Вы сначала анализируете есть ли взятие на проходе и только потом смотрите что это за фигура. По правилам взять на проходе может только пешка - поэтому условие на проверку фигуры нужно поднять выше проверки взятия на проходе. Если не возражаете, предложу такой вариант реализации кода: X++: ... if( typeFigure == ChessTypeFigure::Pawn ) { pawnOnMove = this.checkCutPawnOnMove(_moveTo); if( pawnOnMove ) { if( Box::yesNo("Вы можете взять пешку на проходе. Взять?" ,DialogButton::No) == DialogButton::No ) return false ; if( this.cutPawnOnMove(_moveTo, pawnOnMove)) return true; } } |
|