|
![]() |
#1 |
----------------
|
1. Возможен ход пешкой через битое поле без каких-либо последствий
2. Рокировка делается ладьей, а по "классике" это ход короля. Опять же может я просто хотел ладьей ходить. 3. Также рокировка через битое поле 4. Если открыть 2 доски с одной партией, то возможны 2 хода подряд. --- пожелание - не рисовать фигуру при выделении возможных ходов |
|
|
За это сообщение автора поблагодарили: miklenew (5). |
![]() |
#2 |
Участник
|
Да взятие пешки на проходе. Есть такое. Сделал.
Цитата:
![]() Исправил. Исправил Запретил открывать две доски. При выборе партии и цвета появилась галочка "Рисовать фигуру для возможных ходов". По умолчанию включена. После отключения фигуры не рисуются. Просто подсвечиваются зелёным цветом.
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему. |
|
![]() |
#3 |
Участник
|
Взятие пешки на проходе
Цитата:
Classes\ChessItem\move(): X++: //ход фигуры boolean move(ChessMoveId _moveTo) { ... pawnOnMove = this.checkCutPawnOnMove(_moveTo); if(pawnOnMove) if (typeFigure == ChessTypeFigure::Pawn || Box::yesNo("Вы можете взять пешку на проходе. Взять?" ,DialogButton::No) == DialogButton::Yes) if(this.cutPawnOnMove(_moveTo, pawnOnMove)) return true; ... 1. Kg1-f3 d7-d5 2. Kf3-d4 e7-e5 При попытке хода конем с d4 на e6 получаем неожиданное предложение "Вы можете взять пешку на проходе. Взять?" - Да, и берём ![]() |
|
|
За это сообщение автора поблагодарили: miklenew (5). |
![]() |
#4 |
Участник
|
Цитата:
Выкладываю обновление. Файл с картинками chess_res.rar остался прежний. Пару раз замечал, что доска у чёрных не переворачивается. Но воспроизвести снова никак не получается. Мож кто случайно сможет зафиксировать это, сообщите пожалуйста.
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему. Последний раз редактировалось miklenew; 29.12.2008 в 21:46. |
|
![]() |
#5 |
Участник
|
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; } } |
|
![]() |
#6 |
Участник
|
Цитата:
![]() Ну да ладно попозже поставлю защиту. Цитата:
Надо было бы прочесть и саму что там по F1. ![]()
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему. |
|
![]() |
#7 |
Участник
|
Вот с последними исправлениями.
Файл с картинками chess_res.rar остался прежний.
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему. |
|
![]() |
#8 |
Участник
|
SP5
a. Порядок ходов в партии:
1. g2-g3 h7-h6 2. Cf1-g2 h6-h5 3. b2-b4 g7-g6 4. b4-b5 c7-c5 5. b5:c6 a7-a6 При попытке взять пешку c6:d7 выскакивает infolog с текстом "Ошибка: Метод 'ChessItem.calcMoves' должен быть перекрыт." b. Есть возможность сделать 2 хода в ситуации выбора фигуры при достижении последней горизонтали. (продолжая порядок ходов) 6. с6:b7 Kb8-c6 пытаемся взять пешкой b7 ладью черных на a8 - появляется окно с предложением выбрать фигуру. Не закрывая окна выбора возвращаемся к доске и делаем взятие слоном: 7.Cg2:c6 после этого в окне выбора фигур выбираем ферзя 8. b7:a8Ф UPD: Картинка с конечной позицией на доске во вложении. c. Не фиксируется ничейный результат после 3-кратного повторения позиции на доске. d. В текущей реализации нотации партии двойной шах отображается как '+' (в печатных изданиях двойной шах обозначают '++' ) Последний раз редактировалось petergunn; 20.01.2009 в 18:52. Причина: добавлена картинка |
|
![]() |
#9 |
Участник
|
Цитата:
Или только у одних достаточно. А то уже не помню. Редкая ситуация.
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему. |
|
![]() |
#10 |
Участник
|
Цитата:
Сообщение от petergunn
![]() a. Порядок ходов в партии:
1. g2-g3 h7-h6 2. Cf1-g2 h6-h5 3. b2-b4 g7-g6 4. b4-b5 c7-c5 5. b5:c6 a7-a6 При попытке взять пешку c6:d7 выскакивает infolog с текстом "Ошибка: Метод 'ChessItem.calcMoves' должен быть перекрыт." b. Есть возможность сделать 2 хода в ситуации выбора фигуры при достижении последней горизонтали. (продолжая порядок ходов) 6. с6:b7 Kb8-c6 пытаемся взять пешкой b7 ладью черных на a8 - появляется окно с предложением выбрать фигуру. Не закрывая окна выбора возвращаемся к доске и делаем взятие слоном: 7.Cg2:c6 после этого в окне выбора фигур выбираем ферзя 8. b7:a8Ф UPD: Картинка с конечной позицией на доске во вложении. c. Не фиксируется ничейный результат после 3-кратного повторения позиции на доске. d. В текущей реализации нотации партии двойной шах отображается как '+' (в печатных изданиях двойной шах обозначают '++' ) Правда 3-кратное повторение щас проверяется, как поиск 3-х одинаковых записей в истории ходов. Потом сделаю как должно. Пока никак не придумаю, как это сделать с минимальным написанием кода.
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему. |
|
Теги |
download, шахматы, axapta |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|