[offtop]Перво-наперво, прежде чем читать мои размышления,
ОТКЛЮЧАЙТЕ МОДУЛЬ ВООБРАЖЕНИЯ. Во избежание.[/offtop]
ну, первые два случая я описал уже. То есть,
ты щёлкаешь, открываешь компу немного, чтобы
было, с чего начать, и дальше он погнал сам:
1) Если у клетки число соседей (неоткрытых и мин)
равно числу, на клетке нарисованному, на всех
соседях устанавливаются флажки "МИНА".
2) Если у клетки число соседей больше, чем число,
нарисованное на ней (ниже - цена клетки, ЦК), а число мин-соседей
равно ЦК, всех остальных соседей мы вскрываем,
так как среди них, извиняюсь, мин нет. (
)
А дальше - более продвинутые идеи. Вот только их реализация пока
хромает.
1) Алгоритм пар. Если у клетки число соседей равно (ЦК+1),
а число мин - (ЦК-1), два соседа, не помеченные как мины,
формируют ПАРУ.
2) Если некая клетка среди соседей имеет
ЦК = Число Мин + Число пар (соседних с клеткой),
вскрываются все остальные соседи, не входящие в таковые пары.
3) Если ЦК+1 = число соседей и среди соседей есть ПАРА, все
соседи, НЕ входящие в пару, получают статус мин.
4).... (то же с ТРОЙКАМИ).
...И в конце: Если число мин на поле (ведь оно известно) равно числу
неоткрытых клеток, игра закончена.
Вот и все идеи на данный момент.
Вот только реализация алгоритма обработки пар...
Короче, вы когда-нибудь видели пьяного в тюфельку ежика,
идущего с шестом по канату на двух лапах?
И это при том, что по идее все должно работать!