Перейти к содержимому

Как сделать крестики нолики в 1с

  • автор:

Как сделать крестики нолики в 1с

Есть набор множеств
А1=
А2=
………………..
An=
Где a11,… числа от 1 до K
Найти множество минимальной мощности, в котором есть по крайней мере хотя бы один элемент из каждого из множеств A1…An.

(0) Не осилил.
По-моему, алгоритм игры в крестики-нолики куда проще.
Пример:
A1=
A2=
A3=
Решение B=
(2) Что означают цифры?
(3) цифры это натуральные числа из интервала от 1 до К. Вообщето К=225
(4) Что ОЗНАЧАЮТ эти цифры?
скажем так. для чего они тогда.

(0) С таким вопросом лучше будет сходить на форум http://www.delphikingdom.com — там такие вопросы любят и отвечают с удовольствием.

(0) Алгоритм игры в крестики и нолики раз в 50 проще.
(7) 1с-ники головоломки тож любят .
множество минимальной мощности — ЭТО ШО?

(5) Это важно? Пусть это будет абстракная задача никак не связанная с игрой в крестики-нолики
(7) Спасибо за ссылко. Но мне хотельсь бы увидеть решение на платформк 7.7. Кстати разработать структуру хранения множеств А1. Аn есть составная часть задачи.
(9) Мощность множества = количеству элементов множества

(10) Решение на 1с практически ничем не будет отличаться ото всех других .
(10) Неоптимизированный алгоритм — хоть сейчас могу сказать .

Можно устроить турнир программ по игре в крестики-нолики.
У меня где-то завалялась программа для поля 3х3, написанная ещё на TP7. Думаю, несложно будет её переделать под 1С.

(13) турнир уже объявлен Начинается конкурс на лучшую программу в Го-Моку.
(13) Для поля 3х3 можно заложить в базу все варианты — их не так уж и много, кажется, около 100.

(10) Просто объявляешь «квадратный» массив. Далее юзаешь его.
Кол-во столбцов и КОл-во строк — основные размерности. Далее находишь по алгоритмам эти множества .

(15) Ну, я точно не так делал. Вроде бы там одна-единственная беспроигрышная тактика.
(15) Для 3х3 и закладывать нечего. Первый в угол, второй в центр и ничья
(17)аха либо ничья. либо победа. смотря чей ход первый.
(14) Я думаю, что начать можно и с 3х3, а потом уже переходить на более широкие масштабы. 🙂
(19) какая разница чей первый, главное в угол
(19) А вот это неважно, чей ход первый. Всегда можно сыграть вничью.
(20) 3Х3 уже потренировался. Хочу переходить на более широкие масштабы
(20) Если алгоритмом в котором находяться комбинации — то нет. Надо сделать ИИ .
(18) А если в центр сходил противник?

(17) В крестики-нолики нет выигрышных тактик. Выиграть можно только при ошибке противника, а проиграть только при собственной ошибке. Обычный результат игры — ничья.

(24) ИИ тут и близко не стояло. Самое большее — полная рекусия на всю партию.
(26) А я сказал «беспроигрышная» тактика. Выигрышной действительно нет.

(27) Если поле очень большое, то рекурсия затянется. На 8.0 может даже вылететь (там глубина рекурсии ограничена).

(29) Ну это, конечно, не самый оптимальный вариант (одна рекурсия).
(30) ПРи чем тут рекурсия? Нельзя ли хоть чуть чуть логику ему прописать .. Она же там простая .

(30) Одно другому не мешает. Мы говорим про рекурсивный обход возможных ходов, а логику пропиши в оценочную функцию, как и делается во всех шахматных программах.

(32) оценочная функция — это неправильно. Рекомендую: Р.Лингер и др. «Теория и практика структурного программирования» глава 7.6. Использование эвристического и строгого подходов: игра в крестики-нолики.

Мы говорим о крестиках ноликах пять-в-ряд?
Если да, то
(33) И каким это образом программа может играть без оценочной функции?

Могу дать ссылки на две программы (исходники)- в обеих используется Альфа-бета и оценочная функция.
(35)если вас это не затруднит.

Ссылка в предпоследнем посте.
http://bbs.vbstreets.ru/viewtopic.php?t=21694
Для скачивания — возможно нужна регистрация.
Текст на VB.

(37)спасибо. скачал. на пенсии поковыряю ;))
(39) Там алгоритмы-то на несколько десятков строк.
(40)сейчас просто ломает. я жду расчет..
Есть ли у кого идеи по поводу решения задачи в (0)?

Вообще то это задача о минимальном вершинном покрытии графа. Соответсвенно NP-полная — решается полным перебором. Может кто подскажет приблизительный алгоритм решения задачи

(42)может туплю. что такое «минимальной мощности».

(42) отурытые тройки ищешь?
Да, есть.
Берем все множества из трех своих фишек на пять расположенных на одной линии клеток.
Свободных клеток две.
Например a1 0 0 а2 0
Делаем ТЗ с двумя колонками.
ТЗ.НоваяСтрока();
ТЗ.п1=»а1″;
ТЗ.п2=»а2″;
ТЗ.НоваяСтрока();
ТЗ.п1=»а2″;
ТЗ.п2=»а1″;
Теперь необходимо учеть, что каждая комбинация из двух свободных клеток на пяти может встречаться несколько раз.
(например 0 а1 0 0 а1 0) — первые пять, и последние пять.
Чтоб это устранить — делаем
ТЗ.Свернуть(«п1,п2»);
Теперь если после ТЗ.Свернуть(«п1″,»») — количество строк уменьшилось, значит есть открытая тройка, то есть ход после которого есть возможность выиграть более, чем одним способом.

(+45) Для свободных клеток больше двух — просто добавляешь все комбинации — например для трех свободных-
а1,а2,а3 — добавляешь все шесть перестановок, а потом так-же сворачиваешь по первой колонке.
Если необходимо определить именно в каких поллях вилки — то
Добавляем новую колонку, заполняем единицами (после сворачивания по всем колонкам) — сворачиваем по первой колонке, и где значение больше одного — там пересечение.

А вообще — очень быстрая оценка в программе в (37) Хотя конечно так себе.

(45) за алгоритмы спасибо. Но я решаю другую задачу.
Есть множество угроз соперника (это не обязательно тройки, это скорее двойки), которые можно отразить своим ходом, а можно иподождать. Надо найти оптимальный порядок ходов отражающий все эти угрозы.
Скажем есть N точек, где соперник МОЖЕТ своим ходом построить тройку (не обязательно тройку, главное что после хода соперника надо на нее реагировать немедленно). Список таких точек я построил. Для каждой точки определил способы отражения угрозы (это не обязательно текущяя точка, список может бфть довольно длинным). Отражать угрозу необязательно немедленно, но хочется своим ходом отразить максимальное количество угроз.

(48) Так именно про это я и говорю. Основная угоза — поставить открытую четверку — поля, которые дают её как раз смотри в (45) — там находятся все поля, ходя в которые соперник может сделать открытую четверку (выиграть)
Аналогично находятся поля для вилок — закрытая четверка+открытая тройка, и две открытых тройки. Сейчас перекурю, и выдам еще один факт.

Кто тебе мешает не оперировать множествами, а посмотреть, что перекрывашь сопернику по обеим диагоналям, вертикали и горизонтали отдельно?
На самом деле для оценки достаточно знать — что-бы постоил соперник данным ходом.
Чтоб узнать это — надо взять девять (восемь точек), например четыре слева по горизонтали, и четыре справа. Вариантов комбинаций —
3^8
(44) мощность множества = количество элементов множества

NS спасибо за советы.
Воспользовался советом в (45) переделал ТЗ для анализа ходов. стал анализировать не каждую свободную клетку поля, а каждую свободную линию. По 4 линии на каждую клетку. Алгоритм стал проще, быстрей и понятней.
Совет из (50) тоже оказался полезным.
Программа стала очень шустрой меня и обработку с проклаба обыгрывает легко.

(52) Доделываю менеджер, и сегодня прикручу блок к обработке на проклубе для игры с менеджером. Скоро сможешь с ней матч через менеджер устроить ;-))
Как раз, как только выложу — устроим перекличку, и определимся со списком участников.

Задача №2
Дан граф G=(V,E) где V множество вершин графа, E множество ребер графа. Множество ребер E разбито на два подмножества E1 и E2 (E=E1+E2).
Найти путь от вершины «a» до вершины «b», причем путь должен начинаться и заканчиваться ребром из множества E1, затем ребра должны чередоваться.
Путь P=, где x1,x2…xn принадлежат множеству E1, y2,…yn-1 принадлежат E2.

Есть город со сложной схемой улиц и перекрестков. В нем множество тоннелей и эстакад, причем, так получилось, что на перекресток может выходить сразу много улиц аж до тринадцати. Мэр города с целью упорядочения движения раскрасил улицы в зеленый и оранжевый цвета. Водителям предписывается, если они подъехали к перекрестку по зеленой улице, то обязаны продолжить движение по оранжевой улице и наоборот. Развороты запрещены на всей территории города. Как проехать водителю из пункта А в пункт Б, и не нарушить правила.

(55) По МКАДу.

(55) Это задача звучит так — найти кратчайший (или просто найти) путь между двумя вершинами графа. Без раскраски — Дейкстра придумал алгоритм. С раскраской в два цвета — просто нужно алгоритм немного модифицировать — кроме длины пути (наличия пути) к вершине — хранить с улицы какого цвета мы до этой точки добрались.

(55)
Можно попробовать искать множества доступных улиц с обоих концов
Т.е.
из начальной точки выбрать доступные улицы для движения (мн1)
из конечной точки выбрать доступные улицы для движения (мн2)

выбрать доступные улицы для мн1
выбрать доступные улицы для мн2

Искать до тех пор, пока мн1 и мн2 не пересекутся или (мн1 или мн2 будуи содержать множество всех доступных улиц)

Это при условии, что по улице можно проехать только один раз

Можно искать из одной точки до тех пор пока не достигнем второй

Создается два массива (списка) Список вершин желтых путей, и список вершин зеленых путей.
Понятно, что ежели мы ищем кратчайший путь, то в нем не будет разворотов (мы приходим к той же ситуации, но потратив два шага), и двойных проездов по одной и той-же дороге. Получается, что это условие не обязательно, его можно заменить на условие — «проехав минимальное количество учатков дороги, либо перекрестков».
И бежим по циклу — сначала ищем вершины с длиной пути один, добавляем вершины в соответствующие списки. Потом в цикле для каждай вершины, нгачиная с первой в каждом списке ищем пути длины два, уже пройденные вершины занося в списки пройденных вершин (тоже два списка) — вот и получается тот-же самый алгоритм дейкстры.

Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой

Как сделать крестики нолики в 1с

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

Покритикуйте алгоритм, если у кого есть время, плз 🙂

Тебе заняться нечем?
2. Алгоритм не смотрел, но осуждаю. (с)
Алгоритм тупой
(2) т.е. даже и не хочешь посмотреть?
(4) а) некогда б) лень в) у меня на работе есть занятие и поинтереснее.
+(5) И вообще я сегодня злой.
гы, оказывается тут еще есть люди которые не писали Крестики-Нолики. 😉
а че на 7.7 ?
(7) Есть. как минимум я.
«А зачем?» (с)
(7) ты не поверишь, но на вражеском сайте классических крестиков-ноликов (3х3) я не нашел
(8) что роднее
(0) опоздал ты
на инфо старте давно уже валяется
(9)+1
не вижу смысла, да и времени нет всякой ерундой заниматься
ну не знаю, мне в свое время было интересно
правда в моем варианте выиграть у компа нереально 🙂
(15) а как делал проверку? Через рекурсию?

Семерки под рукой нет, иначе бы с интересом посмотрел. Интересно, что за алгоритм для крестиков (да еще 3*3), который «думает достаточно долго (успел покурить пока он делал первый ход),».
Просто не представляю, чтО там такое надо написать, чтоб долго думало.

(16) да какая там рекурсия? при размере 3х3? все передельно просто и тупо 😉
Комп начинает с центра? У меня что-то залил не пашед.
(17) 362880 вариантов проверить не просто
(19) ошибка или думает долго?
(19) а. да, если комп ходит первый, то он оптимальным вариантом считает центр на первом ходе
Зачем проверять тристатыщ вариантов ? О_О
(23) глянь алгоритм 🙂
Не могу, нет семерки.

Сорри, за портянку

// Проверить насколько удачен вариант (рекурсивно)
// Игрок — буква игрока («Х» или «О»), для которого проверяем
// Вариант — строка, длиною в 9 символов. Каждый символ отдельная ячейка со значением «Х»,»О» или » »
// Рейтинг — текущий рейтинг (до проверки)
// Уровень — уровень рекурсии. Сначала 1, потом 2 и т.д.
// Возвращает: Список значений с данными:
// Рейтинг — Рейтинг проверяемого варианта
// Вариант — Наилучший вариант для хода
Функция ПроверкаВарианта(Игрок, Знач Вариант, Знач Рейтинг=0, Знач Уровень=1)

// Проверяем, не является ли данный вариант выигрышным/проигрышным
// Считаем рейтинг и возвращаем
Выигран = ВыигралВариант(Вариант);
Если Выигран=БукваКомпьютера Тогда
Рез.Установить(«Рейтинг»,Рейтинг+1*(9-Уровень));
//Рез.Установить(«Рейтинг»,Рейтинг+1);
//Рез.Установить(«Рейтинг»,Рейтинг+1*(9-Уровень));
Рез.Установить(«Вариант»,Вариант);
Возврат Рез;
ИначеЕсли Выигран=БукваИгрока Тогда
Рез.Установить(«Рейтинг»,Рейтинг-2*(9-Уровень));
//Рез.Установить(«Рейтинг»,Рейтинг-1);
//Рез.Установить(«Рейтинг»,Рейтинг-1*(9-Уровень));
Рез.Установить(«Вариант»,Вариант);
Возврат Рез;
КонецЕсли;

// Устанавливаем первоначальные данные
КоличествоВариантов=0;
СуммовойРейтинг=0;
ЛучшийВариант=»»;
ЛучшийРейтинг=-9999999999;

// Цикл по ячейкам
Для Идн=1 по 9 Цикл
// Прверяем только пустые ячейки
Если Сред(Вариант,Идн,1)=» » Тогда

КоличествоВариантов = КоличествоВариантов + 1;

// Непосредственно, проверяем вариант
НовыйВариант = Лев(Вариант,Идн-1)+Игрок+Сред(Вариант,Идн+1);
НовыйРезультат = ПроверкаВарианта(?(Игрок=»О»,»Х»,»О»),НовыйВариант, Рейтинг, Уровень+1);

// Суммируем рейтинги для рассчета среднего
СуммовойРейтинг = СуммовойРейтинг + НовыйРезультат.Получить(«Рейтинг»);

// Запоминаем лучший вариант
Если НовыйРезультат.Получить(«Рейтинг»)>ЛучшийРейтинг Тогда
ЛучшийРейтинг=НовыйРезультат.Получить(«Рейтинг»);
ЛучшийВариант=НовыйВариант;
КонецЕсли;

// Рейтинг считается по среднему
Если КоличествоВариантов>0 Тогда
Рез.Установить(«Рейтинг»,СуммовойРейтинг / КоличествоВариантов);
Рез.Установить(«Вариант»,ЛучшийВариант);
Иначе
Рез.Установить(«Рейтинг»,Рейтинг);
Рез.Установить(«Вариант»,Вариант);
КонецЕсли;

Игра «Крестики-нолики»

  • XOupr1.jpg
  • XOupr.jpg
  • XO.jpg
  • XO2.jpg
  • XO3.jpg

Если найдете ошибки или будут предложения по дальнейшей разработке/развитию, пишите.

В будущем выложу мобильное приложение.

См. также

Пятнашки

Цель — обучение хитростям нашей всеми любимой 1С.

28.11.2023 656 24 user1834118 0

6 24 0 656

Кар магедон

Держись, российский геймдев, я уже еду. Бета тест, можно оформлять предзаказы, будет донатный магазин с модельками российского автопрома (по цене реальных авто).

01.11.2023 1333 32 user1834118 7

11 32 7 1333

Турнир по 1С. Танки на СКД

Предлагаю свою версию турнира. Особенность этого турнира в том, что тут нет правильных или неправильных решений. Есть твое решение и решение твоих соперников. У кого решение лучше тот и победит.

1 стартмани

09.10.2023 1357 0 opx 1

9 0 1 1357

Плоский «Кубик Рубика»

Вы можете собрать кубик Рубика? Я — только с помощью инструкции:). Попробуйте справиться с его плоским аналогом.

1 стартмани

29.05.2023 1808 6 Alxby 3

13 6 3 1808

Пасьянс Марии Стюарт (пасьянс Медичи) — попробуй изменить свою судьбу

Игра — пасьянс Марии Стюарт. Есть возможность создавать свои расклады, обмениваться раскладами и менять картинки карт.

1 стартмани

05.05.2023 2507 1 sandr13 0

13 1 0 2507

Тетрис

Когда под рукой только 1С и как-то нужно скоротать время, можно поиграть в Тетрис.

1 стартмани

29.04.2023 3017 11 user1693438 2

14 11 2 3017

Головоломка Пентамино

Широко известная головоломка, основанная на составлении фигур из составных частей. В данной реализации в качестве фигуры используется прямоугольник, а в качестве составных частей — пентамино, тетрамино или гексамино. Реализованы классические варианты головоломки и вариант со случайной генерацией фигур.

1 стартмани

18.04.2023 5065 5 Alxby 9

23 5 9 5065

Игра Sumplete

Разминка для мозга на устный счет.

1 стартмани

27.03.2023 1951 1 kyzma-kyzmi4 6

6 1 6 1951
Посмотреть ещё
Комментарии

  • Дата
  • Дата
  • Рейтинг всех уровней
  • Рейтинг 1-го уровня
  • Древо развёрнутое
  • Древо свернутое

Свернуть все
1. jonson_r 2 18.11.16 11:46 Сейчас в теме
Играю уже второй год, супер!
DrAku1a; PowerBoy; + 2 – Ответить
2. user1312899 19.11.19 13:18 Сейчас в теме
Очень жду мобильную версию, чтобы играть везде, а не только за компьютером
3. Ligo1 10.09.20 18:14 Сейчас в теме
Виктор Григоренко (JohnGalt)

Рейтинг: 57

Для получения уведомлений о новых публикациях автора подключите телеграм бот: Инфостарт бот

Публикация:

562427

Создание 18.11.16 11:08

Обновление 01.12.16 16:23

Статистика:

Просмотры 15288

Загрузки 6

Рейтинг 3

Комментарии 3

Характеристики:

Код открыт Да

Рубрики Игры

Кому Для всех

Конфигурация Конфигурации 1cv8

Операционная система Не имеет значения

Страна Не имеет значения

Отрасль Не имеет значения

Налоги Не имеет значения

Вид учета Не имеет значения

Доступ к файлу Абонемент ($m)

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

Для владельцев коммерческих тарифов уже доступны от 2 до 10 приложений в рамках интеграционного пакета. Подробно изучить возможности полного каталога готовых решений Битрикс24 Маркет Плюс вы можете в бесплатном 15-дневном демо-режиме.

Крестики-нолики
По подписке
Установить
Информация
Опубликовано : 13.12.2022
Установок : 12
Другие приложения разработчика
Элемент массива для бизнес процессов
По подписке
Удаление элемента массива через бизнес процессы
По подписке

Разбавь рабочие будни, налей чашечку кофе и сыграй партию в знакомую всем игру! 🙂

В игре доступны:
— 5 уровней сложностей;
— Возможность сыграть с ботом или другом;
— Изменение размера игрового поля;
— Выбор за кого побеждать!

Как играть:
Нажмите 2 раза на поле мышкой, чтобы сделать ход выбранной фигурой.
Побеждает тот, кто первый выстроит свои фигуры 5 подряд по горизонтали, вертикали или диагонали.

PS
Первому, кто победит на уровне сложности «Областной» мы дарим подарок!)

Попробуйте другие наши приложения:

Версия 1
Классика жанра теперь в Битрикс24!

Контакты технической поддержки

Процесс установки прост:

1) Нажать установить
2) Появится слева в меню пункт «Крестики-нолики»
3) В бой!

Возможности

  • Заказать внедрение
  • Партнеры
  • Стать партнером
  • Битрикс24 для энтерпрайз

Цены и тарифы

  • Сколько стоит?
  • Коробочная версия

Приложения

  • Мобильное приложение
  • Приложение для Windows и Mac
  • Битрикс24 Маркет
  • Разработчикам приложений
  • Соглашение об использовании сайта
  • Политика обработки персональных данных
  • Согласие на обработку персональных данных
  • Поручение для конечного пользователя
  • Правила использования Битрикс24 Сайты
  • Карта сайта

© 2001-2024 «Битрикс», «1С-Битрикс». Работает на «1С-Битрикс: Управление сайтом» 16+
Cookie-файлы

Данный веб-сайт использует аналитические и технические cookie-файлы. Аналитические cookie-файлы используются для того, чтобы определить из какой страны или с какой веб-страницы пользователь перешел на веб-сайт, а также какие действия он производит на веб-сайте Технические cookie-файлы необходимые для надлежащего функционирования некоторых функций данного веб-сайта, таких как возможность использования чата в реальном времени. Отключение этих cookies-файлы приведет к отключению доступа к этим функциям и ухудшению качества работы веб-сайта.

Файлы cookie данных типов могут быть включены или отключены в этом плагине.

Настройка cookie-файлов
Технические cookie-файлы
Аналитические cookie-файлы

Мы используем файлы cookie для улучшения работы сайта. Подробную информацию вы найдете в Политике ИУП «1С-Битрикс» обработки персональных данных. Изменить настройки

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *