Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Написание игр _ Игра "Одинокий король"

Автор: Altair 10.10.2005 22:09

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

Автор: hiv 11.10.2005 12:52

Ну если начать с того, что пусть король не умеет ходить по диагонали, то как бы король ни ходил - ему до левого нижнего угла доски одинаковое количество ходов. Значит тот, кто первый ходит, выиграет в том случае, если король находится на нечетном количестве ходов до финиша.
Если учитывать диагональный ход, то его можно считать как "два" хода - влево и вниз. В итоге если у первого игрока четное число "обычных" ходов, то ему надо сделать один ход по диагонали, чтобы вернуть выигрышную позицию. Стратегия заключается в том чтобы в начале игры использовать все диагональные ходы, дабы остаться в выигрышной позиции.
Ну думаю остальное сам додумаешь smile.gif

Автор: klem4 11.10.2005 19:42

Я вот тебе Олег о том-же говорил примерно, написать ф-ю для нахождения МИНИМАЛЬНОГО колва ходов до победы от той точки с котороы ты(комп) стартуешь (достаточно просто, сначала сначала выщитываешь максимальное колво ходов, котороге можно сделать по диоганали, увеличивая счетчик, потом по обстоятельству : сколько осталось пройти по горизонтали/вертикали я это сделал через несколько циклов) А потом смотришь если count - четное, то если есть такая возмо стараешься сделать так чтоьбы после твоего хода ему тоже осталось четное кол-во ходов ... как-то так.

Автор: Altair 11.10.2005 23:57

блин. ребята, вы гении!
Я совсем не подумал что будет если исключить ходы по диагонали!
Все, дальше думаю можно не обсуждать, потом когда доделаю, я все выложу.

Автор: Altair 21.10.2005 2:31

вы не верно придумали алгоритм, он не работает, можшь проверить клем...
smile.gif
Я придумал другой...
тут все просто - кто ходит тот выигрывает!
вот что получилось (бета версия, ьыстрого поклепа)

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

компилятор Free basic.
Прикрепленный файл  game_o_k.rar ( 31.16 килобайт ) Кол-во скачиваний: 423

Прикрепленное изображение

Автор: klem4 21.10.2005 2:45

У меня не работает sad.gif я ходить не могу.

Автор: Altair 21.10.2005 2:46

вот вроде почти окончательная версия...
потестите кому не лень...
должно все работать..
Прикрепленный файл  game_o_k.rar ( 31.4 килобайт ) Кол-во скачиваний: 448

Автор: Altair 21.10.2005 2:47

klem4, ходит клавишами 1, 2, 3
те что у тебя на клева наверху клавиш с буквами...

Автор: Shura 21.10.2005 5:54

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

Автор: Altair 22.10.2005 1:13

Цитата
А по-моему шансы выиграть есть у обоих...

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

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

Я хочу реализовать игру на Паскале, тогда я выложу всю информацию о игре.
Немного подождите...

Автор: Altair 22.10.2005 2:44

Итак..
1. на Basic - Прикрепленный файл  win32fbc.zip ( 34.51 килобайт ) Кол-во скачиваний: 423

2. на Pascal - Прикрепленный файл  win32fpc.zip ( 39.71 килобайт ) Кол-во скачиваний: 448


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

все желающие переделывайте игру, и модернизируйте алгоритм.