Здравствуйте, Shmj, Вы писали:
_>>ты отменяешь только последний ход — банально запомни его отдельно не давай переходить, даже если стандартное состояние разрешает это. Зачем усложнять-то? S>Я изначально тоже так и сделал, но потом оказалось что попадаешь в ситуацию, что из доступных ходов — только обратный. Запоминать нужно 2 хода (для каждого цвета) и две конкретные фишки, которые походили последними.
ок, запомни эти 4 параметра, всяко быстрее будет
Re[5]: Как лучше сжать данные разрешенных ходов для игры?
Здравствуйте, Shmj, Вы писали:
S>Здравствуйте, alpha21264, Вы писали:
S>>>Возможно существует простое правило как не проиграть, но я такого правила не знаю. A>>Научи программу смотреть на несколько ходов вперёд.
S>Пробовал — нужно достаточно на много ходов смотреть, иначе есть возможность "загнать в угол". Т.е. ходов вообще нет, к примеру (а обратный запрещен).
S>По этому выход — хранить все возможные состояния доски (включая запрещенные ходы и фишки, которым запрещено) — и разрешенные варианты, которые позволяют не проиграть. Из разрешенных вариантов выбираем ход рандомно (кроме случаев, когда победа — тогда такой ход).
S>Причем, что интересно, ни одной полноценной реализации этой игры не встречал. Есть несколько в маркете, но везде алгоритм поверхностный, не гарантирует победу компьютера. А это не интересно — один раз победишь и уже знаешь как играть. В моей версии победа кожаного исключена и кожаный обычно на 30-40 шаге делает ошибку и проигрывает, это в лучшем случае.
Ну храни только выигрышные ходы. Или попробуй шахматы/го написать с таким подходом — удивишься, сколько нужно будет памяти.
Re[6]: Как лучше сжать данные разрешенных ходов для игры?
Здравствуйте, SaZ, Вы писали:
SaZ>Ну храни только выигрышные ходы. Или попробуй шахматы/го написать с таким подходом — удивишься, сколько нужно будет памяти.
Там выигрышные появляются только если соперник допустил ошибку — а так можно играть бесконечно долго. И хранить нужно те ходы, которые не являются ошибочными (не приводят к поражению).
=сначала спроси у GPT=
Re[5]: Как лучше сжать данные разрешенных ходов для игры?
S>>>Для сайта — много. M>>А сколько у тебя на сайте запросов в секунду?
S>Да просто человеку ждать загрузки страницы — 10 Мб даже — это много. Ну 1 Мб — еще куда ни шло...
Ну, так сколько у тебя посетителей-то на сайте с игрой (кроме тебя)?
А то сейчас выяснится что там и нет-то никого.
Re[3]: Как лучше сжать данные разрешенных ходов для игры?
S>Т. е. чтобы программа 100% гарантировано никогда не проиграла и выиграла, если кожаный допустил хотя бы одну ошибку (а кожаный ее обязательно допустит рано или поздно — устанет и допустит ошибку).
У тебя опять какая-то херня с терминологией.
Если выигрыш зависит от ошибки оппонента, то это совсем не «100% гарантировано».
Re[4]: Как лучше сжать данные разрешенных ходов для игры?
Здравствуйте, Muxa, Вы писали:
S>>Т. е. чтобы программа 100% гарантировано никогда не проиграла и выиграла, если кожаный допустил хотя бы одну ошибку (а кожаный ее обязательно допустит рано или поздно — устанет и допустит ошибку).
M>У тебя опять какая-то херня с терминологией. M>Если выигрыш зависит от ошибки оппонента, то это совсем не «100% гарантировано».
1. Прога гарантировано никогда не проиграет. Гарантии победы — нет. Просто игра начавшись однажды — может длиться вечно.
2. Если пользователь сделает неверный шаг (хотя бы один) — то все, он проиграет.
Как на войне — нужно думать о том чтобы выстоять и не думать о победе, пока противник не ошибся и победа не случилась сама собой.
=сначала спроси у GPT=
Re: Как лучше сжать данные разрешенных ходов для игры?
можешь правила описать нормально? Или ссылку кинь, где они описываются. Сейчас ничего не понятно. Так в классической мельнице достаточно запатовать соперника, что здесь достигается элементарно b1-b3 a3-a2 c1-c2.
Re[2]: Как лучше сжать данные разрешенных ходов для игры?
Здравствуйте, sergii.p, Вы писали:
SP>можешь правила описать нормально? Или ссылку кинь, где они описываются. Сейчас ничего не понятно. Так в классической мельнице достаточно запатовать соперника, что здесь достигается элементарно b1-b3 a3-a2 c1-c2.
Здравствуйте, Shmj, Вы писали: S>Есть история — если сможешь выиграть — то после поздравления — нажми кнопку отмена и скопируй историю как тебе это удалось.
ну я почему-то думаю, что игра ничейная. Стратегия довольно простая вырисовывается. Избегаем центра b2 (немного контринтуитивно, поэтому для новичков может быть сложно). Расставили например a1 b3 c2. Если поле b2 свободно прыгаем туда. Если мы уже стоим на b2 отпрыгиваем от центра в сторону максимальной "свободы" (где хотя бы две клетки пустые). И там носимся треугольником. Играть на победу аналогично — ждать, когда соперник этот алгоритм нарушит. Выставить по диагонали избегая центра (н-р a1 c3), а оставшейся шашкой запатовать шашки соперника, чтобы он вынужен был отпрыгнуть из центра.
Ну в принципе по сложности не намного сложнее крестиков-ноликов. Развлечение на день. Но для новичка просадить в первый же день 10 "туалетов" запросто.
Re[4]: Как лучше сжать данные разрешенных ходов для игры?
Здравствуйте, sergii.p, Вы писали:
SP>Ну в принципе по сложности не намного сложнее крестиков-ноликов. Развлечение на день. Но для новичка просадить в первый же день 10 "туалетов" запросто.
Вот что значит естественный интеллект — сразу все 100 тыс. комбинаций свел к 5 простым правилам