Игра "Сапер" by STivO (v.1.2)

Опубликовал Дмитрий Иванов (STivO) в раздел Сообщество - Игры

Написана максимально приближенно к оригиналу игры "Сапер" для Windows

Кто не знаком с этой игрой, можете почитать тут http://ru.wikipedia.org/wiki/Сапёр_(игра)

Изменения в версии 1.2:

- Устранены баги при открытии ячеек

Изменения в версии 1.1:

- Открытие ячейки щелчком ЛКМ

- Установка флажков/вопросов щелчком ПКМ

P.S. Идея "отлова" нажатия ЛКМ, ПКМ была взята из статьи Ввод щелчком мыши: правым, левым, двойным


 

Все замечания и предложения приветствуются!

Скачать файлы

Наименование Файл Версия Размер
Сапер by STivO v.1.2.epf
.epf 118,68Kb
18.03.13
21
.epf 118,68Kb 21 Скачать
Сапер by STivO v.1.1.epf
.epf 117,02Kb
18.03.13
8
.epf 117,02Kb 8 Скачать
Сапер by STivO v.1.0.epf
.epf 123,42Kb
18.03.13
25
.epf 123,42Kb 25 Скачать

См. также

Комментарии
1. Serj (Serj1C) 461 19.04.12 12:43 Сейчас в теме
Мне понравилось. Единственное, что пришлось поправить - открытие поля одним щелчком мыши (при Активизации Ячейки а не при Выборе)
2. Дмитрий Иванов (STivO) 55 19.04.12 12:48 Сейчас в теме
(1) Serj1C, Спасибо. Да, изначально так и было, но в данном случае невозможно было бы установить флажок/метку. Хотя есть те, кто их не используют.
3. Александр Уткин (_apelsin4ik) 28.06.12 11:08 Сейчас в теме
Вообще, вполне играбельная программа. Мне понравилась)
4. Тимофей Шантин (ShantinTD) 85 15.08.12 11:17 Сейчас в теме
реально продумал. молодец. борись за правую кнопку.
5. Дмитрий Кондратьев (codmal) 63 18.09.12 10:51 Сейчас в теме
По поводу нерешённой проблемы с управлением (не отлавливается событие ПКМ) :
она решена в публикациях "Ввод щелчком мыши: правым, левым, двойным" и "Игра «Сапёр»"
http://infostart.ru/public/62233/
http://infostart.ru/public/62411/
6. Андрей Акулов (DrAku1a) 1198 02.01.13 18:51 Сейчас в теме
Предлагаю алгоритм автоматического решателя:
//--- DrAku1a
// анализ игрового поля, открытие 100% пустых клеток и установка флажков.
// с высокой вероятностью - выигрыш
Функция ОткрытьСмежныеЯчейки(Поле, ЭлементПоле) Экспорт
	фл=ложь;
	Пока СостояниеИгры=1 Цикл
		фл=ложь;
		Для x = 0 по ВысотаПоля - 1 Цикл
			Для y = 0 по ШиринаПоля - 1 Цикл
				чм = Поле[x][y];
				Если (чм>0) и (чм<9) Тогда
					чя = 0;
					Для dx=-1 По 1 Цикл
						Для dy=-1 По 1 Цикл
							xx = x + dx; yy = y + dy;
							Если (dx=0 и dy=0) или (xx<0) или (xx>=ВысотаПоля) или (yy<0) или (yy>=ШиринаПоля) Тогда
								Продолжить;
							КонецЕсли;
							Если Поле[xx][yy]=0 Тогда
								чя = чя + 1;
							ИначеЕсли Поле[xx][yy]=9 Тогда
								чм = чм - 1;
							КонецЕсли;
						КонецЦикла;
					КонецЦикла;				
					Если (чя=чм) и (чм>0) и (чм<9) Тогда
						фл = Истина;
						Для dx=-1 По 1 Цикл
							Для dy=-1 По 1 Цикл
								xx = x + dx; yy = y + dy;
								Если (dx=0 и dy=0) или (xx<0) или (xx>=ВысотаПоля) или (yy<0) или (yy>=ШиринаПоля) Тогда
									Продолжить;
								КонецЕсли;
								Если Поле[xx][yy]=0 Тогда
									Поле[xx][yy]=9;
								КонецЕсли;
							КонецЦикла;
						КонецЦикла;
					ИначеЕсли чм=0 Тогда
						Для dx=-1 По 1 Цикл
							Для dy=-1 По 1 Цикл
								xx = x + dx; yy = y + dy;
								Если (dx=0 и dy=0) или (xx<0) или (xx>=ВысотаПоля) или (yy<0) или (yy>=ШиринаПоля) Тогда
									Продолжить;
								КонецЕсли;
								Если Поле[xx][yy]=0 Тогда
									фл=Истина;
									ЭлементПоле.ТекущаяСтрока = Поле[xx];
									ЭлементПоле.ТекущаяКолонка = ЭлементПоле.Колонки[yy];
									ОткрытьЯчейку();
									Если СостояниеИгры=0 Тогда
										Сообщить("Ой...");
										ИзобразитьЧислоМин();
										Возврат истина;
									КонецЕсли;
								КонецЕсли;
							КонецЦикла;
						КонецЦикла;
					КонецЕсли;
				КонецЕсли;
			КонецЦикла;
		КонецЦикла;	
		Если не фл Тогда
			Прервать;
		КонецЕсли;
	КонецЦикла;
	ИзобразитьЧислоМин();
	Возврат фл;
КонецФункции
...Показать Скрыть

(Прошу прощения за названия переменных)

Далее - в форме - переделываем процедуру
Процедура ПолеВыбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)

	ОткрытьЯчейку();
	
	//DrAku1a ---
	ОткрытьСмежныеЯчейки(Поле, ЭлементыФормы.Поле);
	
КонецПроцедуры
...Показать Скрыть


Всё! Теперь после клика на ячейку - будет открыта часть поля, затем анализируются клетки окружения, выставляются флажки и открываются клетки... Т.е., компьютер уже думает за нас :)
dimidron1; STivO; +2 Ответить 1
7. Дмитрий Иванов (STivO) 55 03.01.13 10:22 Сейчас в теме
(6) DrAku1a, Весьма забавно получилось) С первого хода несколько раз выигрывал, "читерство" получается))
dimidron1; +1 Ответить
9. alean alean (alean) 35 23.05.13 11:39 Сейчас в теме
понравилось.
прекрасно реализовано!
10. Viacheslav Bilous (Gendalf_beliy) 04.09.14 14:10 Сейчас в теме
я так понял эта обработка для платформы 7.7?
11. Ёпрст (Ёпрст) 1017 04.09.14 13:49 Сейчас в теме
12. Дмитрий Иванов (STivO) 55 04.09.14 14:31 Сейчас в теме
13. Viacheslav Bilous (Gendalf_beliy) 08.09.14 17:56 Сейчас в теме
(10) Gendalf_beliy, для 8.2
(12) STivO,
Спасибо за ответ, тогда скачаю.
Просто показалось, что цветовой оформление такое же как у 1с 7.7.
Ксати создание сапер, это одно из заданий обучения 1с для школьников ))
Оставьте свое сообщение