![]() |
![]() |
Vinchkovsky |
![]()
Сообщение
#1
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 98 Пол: Мужской Реальное имя: Andriy Репутация: ![]() ![]() ![]() |
Здравствуйте
![]() В общем, пишу сапер на Паскале, исключительно сам (впрочем, до этого момента), "от нечего делать", с псевдографикой и без использования приемов ООП. Возникли два вопроса совершенно разного рода. 1) На поле есть такая ситуация (создавал в Paint, правя другое расположение мин, так что если есть какие-то несоответствия - извиняйте. Отдельное извинение за качество, случайно сохранил в .джпг, что мог - то подправил. Ну и английский ![]() ![]() Допустим, все клетки поля не раскрыты. После нажатия клетки, которая "в фокусе" (выделенная зеленым), как должны открыться клетки? У меня варианта три: ![]() Склоняюсь в верхнему справа, а что думаете вы? 2) Как можно гибко менять размеры окна (не в полноэкранном режиме)? Как я понял, с помощью процедуры TextMode гибкости не получить, я прав? Спасибо ![]() Сообщение отредактировано: volvo - 18.02.2009 23:03 |
![]() ![]() |
andriano |
![]()
Сообщение
#2
|
Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: ![]() ![]() ![]() |
Думаю самый простой и достаточно эффективный алгоритм заполнения поля:
- расставить подряд нужное количество мин, - пробежаться по всем минам и произвести обмен со случайной клеткой поля. |
Lapp |
![]()
Сообщение
#3
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Думаю самый простой и достаточно эффективный алгоритм заполнения поля: - расставить подряд нужное количество мин, - пробежаться по всем минам и произвести обмен со случайной клеткой поля. 1. Первое действие абсолютно излишне; ничто не мешает ставить мины на места прямо "со склада". 2. Второе действие совершенно прекрасно приводит к исходному вопросу Стаяна в случае, когда "случайная клетка поля" уже занята. andriano, предлагая "лучший" алгоритм, пожалуйста, указывай, чем тебе не нравятся уже приведенные алгоритмы. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
andriano |
![]()
Сообщение
#4
|
Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: ![]() ![]() ![]() |
1. Первое действие абсолютно излишне; ничто не мешает ставить мины на места прямо "со склада". Разница проявляется в том случае, когда выбранная клетка уже занята. При этом мы не ставим вторую мину в уже занятую клатку, а меняем местами две мины. Цитата 2. Второе действие совершенно прекрасно приводит к исходному вопросу Стаяна в случае, когда "случайная клетка поля" уже занята. Именно поэтому я и предложил двухэтапную схему, т.к. каждый из этапов поотдельности не приводит к требуемому результату. Цитата andriano, предлагая "лучший" алгоритм, пожалуйста, указывай, чем тебе не нравятся уже приведенные алгоритмы. В свою очередь могу посоветовать попытаться разобраться в алгоритме прежде, чем чем утверждать, что часть его лишняя, а оставшаяся часть ничем не лучше того, что уже предложено ранее. PS. Кстати, пересмотрел тему с начала и заметил, что данный прием мною уже предлагался. Поэтому тому, кто задает вопрос посередине обсуждения, все-таки следовало бы прежде прочитать тему с начала. |
Lapp |
![]()
Сообщение
#5
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Насчёт излишнести 1 действия я не понял. Приведи код. Вот это круто. Просить меня привести код, в то время как алгоритм приведен на уровне "поди туда, не знаю куда". ![]() Цитата Мне кажется, у тебя будут проблемы в случае, когда надо поменять местами 1 и 2 клетки, и на 2й со склада ещё ничего не стоит. У меня не было, нет и не будет никаких проблем (по крайней мере, по таким поводам).Отнюдь. Либо я персидский шах, либо - турецкий султан.. Интересно, у тебя уже и мины все разные? У каждой свой номер? или имя? и взрываются по-разному? А если нет - зачем их менять местами?.. Разница проявляется в том случае, когда выбранная клетка уже занята. При этом мы не ставим вторую мину в уже занятую клатку, а меняем местами две мины. ![]() Цитата Второе без первого - да, приводит. Второе без первого просто не будет работать совсем, если я правильно понимаю алгоритм. Я не предлагал использовать второе без первого.Цитата Именно поэтому я и предложил двухэтапную схему, т.к. каждый из этапов поотдельности не приводит к требуемому результату.Я ни в коей мере не утверждал, что лично мне они не нравятся. Просто они подвергались критике со стороны ДРУГИХ участников обсуждения. Так соотнеси свои слова с этой критикой.Цитата В свою очередь могу посоветовать попытаться разобраться в алгоритме прежде, чем чем утверждать, что часть его лишняя, а оставшаяся часть ничем не лучше того, что уже предложено ранее. ...Цитата PS. Кстати, пересмотрел тему с начала и заметил, что данный прием мною уже предлагался. Поэтому тому, кто задает вопрос посередине обсуждения, все-таки следовало бы прежде прочитать тему с начала. Вот, наконец-то, соизволили-с.. Уважаемый andriano, у нас с тобой один раз уже был разговор где ты прекрасно проявил свою профессорскую рассеянность. Рекомендую тебе на будущее ЧИТАТЬ ТЕМЫ, В КОТОРЫЕ ОТВЕЧАЕШЬ. И имей в виду, пожалуйста, что я еще пока ожидаю твоих извинений за тот прецедент.-------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Гость |
![]()
Сообщение
#6
|
Гость ![]() |
Вот это круто. Просить меня привести код, в то время как алгоритм приведен на уровне "поди туда, не знаю куда". Алгоритм приведён достаточно точно, чтобы его применить. Заполняем первые n полей минами, потом for i := 0 to n - 1 do swap(i, i + random(size-i)); > Интересно, у тебя уже и мины все разные? У каждой свой номер? Одинаковые. Но одна из меняемых клеток может не содержать мину. А может и содержать. А как твой вариант будет это обрабатывать, есть вторая клетка заведомо без мины, и мы её переместим хз куда? Будешь запоминать все перестановки? |
![]() ![]() |
![]() |
Текстовая версия | 24.06.2025 6:37 |