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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 06.02.2004, 15:26   #1  
Ruff is offline
Ruff
Дмитрий Ерин
Аватар для Ruff
1C
 
475 / 396 (14) ++++++
Регистрация: 18.09.2003
Адрес: Тула
БИТВА КОНЕЙ - Игра для программистов
Кто хочет сразиться в написании несложных алгоритмов?
Читайте описание игры: http://www.axforum.info/forums/showt...7654#post27654
Жду ваших откликов , вопросов и предложений. Если кто-то изъявит желание посоревноваться, напишите, пожалуйста в эту ветку, чтобы я хотя бы знал, стоит ли совершенствовать игрушку дальше.
__________________
Старый 06.02.2004, 18:46   #2  
Lihgt is offline
Lihgt
Участник
 
48 / 70 (3) ++++
Регистрация: 16.04.2002
Адрес: Москва
Предлагаю подправить метод
PHP код:
final boolean canMove(int x Colint y Row)
{
    
int ijk;
    ;

    for (
1<= 8k++)
    {
        
dx[k];
        
dy[k];
        if (
Field.getCell(ij) == KnightsCell::empty)
            return 
true;
    }

    return 
false;

Чтобы можно было проверять не только текущее положение и спокойно использовать в потомках.
Старый 07.02.2004, 14:55   #3  
Ruff is offline
Ruff
Дмитрий Ерин
Аватар для Ruff
1C
 
475 / 396 (14) ++++++
Регистрация: 18.09.2003
Адрес: Тула
ОК, мысль хорошая!
В понедельник сделаю - сейчас нет под рукой Аксапты.

Lihgt, а ты уже пишешь свой класс, или так, из любопытства, предлагаешь?
__________________
Старый 09.02.2004, 18:43   #4  
Lihgt is offline
Lihgt
Участник
 
48 / 70 (3) ++++
Регистрация: 16.04.2002
Адрес: Москва
Продолжим
Немного подумав, понял, что эти изменения будут работать только для 9 ячеек из всего поля, так что, может они и не нужны

Так забавы ради написал
- DeadKnight - конь, который создается за переделами поля и никогда никуда не ходит. Чтобы можно было устраивать дуэли или вообще одному по полю скакать
- MinKnight - конь, который из возможных вариантов выбирает поле с наименьшим (> 0) числом свободных соседних ячеек
- MaxKnight - противоположенность MinKnight
- DrunkKnight2 - пытается обходить ячейки из которых не будет выхода (для которых canMove = false)

Общий вывод - прикольно
Старый 10.02.2004, 08:31   #5  
Ruff is offline
Ruff
Дмитрий Ерин
Аватар для Ruff
1C
 
475 / 396 (14) ++++++
Регистрация: 18.09.2003
Адрес: Тула
Да уж...
А я-то думал, что сколько людей - столько и мнений. Надеялся на встречу с принципиально различными алгоритмами. А получается, что мысли идут в одном и том же направлении.
Моя конюшня:
SmartKnight - видимо, аналог MaxKnight - побеждает довольно часто;
AloneKnight - видимо, аналог MinKnight - оптимален для одиночных тренировок;
ChessKnight - просчитывает путь на несколько шагов вперед (тут сложнее сказать, но вполне возможно, что аналог DrunkKnight2) - тоже силен, но его частенько "запирают" AloneKnight-ы и SmartKnight-ы.

И, кстати, я просто переделал базовый класс Knight, чтобы он стоял (правда не за полем - хорошая мысль, а в своем углу). Получается - аналог DeadKnight.

Вот что хотелось бы сделать, так это - скрестить SmartKnight с ChessKnight, но поскольку они используют принципиально разные критерии оптимальности, то пока не могу придумать, как их выбирать (может быть, случайным образом). Да и думать пока не охота, вот было бы с кем конкурировать...
__________________
Старый 10.02.2004, 15:44   #6  
Damn is offline
Damn
Участник
 
436 / 154 (6) ++++++
Регистрация: 28.05.2003
Адрес: в глуши
Создал коня, являющегося аналогом ChessKnight'а похоже. Просчитывает кол-во ходов, которые можно сделать в каждом из направлений. Выбирает то, в котором кол-во максимально. Глубина подсчёта меняется автоматически по мере увеличения кол-ва шагов. То есть по началу он прыгает особо не напрягаясь (как Drunk), но потом понимая что есть ещё вражеские кони, начинает задумываться над движениями. Поэтому один он бегать не любит (на слабых машинах к концу игры начинает тормозить) ))). Вот такой жаждущий общения коняга.
Из-за нехватки времени я его стравливал пока только с Drunk'ами. Как котят ...
Вложения
Тип файла: xpo damnknights.xpo (4.2 Кб, 286 просмотров)
__________________
Дмитрий
Старый 10.02.2004, 16:10   #7  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Забавно. А вот можно ли посмотреть на запись партии?
Как оценить красоту идеи программиста тем, у кого нет Аксапты?
Старый 10.02.2004, 19:13   #8  
Damn is offline
Damn
Участник
 
436 / 154 (6) ++++++
Регистрация: 28.05.2003
Адрес: в глуши
Если только в AVI. Не иначе.
Финального скриншота всё равно недостаточно.
А так это очевидно игра для узкого круга любителей Х++.
__________________
Дмитрий
Старый 11.02.2004, 08:29   #9  
Ruff is offline
Ruff
Дмитрий Ерин
Аватар для Ruff
1C
 
475 / 396 (14) ++++++
Регистрация: 18.09.2003
Адрес: Тула
Выкладываю своих претендентов, глядишь и остальные подтянутся...
После боя с конем Damn-а расскажу о результатах (если будет время).

Что касается записи партии, то можно попробовать сделать экспорт в текстовик с последующей визуализацией с помощью DHTML. Только позволит ли это форум? Стоит ли возиться?
__________________
Старый 11.02.2004, 08:30   #10  
Ruff is offline
Ruff
Дмитрий Ерин
Аватар для Ruff
1C
 
475 / 396 (14) ++++++
Регистрация: 18.09.2003
Адрес: Тула
Тьфу, блин! Опять забыл аттачмент...
Что-то с памятью моей....
Вложения
Тип файла: zip ruffknights.zip (2.2 Кб, 117 просмотров)
__________________
Старый 11.02.2004, 09:24   #11  
Ruff is offline
Ruff
Дмитрий Ерин
Аватар для Ruff
1C
 
475 / 396 (14) ++++++
Регистрация: 18.09.2003
Адрес: Тула
Некоторые результаты
Соревнования проводились между моими конями (SmartKnight, AloneKnight и ChessKnight) и предложенным Damn-ом - KnightDamnStepCount
Каждый матч состоял из пяти раундов. Начальное положение коней не менялось (хотя ChessKnight все еще грешит скачкой по углам). Итак, результаты:

Конь Очки

----------------------
Damn 512
Chess 551
Smart 362
Alone 217
---------------------
Damn 473
Chess 416
Chess 484
Chess 373
---------------------
Damn 376
Smart 326
Smart 288
Smart 242
---------------------
Damn 504
Alone 452
Alone 425
Alone 489
__________________
Старый 11.02.2004, 10:38   #12  
Damn is offline
Damn
Участник
 
436 / 154 (6) ++++++
Регистрация: 28.05.2003
Адрес: в глуши
Выставляю версию KnightDamnStepCount с оптимизированным алгоритмом подсчёта шагов и изменённой шкалой изменения глубины просчёта.
Посмотрев на трудолюбивого ChessKnight начал понимать что мой очень похож на Drunk'а и гуляет в основном по центру, не стремясь заполнить всё пространство на поле. Такой вобщем легкомысленный. Но не глупый
Вложения
Тип файла: xpo knightdamnstepcount.xpo (3.7 Кб, 282 просмотров)
__________________
Дмитрий
Старый 11.02.2004, 20:13   #13  
Lihgt is offline
Lihgt
Участник
 
48 / 70 (3) ++++
Регистрация: 16.04.2002
Адрес: Москва
Табун
Раз такая пьянка, то и я своих лошадок выставлю на общее обозрение.

У меня сложилось впечатление, что коники одного поколения дают примерно одинаковый результат, который зависит от набора соперников и начального положения.

Посмотрим, когда появится generation next
Вложения
Тип файла: zip lihgtknights.zip (2.0 Кб, 118 просмотров)
Старый 13.02.2004, 08:32   #14  
Ruff is offline
Ruff
Дмитрий Ерин
Аватар для Ruff
1C
 
475 / 396 (14) ++++++
Регистрация: 18.09.2003
Адрес: Тула
Последний из первого поколения
Цитата:
Изначально опубликовано Lihgt
У меня сложилось впечатление, что коники одного поколения дают примерно одинаковый результат, который зависит от набора соперников и начального положения.
У меня - аналогичное впечатление. Выложу, пожалуй, своего последнего представителя первого поколения .

А на счет generation next уже есть соображения (жаль нет времени). Ключевая фраза: результат, который зависит от набора соперников . Почему бы не попытаться прочитать чужие мысли (мысли коня-соперника)?
...
Надеюсь, ту би континуед...
Вложения
Тип файла: xpo smartchessknight.xpo (3.1 Кб, 180 просмотров)
__________________
Старый 13.02.2004, 10:07   #15  
Damn is offline
Damn
Участник
 
436 / 154 (6) ++++++
Регистрация: 28.05.2003
Адрес: в глуши
Re: Последний из первого поколения
Цитата:
Изначально опубликовано Ruff


Почему бы не попытаться прочитать чужие мысли (мысли коня-соперника)?

Этакий конь-хищник получится.
А потом ещё придёт мысль увеличить поле или кол-во коней на поле. Появятся кони-хищники и кони-защитники ...
А вообще конечно приятно иногда отвлечься попридумывать разные алгоритмы, вспоминаются почему-то сразу школьные олимпиады по математике.

Кстати, у меня почему-то нет типа RandomQueue
__________________
Дмитрий
Старый 13.02.2004, 10:24   #16  
Ruff is offline
Ruff
Дмитрий Ерин
Аватар для Ruff
1C
 
475 / 396 (14) ++++++
Регистрация: 18.09.2003
Адрес: Тула
Re: Re: Последний из первого поколения
Цитата:
Изначально опубликовано Damn
А потом ещё придёт мысль увеличить поле или кол-во коней на поле.
...
Кстати, у меня почему-то нет типа RandomQueue
Пардон, забыл про новую фичу. Выкладываю...
А, кстати, размер поля легко меняется. В старой версии нужно еще немного класс KnightsGame подправить (метод Init() ), а в новой - достаточно поменять свойства Columns и Rows объекта Table на форме KnightsForm.
Вложения
Тип файла: xpo knightsbattle1_1.xpo (74.6 Кб, 277 просмотров)
__________________
Старый 16.02.2004, 15:38   #17  
zemlyn is offline
zemlyn
Участник
Аватар для zemlyn
 
146 / 44 (2) +++
Регистрация: 28.01.2004
Реал-тайм стратегия вместо походовой
Здравствуйте, все.
А могут ли кони ходить одновременно?
Это сложно реализовать?
А то понятно, что ChessKinght (ну или там его вариация), думает долго и за счет этого побеждает хотя за то время, пока он думает, простенький DrunkKnight уже бы далеко ускакал.
И получается, что если написать сложный алгоритм, который будет долго выполняться, то наверное он победит остальных. А это не совсем логично.
Старый 16.02.2004, 15:52   #18  
Ruff is offline
Ruff
Дмитрий Ерин
Аватар для Ruff
1C
 
475 / 396 (14) ++++++
Регистрация: 18.09.2003
Адрес: Тула
Re: Реал-тайм стратегия вместо походовой
Цитата:
Изначально опубликовано zemlyn
А могут ли кони ходить одновременно?
Это сложно реализовать?
Навскидку - сложно . Если вообще возможно. Я в Аксапте - пока не ас, поэтому точно сказать не могу. Пытался как-то экспериментировать с классом Thread, но как мне показалось, запущенные таким образом потоки становились "в очередь", а не выполнялись одновременно. Если не прав - может кто-нибудь уточнит?
Цитата:
Изначально опубликовано zemlyn
И получается, что если написать сложный алгоритм, который будет долго выполняться, то наверное он победит остальных. А это не совсем логично.
Вот это - не факт. Практика показывает, что глубина просчета шагов - не самый важный фактор успеха. А именно это сказывается на быстродействии алгоритма. Очень многое зависит от очередности шагов. Часто исход поединка решает принцип "кто первым встал - того и тапки" .
__________________
Старый 16.02.2004, 16:00   #19  
zemlyn is offline
zemlyn
Участник
Аватар для zemlyn
 
146 / 44 (2) +++
Регистрация: 28.01.2004
ограничение на время хода (или всей партии)
хорошо, можно ли тогда сделать вариацию игры, где кони ходят хоть и поочереди, но, тратить будут время по-честному?
Типа если ChessKnight ходит за 1 секунду на 1 клетку, то DrunkKnight пять раз за это время успеет сходить (причем можно сделать как фиксированное время на ход(ходы?), так и динамически изменяющееся (как в шахматах - там же у каждого определенный запас времени)
Старый 16.02.2004, 16:23   #20  
Ruff is offline
Ruff
Дмитрий Ерин
Аватар для Ruff
1C
 
475 / 396 (14) ++++++
Регистрация: 18.09.2003
Адрес: Тула
Попробовать, конечно, можно (оба варианта - фиксированный и динамический). Можно еще третий - более простой - вариант: в конце раунда считать очки по формуле:
Очки = К * Шаги / Время, где К - какой-то коэффициент справедливости (чтобы больно уж тупые и шустрые кони не побеждали "дуриком" ).
Но, во-первых, некогда возиться. Во-вторых, интерес к игре как у меня, так, судя по всему, и у других участников, остыл...
Конечно, если действительно интересно, то пиши в мыло - обсудим.
__________________
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
игра с цветом ячеек amball DAX: Программирование 5 29.10.2007 17:48
Стоп игра при setConnection(); Sada DAX: Программирование 5 21.02.2007 17:05
Игра для программистов Ruff DAX: База знаний и проекты 4 09.02.2004 08:27
Введение в бухучет для программистов – источники. sguryev DAX: Программирование 0 25.12.2001 07:02

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

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

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