![]() |
![]() ![]() |
![]() |
Altair |
![]()
Сообщение
#1
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
Игра.
Правила. на шахматной доске в произвольной клетке находится король. 2 игрока ходят по очереди. за ход можно сдвиуть короля вниз или влево или влево-вниз по диагонали. тот кто первый поставит короля в левый нижний угол победил. Помогите придумать стратегию победы. (как играт ьчто бы выиграть?) что-то вроде алгоритма, или протсо какие-нить правила вывести.. -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
hiv |
![]()
Сообщение
#2
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 660 Пол: Мужской Реальное имя: Михаил Репутация: ![]() ![]() ![]() |
Ну если начать с того, что пусть король не умеет ходить по диагонали, то как бы король ни ходил - ему до левого нижнего угла доски одинаковое количество ходов. Значит тот, кто первый ходит, выиграет в том случае, если король находится на нечетном количестве ходов до финиша.
Если учитывать диагональный ход, то его можно считать как "два" хода - влево и вниз. В итоге если у первого игрока четное число "обычных" ходов, то ему надо сделать один ход по диагонали, чтобы вернуть выигрышную позицию. Стратегия заключается в том чтобы в начале игры использовать все диагональные ходы, дабы остаться в выигрышной позиции. Ну думаю остальное сам додумаешь ![]() Сообщение отредактировано: hiv - 11.10.2005 8:53 -------------------- Никогда не жадничай. Свои проблемы с любовью дари людям!
|
klem4 |
![]()
Сообщение
#3
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Я вот тебе Олег о том-же говорил примерно, написать ф-ю для нахождения МИНИМАЛЬНОГО колва ходов до победы от той точки с котороы ты(комп) стартуешь (достаточно просто, сначала сначала выщитываешь максимальное колво ходов, котороге можно сделать по диоганали, увеличивая счетчик, потом по обстоятельству : сколько осталось пройти по горизонтали/вертикали я это сделал через несколько циклов) А потом смотришь если count - четное, то если есть такая возмо стараешься сделать так чтоьбы после твоего хода ему тоже осталось четное кол-во ходов ... как-то так.
-------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
Altair |
![]()
Сообщение
#4
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
блин. ребята, вы гении!
Я совсем не подумал что будет если исключить ходы по диагонали! Все, дальше думаю можно не обсуждать, потом когда доделаю, я все выложу. -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
Altair |
![]()
Сообщение
#5
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
вы не верно придумали алгоритм, он не работает, можшь проверить клем...
![]() Я придумал другой... тут все просто - кто ходит тот выигрывает! вот что получилось (бета версия, ьыстрого поклепа) в меню 1 - начало игры. в игре 1- влево 2- вниз 3- по диагнали. ну и enter что бы комп сходил. компилятор Free basic. ![]() ![]() -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
klem4 |
![]()
Сообщение
#6
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
У меня не работает
![]() -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
Altair |
![]()
Сообщение
#7
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
вот вроде почти окончательная версия...
потестите кому не лень... должно все работать.. ![]() -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
Altair |
![]()
Сообщение
#8
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
klem4, ходит клавишами 1, 2, 3
те что у тебя на клева наверху клавиш с буквами... -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
Shura |
![]()
Сообщение
#9
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 136 Пол: Мужской Реальное имя: Александр Репутация: ![]() ![]() ![]() |
Почти всегда работает. Почти, потому что есть некоторые случаи, например, когда шарик у левого края, что обоим остается только ходить вниз, и компу не везёт, ну или что-то в этом роде. А по-моему шансы выиграть есть у обоих...
Altair, а каков алгоритм? -------------------- Старайтесь восполнять пробелы в области незнания! ;-D
|
Altair |
![]()
Сообщение
#10
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
Цитата А по-моему шансы выиграть есть у обоих... Выигрывает 100% тот кто ходит первый. При условии что будет ходить по некоторым правилам. Цитата Altair, а каков алгоритм? Я хочу реализовать игру на Паскале, тогда я выложу всю информацию о игре. Немного подождите... -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
Altair |
![]() ![]()
Сообщение
#11
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
Итак..
1. на Basic - ![]() 2. на Pascal - ![]() Алгоритм. Тот, кто ходит 1 должен: каждый свой ход делать таким образом. что бы оказываться на НЕ синих ячейках (см. рисунок) Если изначально король на синем поле, и ходит игрок, то соблюдая правило он выигрывает. Если изначально король НЕ на синем поле, то тот кто ходит для победы должен постараться оказаться на не закрашенном поле - свои ходом. ![]() на рисунке. Первый ход -компьютер. анализ ситуации - король НЕ на синем, значит ситуация не очень хорошая, если пойти по диагонали то выигрывает юзер, а если вниз - комп, т.к. на 2 своем ходе он окажется на черной ячейки. все желающие переделывайте игру, и модернизируйте алгоритм. -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
![]() ![]() |
![]() |
Текстовая версия | 17.07.2025 8:12 |