Понятия не имею, что здесь будет, но могу сказать, чему точно места не найдётся. Здесь не будет никаких вырезок из кода, вообще ничего о технической стороне этого действа — написания программы. Здесь только алгоритмы и «человеческим языком», так сказать. Будем считать, что оформить алгоритм в код для таких реальных пацанов, как мы — вообще не вопрос.
В начале было слово... Шутка, на самом деле в начале была материя, а слово — результат мышления, которое, в свою очередь, результат деятельности высокоорганизованной материи (мозга)... Видите, как я из далека — чтоб понятно было. Так значит точки? Что есть, собственно, игра в точки? Я разделяю два принципиальных момента игры в точки — технический и ...нетехнический. В смысле, во-первых, у нас должен быть листок в клетку и разноцветные ручки (технический) и, во-вторых, мы должны знать правила игры (нетех... ну ладно, ладно). Научим комп для начала этому. Помня, что мы есть реальные чуваки — взяли окошко, разлиновали на клетки, сделали возможность ставить в перекрестия точки и в них только. Это всё неинтересно. Интересное — научить электрического болвана самостоятельно соединять точки в линии. Один важный момент. Второй момент — соединять только когда нужно, то есть, когда внутри есть чужие точки. Хорошо бы запретить ему обводить свои, но у меня вот не получилось чего-то. Ну вот, начало закончилось — идём учить нашего друга рисовать замкнутые линии.
Учим рисовать замкнутые линии. Я чуть-чуть подумал и решил сделать весь ИИ как максимально близкую имитацию человеческого И. То есть как человек понимает, что пора бы уже и обвести? Ну смотрит глазами от одной точки к другой, от одной к другой, пока не нащупает (глазами же) замкнутую линию — вот и в моей программе так же — от каждой точки, по всем возможным путям, ходит наш бедный компьютер, пока не вернётся в ту, с которой всё начиналось... Романтично? А то! Долго, конечно, но ничего не поделаешь. Красота требует жертв. Брр... Какая красота? У нас точки! Ага. Ну всем уже во всей красе представилась, я думаю, не очень большая такая рекурсивная функция с условием рекурсии — следующая точка нужная (того же цвета, не захвачена, не та, с которой пришли и т. д., не помню, что там «т. д.»), а условием выхода — пришли куда надо (в начальную). Ещё нужно бы помечать те, в которых были, чтоб по кругу не ходить. Всё, что ли?.. Ну потом, когда нам функция вернёт, что нашла чего-то, мы по тем самым помечанным точкам прошвырнёмся, запишем адреса и сформируем отряд «линия» с последующим определением в «прорисовку». Шли мы по-порядку, записывали по-порядку, значит можно просто по-очереди коротенькой линией все соединить и делов, та.
рис. «было-стало»