Помощь - Поиск - Пользователи - Календарь
Полная версия: Игра "Одинокий король"
Форум «Всё о Паскале» > Pascal, Object Pascal > Написание игр
Altair
Игра.
Правила.
на шахматной доске в произвольной клетке находится король.
2 игрока ходят по очереди.
за ход можно сдвиуть короля вниз или влево или влево-вниз по диагонали.
тот кто первый поставит короля в левый нижний угол победил.
Помогите придумать стратегию победы. (как играт ьчто бы выиграть?)
что-то вроде алгоритма, или протсо какие-нить правила вывести..
hiv
Ну если начать с того, что пусть король не умеет ходить по диагонали, то как бы король ни ходил - ему до левого нижнего угла доски одинаковое количество ходов. Значит тот, кто первый ходит, выиграет в том случае, если король находится на нечетном количестве ходов до финиша.
Если учитывать диагональный ход, то его можно считать как "два" хода - влево и вниз. В итоге если у первого игрока четное число "обычных" ходов, то ему надо сделать один ход по диагонали, чтобы вернуть выигрышную позицию. Стратегия заключается в том чтобы в начале игры использовать все диагональные ходы, дабы остаться в выигрышной позиции.
Ну думаю остальное сам додумаешь smile.gif
klem4
Я вот тебе Олег о том-же говорил примерно, написать ф-ю для нахождения МИНИМАЛЬНОГО колва ходов до победы от той точки с котороы ты(комп) стартуешь (достаточно просто, сначала сначала выщитываешь максимальное колво ходов, котороге можно сделать по диоганали, увеличивая счетчик, потом по обстоятельству : сколько осталось пройти по горизонтали/вертикали я это сделал через несколько циклов) А потом смотришь если count - четное, то если есть такая возмо стараешься сделать так чтоьбы после твоего хода ему тоже осталось четное кол-во ходов ... как-то так.
Altair
блин. ребята, вы гении!
Я совсем не подумал что будет если исключить ходы по диагонали!
Все, дальше думаю можно не обсуждать, потом когда доделаю, я все выложу.
Altair
вы не верно придумали алгоритм, он не работает, можшь проверить клем...
smile.gif
Я придумал другой...
тут все просто - кто ходит тот выигрывает!
вот что получилось (бета версия, ьыстрого поклепа)

в меню
1 - начало игры.
в игре
1- влево
2- вниз
3- по диагнали.
ну и enter что бы комп сходил.

компилятор Free basic.
Нажмите для просмотра прикрепленного файла
Нажмите для просмотра прикрепленного файла
klem4
У меня не работает sad.gif я ходить не могу.
Altair
вот вроде почти окончательная версия...
потестите кому не лень...
должно все работать..
Нажмите для просмотра прикрепленного файла
Altair
klem4, ходит клавишами 1, 2, 3
те что у тебя на клева наверху клавиш с буквами...
Shura
Почти всегда работает. Почти, потому что есть некоторые случаи, например, когда шарик у левого края, что обоим остается только ходить вниз, и компу не везёт, ну или что-то в этом роде. А по-моему шансы выиграть есть у обоих...
Altair, а каков алгоритм?
Altair
Цитата
А по-моему шансы выиграть есть у обоих...

Выигрывает 100% тот кто ходит первый.
При условии что будет ходить по некоторым правилам.

Цитата
Altair, а каков алгоритм?

Я хочу реализовать игру на Паскале, тогда я выложу всю информацию о игре.
Немного подождите...
Altair
Итак..
1. на Basic - Нажмите для просмотра прикрепленного файла
2. на Pascal - Нажмите для просмотра прикрепленного файла

Алгоритм.
Тот, кто ходит 1 должен:
каждый свой ход делать таким образом. что бы оказываться на НЕ синих ячейках (см. рисунок)
Если изначально король на синем поле, и ходит игрок, то соблюдая правило он выигрывает.
Если изначально король НЕ на синем поле, то тот кто ходит для победы должен постараться оказаться на не закрашенном поле - свои ходом.
Нажмите для просмотра прикрепленного файла
на рисунке.
Первый ход -компьютер.
анализ ситуации - король НЕ на синем, значит ситуация не очень хорошая, если пойти по диагонали то выигрывает юзер, а если вниз - комп, т.к. на 2 своем ходе он окажется на черной ячейки.

все желающие переделывайте игру, и модернизируйте алгоритм.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.