Введение в Python
Поиск
Новое на сайте
Сапер на Python
Для начала зададим глобальные переменные и создадим окно игры:
Получим примерно такую картинку
Теперь добавим возможность отслеживать мины и нажатые клеточки, а также функционал для обработки клика по клеткам:
Осталось привязать обработчики событий для созданных функций. Поместите следующий код после строчки с.pack() :
Если вы все сделали правильно, то сможете кликать по клеткам:
Для начала следует объяснить, что у каждой клеточки есть свой уникальный идентификатор. В коде мы получаем доступ к нему через переменную библиотеки tkinter CURRENT. Если нарисовать идентификаторы на клетках, то получим вот такую картину.
Теперь напишем функцию для получения соседних идентификаторов клетки. У нас может быть восемь уникальных ситуаций, когда количество соседних клеток не равно восьми. Посмотрите на нижнее изображение (поле GRID_SIZE увеличено c 8 до 9 для наглядности)
У угловых клеток (1, 9, 73, 81) только по 3 соседа. У клеток из крайних рядов (например, 5, 37, 45, 77) по 5 соседей. Во всех остальных ситуациях (например, 41) соседних клеток 8. Напишем функцию, реализующую данный функционал:
Теперь создадим функцию подсчета мин в соседних клетках. Это достаточно просто сделать используя метод intersection типа данных сет.
И, наконец, рекурсивная функция которая свяжет все это вместе:
Конечно, простое увеличение лимита рекурсии лишь отодвигает возникновение ошибки, но не решает проблему как таковую. Попробуйте определить функцию clearance таким образом, чтобы убрать рекурсию вообще. Я не публикую решение этой задачи тут, оно будет добавлено на Github. Постарайтесь решить эту задачу самостоятельно. На этом все, приятной игры.
Полный код игры сапер на Python на GitHub
Создание сапера при помощи модуля Tkinter
День добрый. Почти каждый начинающий программист стремится к созданию своей первой игры. Спустя пол года ленивого кропотливого обучения я решился написать сапера. Языком написания был выбран Python, модулем для добавления интерфейса tkinter, потому как уже имелся опыт работы с ним. Этот пост будет полезен скорее начинающим кодерам, но если вы итак все знаете, можете написать свои советы по улучшению кода в комменты.
Приступим. Первым делом нужно было определиться, что будет собой представлять клетка. Самое выгодное решение — создать класс поля:
Теперь надо создать интерфейс для настройки игры:
В итоге получаем вот такое вот окно:
Теперь нужно прописать функцию bombcounter
Теперь приступаем к основной части, написанию функции игры:
Все, что здесь происходит, это заполнение массива self.around. Мы рассматриваем различные случаи и на выходе получаем верный ответ. Если есть варианты, как сделать это проще, я приму их во внимание.
Итак. Сейчас у нас написаны функции: открытия клетки, заполнения массива around, начала игры и получения значения насчет размера игрового поля и кол-ва мин. Но до сих пор нет функции для установки мин. Исправляемся:
И вторая важная для нас функция: setValue()
На этом заканчивается основная часть. Игра может работать прямо сейчас, но без установки флажка и определения победы/проигрыша. Тут все просто. Установка флажка:
Функции lose() и winer() просты и не требуют объяснений. Если будет нужно, напишу в комменты.
Сапёр
Здравствуйте. Помогите, пожалуйста, решить задачу:
На поле для игры в сапер клеточки с минами обозначаются символом “*”, а в каждой пустой клеточке записано число от 0 до 8, равное количеству мин в 8 клетках, соседних с данной.
Дан список мин на поле. Постройте по данному списку изображение поля.
Выходные данные
Выведите изображение поля на экран, клетки при выводе разделяйте одним пробелом.
Примеры
входные данные
3 2 2
1 1
2 2
выходные данные
* 2
2 *
1 1
Сапёр на python
помогите сделать обычный сапер на питоне, где можно выбирать координаты и выбирать что сделать с.
Игра Сапер
Здравствуйте! Вот все не могу добить. надо было написать код для поля игры Сапер. Вроде есть, но.
Игра сапер
Поле для игры сапёр представляет собой сетку размером n×m. В ячейке сетки может находиться или.
Написать генератор карт для игры «сапёр».
Написать генератор карт для игры «сапёр». Карта размером NxM. Формат ввода Каждая строка.
Решение
Сапер
Доброго времени суток! Хотел узнать, может у кого завалялись исходники игры «сапер» на Java?
Сапер
Доброго времени суток! Подскажите пожалуйста, где я налажал в коде? Я запутался:( Ругается на.
Сапер
Здравствуйте. Вы не могли бы мне помочь, очень нужно. Никак не могу написать программу сапер на.
Игра сапер
Поле для игры сапёр представляет собой сетку размером n×m. В ячейке сетки может находиться или отсутствовать мина.
Напишите программу, которая выводит «решённое» поле, т.е. для каждой ячейки, не являющейся миной, указывается число мин, находящихся в соседних ячейках (учитывая диагональные направления)
Формат ввода:
На первой строке указываются два натуральных числа 1≤n,m≤100, после чего в n строках содержится описание поля в виде последовательности точек ‘.’ и звёздочек ‘*’, где точка означает пустую ячейку, а звёздочка − ячейку с миной.
Формат вывода:
n строк поля, в каждой ячейке которого будет либо число от 0 до 8, либо мина (обозначенная символом «*»), при этом число означает количество мин в соседних ячейках поля.
23*1
**32
23*1
0111
при таких входных данных верный результат но при входных
2 2
.*
..
выдает
2*
21
хотя должно
1*
11
где я запутался?
Игра Сапер
Здравствуйте! Вот все не могу добить. надо было написать код для поля игры Сапер. Вроде есть, но.
Сапёр на python
помогите сделать обычный сапер на питоне, где можно выбирать координаты и выбирать что сделать с.
Написать генератор карт для игры «сапёр».
Написать генератор карт для игры «сапёр». Карта размером NxM. Формат ввода Каждая строка.
Сапёр
Здравствуйте. Помогите, пожалуйста, решить задачу: На поле для игры в сапер клеточки с минами.
Русские Блоги
Python: Игра: Сапер (с исходным кодом)
На этот раз мы проводим разминирование на основе pygame. В прошлый раз друг из сада спросил меня о Python-версии кода. Позвольте мне объяснить, что весь мой код основан на Python 3.6.
Сначала посмотрите на скриншот, имитирующий тральщик на XP, я чувствую, что стиль на XP намного лучше, чем на win7.
Если вы не понимаете Python, рекомендуется присоединиться к группе общения
№: 960410445
Друзья-единомышленники в группе помогают друг другу, помогают друг другу,
В группе есть хорошие обучающие видео-уроки и PDF-файлы!
Во-первых, как представлять мины и не мины, первой мыслью было создание двумерного массива для представления всей области, 0 для не шахт и 1 для мин. Позже, когда я подумал об этом неправильно, там были мины, вопросительные знаки и цифры, указывающие на количество мин вокруг. Есть много штатов. Просто сделайте класс.
Брэй очень прост, взять 99 чисел наугад и расположить их по порядку сверху вниз.
Когда мы нажимаем на сетку, пока мы находим соответствующую шахту в соответствии с координатами щелчка и видим ее значение, мы знаем, наступили ли мы на шахту.
Если вы не наступите на гром, вам нужно посчитать, сколько грома в 8 окружающих областях, чтобы отобразить соответствующее число.
Если вокруг гром, то отображается число.Это просто, но если вокруг нет грома, то будет отображаться область до грома.
Этот расчет на самом деле прост. Просто используйте рекурсию. Если количество окружающих мин рассчитывается как 0, то рекурсивно рассчитайте количество окружающих мин в 8 местах, пока количество мин не станет равным нулю.
Затем возникает проблема. Мы часто нажимаем левую и правую кнопки одновременно. Если гром отмечен всем, он сразу откроет все решетки. Если в нем неправильная отметка, извините, GAME OVER.
Если он не полностью помечен, появится эффект, показывающий круг неоткрытых и помеченных сеток вокруг