06.02.2004, 15:26 | #1 |
Дмитрий Ерин
|
БИТВА КОНЕЙ - Игра для программистов
Кто хочет сразиться в написании несложных алгоритмов?
Читайте описание игры: http://www.axforum.info/forums/showt...7654#post27654 Жду ваших откликов , вопросов и предложений. Если кто-то изъявит желание посоревноваться, напишите, пожалуйста в эту ветку, чтобы я хотя бы знал, стоит ли совершенствовать игрушку дальше.
__________________
|
|
06.02.2004, 18:46 | #2 |
Участник
|
Предлагаю подправить метод
PHP код:
|
|
07.02.2004, 14:55 | #3 |
Дмитрий Ерин
|
ОК, мысль хорошая!
В понедельник сделаю - сейчас нет под рукой Аксапты. Lihgt, а ты уже пишешь свой класс, или так, из любопытства, предлагаешь?
__________________
|
|
09.02.2004, 18:43 | #4 |
Участник
|
Продолжим
Немного подумав, понял, что эти изменения будут работать только для 9 ячеек из всего поля, так что, может они и не нужны
Так забавы ради написал - DeadKnight - конь, который создается за переделами поля и никогда никуда не ходит. Чтобы можно было устраивать дуэли или вообще одному по полю скакать - MinKnight - конь, который из возможных вариантов выбирает поле с наименьшим (> 0) числом свободных соседних ячеек - MaxKnight - противоположенность MinKnight - DrunkKnight2 - пытается обходить ячейки из которых не будет выхода (для которых canMove = false) Общий вывод - прикольно |
|
10.02.2004, 08:31 | #5 |
Дмитрий Ерин
|
Да уж...
А я-то думал, что сколько людей - столько и мнений. Надеялся на встречу с принципиально различными алгоритмами. А получается, что мысли идут в одном и том же направлении. Моя конюшня: SmartKnight - видимо, аналог MaxKnight - побеждает довольно часто; AloneKnight - видимо, аналог MinKnight - оптимален для одиночных тренировок; ChessKnight - просчитывает путь на несколько шагов вперед (тут сложнее сказать, но вполне возможно, что аналог DrunkKnight2) - тоже силен, но его частенько "запирают" AloneKnight-ы и SmartKnight-ы. И, кстати, я просто переделал базовый класс Knight, чтобы он стоял (правда не за полем - хорошая мысль, а в своем углу). Получается - аналог DeadKnight. Вот что хотелось бы сделать, так это - скрестить SmartKnight с ChessKnight, но поскольку они используют принципиально разные критерии оптимальности, то пока не могу придумать, как их выбирать (может быть, случайным образом). Да и думать пока не охота, вот было бы с кем конкурировать...
__________________
|
|
10.02.2004, 15:44 | #6 |
Участник
|
Создал коня, являющегося аналогом ChessKnight'а похоже. Просчитывает кол-во ходов, которые можно сделать в каждом из направлений. Выбирает то, в котором кол-во максимально. Глубина подсчёта меняется автоматически по мере увеличения кол-ва шагов. То есть по началу он прыгает особо не напрягаясь (как Drunk), но потом понимая что есть ещё вражеские кони, начинает задумываться над движениями. Поэтому один он бегать не любит (на слабых машинах к концу игры начинает тормозить) ))). Вот такой жаждущий общения коняга.
Из-за нехватки времени я его стравливал пока только с Drunk'ами. Как котят ...
__________________
Дмитрий |
|
10.02.2004, 16:10 | #7 |
Участник
|
Забавно. А вот можно ли посмотреть на запись партии?
Как оценить красоту идеи программиста тем, у кого нет Аксапты? |
|
10.02.2004, 19:13 | #8 |
Участник
|
Если только в AVI. Не иначе.
Финального скриншота всё равно недостаточно. А так это очевидно игра для узкого круга любителей Х++.
__________________
Дмитрий |
|
11.02.2004, 08:29 | #9 |
Дмитрий Ерин
|
Выкладываю своих претендентов, глядишь и остальные подтянутся...
После боя с конем Damn-а расскажу о результатах (если будет время). Что касается записи партии, то можно попробовать сделать экспорт в текстовик с последующей визуализацией с помощью DHTML. Только позволит ли это форум? Стоит ли возиться?
__________________
|
|
11.02.2004, 08:30 | #10 |
Дмитрий Ерин
|
Тьфу, блин! Опять забыл аттачмент...
Что-то с памятью моей....
__________________
|
|
11.02.2004, 09:24 | #11 |
Дмитрий Ерин
|
Некоторые результаты
Соревнования проводились между моими конями (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 |
Участник
|
Выставляю версию KnightDamnStepCount с оптимизированным алгоритмом подсчёта шагов и изменённой шкалой изменения глубины просчёта.
Посмотрев на трудолюбивого ChessKnight начал понимать что мой очень похож на Drunk'а и гуляет в основном по центру, не стремясь заполнить всё пространство на поле. Такой вобщем легкомысленный. Но не глупый
__________________
Дмитрий |
|
11.02.2004, 20:13 | #13 |
Участник
|
Табун
Раз такая пьянка, то и я своих лошадок выставлю на общее обозрение.
У меня сложилось впечатление, что коники одного поколения дают примерно одинаковый результат, который зависит от набора соперников и начального положения. Посмотрим, когда появится generation next |
|
13.02.2004, 08:32 | #14 |
Дмитрий Ерин
|
Последний из первого поколения
Цитата:
Изначально опубликовано Lihgt
У меня сложилось впечатление, что коники одного поколения дают примерно одинаковый результат, который зависит от набора соперников и начального положения. А на счет generation next уже есть соображения (жаль нет времени). Ключевая фраза: результат, который зависит от набора соперников . Почему бы не попытаться прочитать чужие мысли (мысли коня-соперника)? ... Надеюсь, ту би континуед...
__________________
|
|
13.02.2004, 10:07 | #15 |
Участник
|
Re: Последний из первого поколения
Цитата:
Изначально опубликовано Ruff
Почему бы не попытаться прочитать чужие мысли (мысли коня-соперника)? А потом ещё придёт мысль увеличить поле или кол-во коней на поле. Появятся кони-хищники и кони-защитники ... А вообще конечно приятно иногда отвлечься попридумывать разные алгоритмы, вспоминаются почему-то сразу школьные олимпиады по математике. Кстати, у меня почему-то нет типа RandomQueue
__________________
Дмитрий |
|
13.02.2004, 10:24 | #16 |
Дмитрий Ерин
|
Re: Re: Последний из первого поколения
Цитата:
Изначально опубликовано Damn
А потом ещё придёт мысль увеличить поле или кол-во коней на поле. ... Кстати, у меня почему-то нет типа RandomQueue А, кстати, размер поля легко меняется. В старой версии нужно еще немного класс KnightsGame подправить (метод Init() ), а в новой - достаточно поменять свойства Columns и Rows объекта Table на форме KnightsForm.
__________________
|
|
16.02.2004, 15:38 | #17 |
Участник
|
Реал-тайм стратегия вместо походовой
Здравствуйте, все.
А могут ли кони ходить одновременно? Это сложно реализовать? А то понятно, что ChessKinght (ну или там его вариация), думает долго и за счет этого побеждает хотя за то время, пока он думает, простенький DrunkKnight уже бы далеко ускакал. И получается, что если написать сложный алгоритм, который будет долго выполняться, то наверное он победит остальных. А это не совсем логично. |
|
16.02.2004, 15:52 | #18 |
Дмитрий Ерин
|
Re: Реал-тайм стратегия вместо походовой
Цитата:
Изначально опубликовано zemlyn
А могут ли кони ходить одновременно? Это сложно реализовать? Цитата:
Изначально опубликовано zemlyn
И получается, что если написать сложный алгоритм, который будет долго выполняться, то наверное он победит остальных. А это не совсем логично.
__________________
|
|
16.02.2004, 16:00 | #19 |
Участник
|
ограничение на время хода (или всей партии)
хорошо, можно ли тогда сделать вариацию игры, где кони ходят хоть и поочереди, но, тратить будут время по-честному?
Типа если ChessKnight ходит за 1 секунду на 1 клетку, то DrunkKnight пять раз за это время успеет сходить (причем можно сделать как фиксированное время на ход(ходы?), так и динамически изменяющееся (как в шахматах - там же у каждого определенный запас времени) |
|
16.02.2004, 16:23 | #20 |
Дмитрий Ерин
|
Попробовать, конечно, можно (оба варианта - фиксированный и динамический). Можно еще третий - более простой - вариант: в конце раунда считать очки по формуле:
Очки = К * Шаги / Время, где К - какой-то коэффициент справедливости (чтобы больно уж тупые и шустрые кони не побеждали "дуриком" ). Но, во-первых, некогда возиться. Во-вторых, интерес к игре как у меня, так, судя по всему, и у других участников, остыл... Конечно, если действительно интересно, то пиши в мыло - обсудим.
__________________
|
|
|
Похожие темы | ||||
Тема | Ответов | |||
игра с цветом ячеек | 5 | |||
Стоп игра при setConnection(); | 5 | |||
Игра для программистов | 4 | |||
Введение в бухучет для программистов – источники. | 0 |
|