AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: База знаний и проекты
DAX
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 30.12.2008, 10:24   #22  
petergunn is offline
petergunn
Участник
 
118 / 279 (10) ++++++
Регистрация: 30.08.2005
Адрес: Tyumen
SP4 (29.12.2008)
Цитата:
Сообщение от miklenew Посмотреть сообщение
Цитата:
Сообщение от petergunn
... надо бы спросить у игрока в диалоговой форме какую фигуру он хочет выставить на доску: слона, коня, ладью или ферзя.
Спасибо. Исправил.
Если при выборе фигуры выставляемой на доску закрыть окно выбора по [x], то получим ошибку: "Метод 'ChessItem.label' должен быть перекрыт.". (т.к. переменная typeFigureNew получает значение ChessTypeFigure::Empty и далее создается экземпляр класса СhessItem)

Взятие пешки на проходе
Цитата:
Сообщение от miklenew Посмотреть сообщение
Цитата:
Сообщение от petergunn
Интересный побочный эффект текущей реализации взятия пешки на проходе.
и берём конем пешку на e5.
Исправил.
Выкладываю обновление.
Classes\ChessItem\move():
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;
        }
    }
Миниатюры
Нажмите на изображение для увеличения
Название: chess_bishop.JPG
Просмотров: 589
Размер:	51.8 Кб
ID:	4121  
Теги
download, шахматы, axapta

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Куда пропадают лицензии в Ax3.0 SP3 KR2? falcon65 DAX: Администрирование 2 10.05.2007 09:55
Куда идёт запись при разноске журналов зарплат?! 3oppo DAX: Программирование 5 28.07.2005 12:09
SP2 куда делся HELP? Help! KMV DAX: Администрирование 11 17.02.2004 12:26
Вопрос совсем "зеленый". Куда приткнуть метод? Hobo DAX: Программирование 3 13.02.2004 18:07
Куда уходят данные? Oz DAX: Администрирование 4 30.01.2004 17:11

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 15:58.