26.12.2008, 13:32 | #21 |
Участник
|
Сорри. Самое главное забыл написать.
Это для Ax 3.0.
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему. |
|
|
За это сообщение автора поблагодарили: Poleax (2). |
26.12.2008, 16:08 | #22 |
Модератор
|
miklenew
Пора для Ax 2009 делать, тады с меня ПИВО! То что я видел, мне понравилось! |
|
29.12.2008, 10:27 | #23 |
----------------
|
1. я так понял, сообщение про мат только одному игроку выдается? надо бы обоих поздравлять
2. пат вообще молчком происходит, хотя тоже финальный результат и надо бы всех порадовать. 3. для защиты от шаха можно закрыться какой-нибудь фигурой, но ничто не запрещает следующим ходом ее убрать, открыв короля на съедение. --- Когда аксапта сможет сама играть? |
|
29.12.2008, 14:33 | #24 |
Участник
|
Пешка -> Фигура
Добавлю своих 5 копеек:
По достижению пешкой 8-ой (для черных 1-ой) горизонтали она 'молча' (автоматически) превращается в ферзя (по правилам шахмат игрок определяет какую фигуру он выставляет на доску - не обязательно это должен быть ферзь) - в этом месте надо бы спросить у игрока в диалоговой форме какую фигуру он хочет выставить на доску: слона, коня, ладью или ферзя. Как вариант ввести настройку: "Автоматическое превращение пешки в ферзя" при которой диалог не будет вызываться. |
|
29.12.2008, 17:36 | #25 |
Участник
|
Взятие пешки на проходе
Цитата:
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 получаем неожиданное предложение "Вы можете взять пешку на проходе. Взять?" - Да, и берём конем пешку на e5. |
|
|
За это сообщение автора поблагодарили: miklenew (5). |
29.12.2008, 21:14 | #26 |
Участник
|
Цитата:
На английской версии сижу. А ты говоришь 2009.
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему. |
|
29.12.2008, 21:34 | #27 |
Участник
|
Цитата:
Поидее кто делает шах, мат он то знает. А тут какая-то штука будет вылетать. Подумаю ещё. Цитата:
Цитата:
Не знаю надо мат часть почитать, как такие системы делают. Скорее всего окажется выборка случайного значения из уже забитой базы. А базу эту забивать время много надо.
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему. |
|
29.12.2008, 21:36 | #28 |
Участник
|
Цитата:
Сообщение от petergunn
По достижению пешкой 8-ой (для черных 1-ой) горизонтали она 'молча' (автоматически) превращается в ферзя (по правилам шахмат игрок определяет какую фигуру он выставляет на доску - не обязательно это должен быть ферзь) - в этом месте надо бы спросить у игрока в диалоговой форме какую фигуру он хочет выставить на доску: слона, коня, ладью или ферзя.
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему. |
|
29.12.2008, 21:37 | #29 |
Участник
|
Цитата:
Выкладываю обновление. Файл с картинками chess_res.rar остался прежний. Пару раз замечал, что доска у чёрных не переворачивается. Но воспроизвести снова никак не получается. Мож кто случайно сможет зафиксировать это, сообщите пожалуйста.
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему. Последний раз редактировалось miklenew; 29.12.2008 в 21:46. |
|
30.12.2008, 10:24 | #30 |
Участник
|
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; } } |
|
30.12.2008, 10:42 | #31 |
Участник
|
Цитата:
Ну да ладно попозже поставлю защиту. Цитата:
Надо было бы прочесть и саму что там по F1.
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему. |
|
30.12.2008, 17:34 | #32 |
Участник
|
Вот с последними исправлениями.
Файл с картинками chess_res.rar остался прежний.
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему. |
|
20.01.2009, 18:44 | #33 |
Участник
|
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. Причина: добавлена картинка |
|
25.01.2009, 22:53 | #34 |
Участник
|
Цитата:
Или только у одних достаточно. А то уже не помню. Редкая ситуация.
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему. |
|
26.01.2009, 06:26 | #35 |
Участник
|
И как записывается ничья? Так же как пат?
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему. |
|
27.01.2009, 08:20 | #36 |
Участник
|
Цитата:
Вот что нашел в правилах: Цитата:
Троекратное повторение одной и той же позиции (не обязательно в течение трёх ходов подряд), причём в понятие позиции здесь входит расположение фигур, очерёдность хода и возможные ходы (в том числе право на рокировку и взятие на проходе для каждой стороны). Для фиксации ничьей игрок, заметивший троекратное повторение позиции, должен обратиться к судье.
Цитата:
Партия признается закончившейся вничью по заявлению игрока, за которым очередь хода, если одна и та же позиция повторилась не меньше трех раз (не обязательно повторением ходов):
- может возникнуть, если он сначала запишет свой ход на бланке и заявит арбитру о своем намерении сделать этот ход, или - уже возникла и игрок, за которым очередь хода, требует ничью. Позиции считаются одинаковыми, если за тем же самым игроком очередь хода, а фигуры того же самого типа и цвета занимают те же поля, и возможные ходы всех фигур обоих игроков те же самые. Позиции не считаются одинаковыми, если в новой позиции пешка потеряла возможность взятия на проходе или если право на рокировку в данный момент или в будущем утрачено. В литературе по шахматам, которая в свое время попадалась, результат партии так и фиксировался: 'Ничья', 'Белые сдались', 'Черные сдались' (если в явном виде не было мата одной из сторон) На игровых порталах результат фиксируется в очковом эквиваленте: 1-0 (победа белых), 1/2-1/2 (ничья), 0-1 (победа черных) Последний раз редактировалось petergunn; 27.01.2009 в 08:26. |
|
|
За это сообщение автора поблагодарили: miklenew (5). |
27.01.2009, 08:56 | #37 |
Участник
|
Спасибо за информацию.
Цитата:
Пат: сам_ход + "=" А ничья также?
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему. |
|
27.01.2009, 22:44 | #38 |
Участник
|
Цитата:
Сообщение от 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-х одинаковых записей в истории ходов. Потом сделаю как должно. Пока никак не придумаю, как это сделать с минимальным написанием кода.
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему. |
|
09.02.2009, 14:00 | #39 |
Участник
|
Цитата:
Плюс добавил возможность подсоединить бота. Если у кого есть желание написать оный. Один уже есть. Пока самого бота выкладывать не буду, дождусь пока создатель выложит его сам.
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему. Последний раз редактировалось miklenew; 09.02.2009 в 14:14. |
|
20.02.2009, 10:10 | #40 |
----------------
|
Шахматный бот
Думает долго, ходит предсказуемо, эндшпиль играть не умеет.
|
|
|
За это сообщение автора поблагодарили: miklenew (9), Artoodeetoo (1). |