Крестики-нолики (пишу игрушку)

Модератор: Модераторы разделов

Аватара пользователя
Jasha
Сообщения: 492
Статус: ##LinuxUser##
ОС: Debian

Крестики-нолики

Сообщение Jasha »

Пишу крестики-нолики. Пока игра очень проста, нету даже проверки корректности ввода, но в ближайшее время буду дорабатывать. Пока что играть можно двум людям. Сюда буду кидать релизы, жду отзывов. В ближайшее время хочу добавить в игру:
> поддержку многих языков;
> справку
> меню
> игру против AI

З.Ы. О том, как ходить. Гляньте на "калькуляторный отдел" на клаве. "7" - это левое верхнее поле, "3" - правое нижнее, "5" - центр. Думаю, поняли. :blush:
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Спасибо сказали:
Аватара пользователя
Nightwolf_ng
Сообщения: 1483
Статус: Участнег
ОС: Женько и семёрко

Re: Крестики-нолики

Сообщение Nightwolf_ng »

Эм... Консольную что-ли???

Хрен она у меня выиграет, если всё по-честному :)
Спасибо сказали:
NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: Крестики-нолики

Сообщение NickLion »

3x3? Переходите на Рэндзю. Или гомоку - то же самое, но без запретов - проще.
Спасибо сказали:
pcodr
Сообщения: 283
ОС: Debian

Re: Крестики-нолики

Сообщение pcodr »

Лицензионное соглашение больше самой программы вышло :)

P.S. Бага:
108: writeln('Гра завершена.');
remote system type is unix
Спасибо сказали:
Аватара пользователя
Jasha
Сообщения: 492
Статус: ##LinuxUser##
ОС: Debian

Re: Крестики-нолики

Сообщение Jasha »

Лицензионное соглашение больше самой программы вышло
нет, не больше.
P.S. Бага:
108: writeln('Гра завершена.');
Да, ничью я еще не сделал :)
3x3?
и что?
Спасибо сказали:
NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: Крестики-нолики

Сообщение NickLion »

3х3 - для большинства людей уже неинтересна.

UPD
Всего возможных комбинаций заполнения по очереди X и O поля - 126, что мало. Выиграшная стратегия выслеживается быстро.
Спасибо сказали:
Аватара пользователя
Portnov
Модератор
Сообщения: 1786
Статус: Матёрый линуксоид
ОС: Debian testing/unstable

Re: Крестики-нолики

Сообщение Portnov »

Правильный результат игры - ничья. Если второй игрок (ходящий вторым) делает хоть одну ошибку, первый выигрывает (если, конечно, сам действует разумно).
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Спасибо сказали:
Аватара пользователя
Mage-Warrior
Сообщения: 869
Статус: Семь раз понюхай, один раз откуси!
ОС: SlackWare 12.1

Re: Крестики-нолики

Сообщение Mage-Warrior »

Jasha, делайте! 3х3 - для быстрой дружеской передышки! Поддерживаю. Даже просто для интереса и получения навыков в программировании.
*- Большинство проблем, дружок, завсегда покажет лог! -*
Спасибо сказали:
Аватара пользователя
Jasha
Сообщения: 492
Статус: ##LinuxUser##
ОС: Debian

Re: Крестики-нолики

Сообщение Jasha »

Вынес ядро игры в отдельный модуль. Теперь лицензия действительно больше кода программы :)
Бага: 108: writeln('Гра завершена.');
fixed
Начинаю работу над модулем AI.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Спасибо сказали:
Аватара пользователя
Mage-Warrior
Сообщения: 869
Статус: Семь раз понюхай, один раз откуси!
ОС: SlackWare 12.1

Re: Крестики-нолики

Сообщение Mage-Warrior »

Не работает у меня новая версия (старую пробовал на другой системе - работала). Выполнил strace ./XoXoX - результат во вложении. Обратите внимание на stat, который по циклической ссылке, видимо, уходит в глубокий цикл.

Добавлено: Старая версия на последней системе тоже не работает с такой же симптоматикой.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
*- Большинство проблем, дружок, завсегда покажет лог! -*
Спасибо сказали:
Аватара пользователя
Mage-Warrior
Сообщения: 869
Статус: Семь раз понюхай, один раз откуси!
ОС: SlackWare 12.1

Re: Крестики-нолики

Сообщение Mage-Warrior »

Ой. Решил глянуть в исходники. Jasha, это у Вас курсовая? Откуда такой школьно-навязанный стиль (i,j)? По процедурам разбито, вроде, хорошо, логично. Но вот это повторение кода, вместо его гибкой математической реализации просто ужасает:

Код: Выделить всё

...
1 :if Board[3,1] = 0 then
       begin
         Board[3,1] := number;
         Move_done := true;
       end;
2 :if Board[3,2] = 0 then
        begin
          Board[3,2] := number;
          Move_done := true;
        end;
...

или

Код: Выделить всё

...
if i = 1 then line[1] := line[1] + Board[i,j];
if i = 2 then line[2] := line[2] + Board[i,j];
if i = 3 then line[3] := line[3] + Board[i,j];
...

Очень такой странный код. Где оптимизация? Вся куча if превращается в пару-тройку изящных строк. А представьте, что у Вас по заданию поле 20х20. Даже индусы бы поленились. Всегда представляйте, что задача будет расширена - тогда и код будет получаться красивым и приятным.
Пока что Ваш код "каменный" - и редактировать сложно и выглядит грубовато. Надеюсь, что реализация AI заставит задуматься.
На предыдущий мой пост плюньте - сначала красота должна быть наведена внутри, а уже потом...
*- Большинство проблем, дружок, завсегда покажет лог! -*
Спасибо сказали:
Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

Re: Крестики-нолики

Сообщение Denjs »

NickLion писал(а):
22.06.2009 20:17
3x3? Переходите на Рэндзю. Или гомоку - то же самое, но без запретов - проще.


Даешь ГО!!!!!!! :drunk:
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали:
NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: Крестики-нолики

Сообщение NickLion »

Denjs писал(а):
24.06.2009 03:34
NickLion писал(а):
22.06.2009 20:17
3x3? Переходите на Рэндзю. Или гомоку - то же самое, но без запретов - проще.


Даешь ГО!!!!!!! :drunk:

Да, можно было бы, только чувствую нескоро результат хоть какой-то будет. До сих пор все программы играют в нее по упрощенным правилам, да и то не добились результатов хороших. На уровне середнячка играют.
Спасибо сказали:
Аватара пользователя
кодировщик
Сообщения: 974
Статус: зарёган в пятницу 13
ОС: Linux

Re: Крестики-нолики

Сообщение кодировщик »

offtop:
Писал когда-то и я такое, найду выложу.
Спасибо сказали:
frp
Сообщения: 1445
ОС: Debian Squeeze

Re: Крестики-нолики

Сообщение frp »

Автор, AI уже сделали?

Насчет выигрышной стратегии - есть стратегия, с которой проиграть не возможно (но выиграть у игрока, использующего эту же стратегию, тоже нельзя).
Первый игрок должен поставить крестик в центр.
Второй игрок должен поставить нулик где-нибудь в углу (где - неважно).
Дальше первый игрок должен пытаться добиться вот-такой ситуации:

Код: Выделить всё

 _ _ _
|X| |X|
| |X| |
| | | |

А второй пытается помешать первому достичь этой ситуации.
Надеюсь, вы меня поняли :)
PS. Эту идею я пока программно не реализовал, но реальным игрокам с ней никогда не проигрывал (правда, все мои знакомые давно эту стратегию изучили и постоянно игра завершается ничьей).
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Крестики-нолики

Сообщение drBatty »

frp писал(а):
26.06.2009 22:36
PS. Эту идею я пока программно не реализовал, но реальным игрокам с ней никогда не проигрывал (правда, все мои знакомые давно эту стратегию изучили и постоянно игра завершается ничьей).

ага. только возни много...
надо учитывать кучу поворотов, отражений... если забить все варианты(их вроде 4)

Код: Выделить всё

XX
 X


X X
 X

X
 XX

X
XX

в общем писать много и скучно...
но есть красивая идея:
записать все 6561 комбинаций после первого хода(или даже все 19683 с начала) в виде массива, и плюсовать нужную ячейку в случае победы(и минусовать в случае поражения). ну а для хода просто выбирать ту комбинацию, где число побольше(а значит - ведёт к победе). для того что-бы было не так скучно, нужно ввести эл-т случайности.
конечно мы устанем учить такого автомата, да и его обыграют, как только будет нестандартная стратегия(глупая с нашей ТЗ), но мы сделам хитрее: стравим 2 таких автомата!
на ночь.
с нашими компами они магистрами станут!
жаль идея не моя...
вроде здесь было: Математические головоломки и развлечения. Мартин Гарднер
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: Крестики-нолики

Сообщение NickLion »

Дополнение к тому, что сказал drBatty
Не обязательно что-то вообще учить. Достаточно посторить граф переходов по этим состояниям (aka автомат). А строим так: финальные выигрышные состояния помечаем как +1, -1, 0 - победа проигрыш, ничья, нефинальные, допустим, - 2. Затем смотрим, если из какого-то состояния "2" можем получить состояние "+1", то ставим дугу и помечаем данное состояние "+1". Если перехода в "+1" нет, но есть "0" - ставим дугу в это состояние и помечаем "0". Ну и наконец, если есть переход только в "-1", то и данное состояние помечаем как "-1". Осторожно - надо учесть возможность, что есть переходы в неизвестные ("2") состояния, поэтому данное правилло применять только в случае наличия "+1" - однозначный выигрыш, либо, если переходов в "2" не осталось. Можно запускать рекурсию, если есть переходы в "2", чтобы избавиться от них. Зацикливание не произойдет, т.к. каждый переход увеличивает число заполненных ячеек, а их число ограничено.

UPD правильнее всего идти в обратную сторону - т.е. сначал помечаем все состяния, с числом ячеек 8 (все 9 - финальные, уже должны быть отмечены), затем 7, 6, и т.д. Таким способом мы избежим попадания в неизвестные состояния.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Крестики-нолики

Сообщение drBatty »

NickLion писал(а):
27.06.2009 08:41
Не обязательно что-то вообще учить.

конечно такой подход тоже разумен, но построение полного графа - долгая и сложная история...
ваш конечный автомат будет работать, но только после того, как пометит ВСЕ вершины. на поле 3х3 это не долго, а на полях большей размерности это просто невозможно.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
Jasha
Сообщения: 492
Статус: ##LinuxUser##
ОС: Debian

Re: Крестики-нолики

Сообщение Jasha »

Проект умер.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Крестики-нолики

Сообщение drBatty »

Jasha писал(а):
02.07.2009 23:46
Проект умер.

а что так?
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
кодировщик
Сообщения: 974
Статус: зарёган в пятницу 13
ОС: Linux

Re: Крестики-нолики

Сообщение кодировщик »

Ведь написано что фсеработает
:)
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Крестики-нолики

Сообщение drBatty »

кодировщик писал(а):
02.07.2009 23:54
Ведь написано что фсеработает

автор остановился на создании AI, хотелось бы посмотреть? Или проект умер как GNU? теперь фсёзакрыто? :(
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
fbi
Сообщения: 34

Re: Крестики-нолики

Сообщение fbi »

Jasha поставил на нём большой крест, а за ним жирный ноль!
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian

Re: Крестики-нолики

Сообщение diesel »

drBatty писал(а):
03.07.2009 00:10
кодировщик писал(а):
02.07.2009 23:54
Ведь написано что фсеработает

автор остановился на создании AI, хотелось бы посмотреть? Или проект умер как GNU? теперь фсёзакрыто? :(

видимо потому что понял/прочитал что никакого AI для 3х3 там не надо
Спасибо сказали:
sim1
Сообщения: 155
ОС: GNU,BSD

Re: Крестики-нолики

Сообщение sim1 »

diesel писал(а):
04.07.2009 00:25
drBatty писал(а):
03.07.2009 00:10
кодировщик писал(а):
02.07.2009 23:54
Ведь написано что фсеработает

автор остановился на создании AI, хотелось бы посмотреть? Или проект умер как GNU? теперь фсёзакрыто? :(

видимо потому что понял/прочитал что никакого AI для 3х3 там не надо

для таких задач для AI достаточно простой Minimax -ной процедуры или Альфа-бета процедуры с оценочной функцией
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian

Re: Крестики-нолики

Сообщение diesel »

sim1 писал(а):
04.07.2009 16:24
diesel писал(а):
04.07.2009 00:25
drBatty писал(а):
03.07.2009 00:10
кодировщик писал(а):
02.07.2009 23:54
Ведь написано что фсеработает

автор остановился на создании AI, хотелось бы посмотреть? Или проект умер как GNU? теперь фсёзакрыто? :(

видимо потому что понял/прочитал что никакого AI для 3х3 там не надо

для таких задач для AI достаточно простой Minimax -ной процедуры или Альфа-бета процедуры с оценочной функцией

не, для 3х3 все гораздо проще
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Крестики-нолики

Сообщение drBatty »

sim1 писал(а):
04.07.2009 16:24
для таких задач для AI достаточно простой Minimax -ной процедуры или Альфа-бета процедуры с оценочной функцией

ага.
но ведь МОЖНО и ГА прикрутить - именно это я и предлагал :)
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
Atolstoy
Сообщения: 1655
Статус: Tux in the rain
ОС: Linux x86_64

Re: Крестики-нолики

Сообщение Atolstoy »

Jasha писал(а):
22.06.2009 19:45
Пишу крестики-нолики. Пока игра очень проста, нету даже проверки корректности ввода, но в ближайшее время буду дорабатывать. Пока что играть можно двум людям. Сюда буду кидать релизы, жду отзывов. В ближайшее время хочу добавить в игру:
> поддержку многих языков;
> справку
> меню
> игру против AI

З.Ы. О том, как ходить. Гляньте на "калькуляторный отдел" на клаве. "7" - это левое верхнее поле, "3" - правое нижнее, "5" - центр. Думаю, поняли. :blush:

Объясни пожалуйста, чем твоя программа лучше Bovo?
http://kdebovo.googlepages.com/
Всего лишь 26 литров пива достаточно человеку для удовлетворения ежедневной потребности в кальции. Здоровое питание - это так просто!
http://atolstoy.wordpress.com
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian

Re: Крестики-нолики

Сообщение diesel »

drBatty писал(а):
04.07.2009 21:00
sim1 писал(а):
04.07.2009 16:24
для таких задач для AI достаточно простой Minimax -ной процедуры или Альфа-бета процедуры с оценочной функцией

ага.
но ведь МОЖНО и ГА прикрутить - именно это я и предлагал :)

и переписать на sed'е (:
Спасибо сказали: