Хочу поделиться своей реализацией игры Джона Конвея "Жизнь". Она доступна на моём канале GitHub в разделе PyGames.
О реализации
Игры была написана в качестве практики освоения ООП и стандартной библиотеки Tkinter.
Изначально я написал игру, где в качестве ячеек использовались кнопки-buttons. Однако, размер кнопок нельзя было уменьшить до нужного мне размера, когда я хотел большое поле. Тогда я воспользовался реализацией, предложенной на habrahabr, через прямоугольники. Там другой принцип реагирования - по позиционированию мыши.
В реализация доступно два режима игры: на ограниченном прямоугольнике и на торе. Можно выбрать одну из 5 скоростей появления поколений.
Начальное поле может быть задано как вручную с помощью мыши (левый клик - добавить жизнь в клетку, правый - убить клетку), так и выбрана предустановленная комбинация: с помощью кнопки RANDOM можно задать случайное поле, а с помощью кнопки FIGURE выбрать одну из известных фигур игры.
Файлы игры: main.py, mylife_oop3.py
Что получилось в итоге - представлено на сайте GitHub.
Показаны сообщения с ярлыком OOP. Показать все сообщения
Показаны сообщения с ярлыком OOP. Показать все сообщения
понедельник, 21 сентября 2015 г.
четверг, 13 ноября 2014 г.
Исследовательский конструктор. Часть IV. Основы ООП
ABSTRACT
После долгого перерыва возобновляю выкладывать части исследовательского конструктора. Читатель, впрочем, может извинить меня, ведь я на ходу перерабатывал накатанную схему и по сути создавал новый вариант исследовательского конструктора. Я отказался от идеи папок с модулями и перешёл к пакетам, о которых ещё напишу, и Объектно-ориентированному (ООП) стилю. Оказалось, что это удобнее и практичнее наполнять класс новыми функциями, чем копить разноформатные функции в отдельных модулях. А главное, что всё это - и модули, и классы, и пакеты - ужасно похожие вещи. И иногда глядя просто на код невозможно понять, что это - пакет или метод класса. Так что начнём потихонечку разбираться в ООП.
Этот пост сделан в виде ipython notebook.
Как выкладывать ноутбуки на личном канале GitHub
Подписаться на:
Сообщения (Atom)
Как перевести UV в направление и скорость ветра? How to convert wind UV-components to direction and velocity?
Всё просто. def uv2dir(u, v): ''' Источник: https://github.com/blaylockbk/Ute_WRF/blob/master/functions/wind_calc...
-
Цель: Есть файл в формате netCDF. Хочется получить карту какой-либо гидрометеорологической величины за какой-нибудь временной срез в Window...
-
Задача: Поставить компилятор fortran-а на компьютер/ноутбук с операционной системой Windows7 (на 64 разрядную) Методы решения: Geany, CVF...
-
Цель: Освоить новые возможности GrADS для анализа гидрометеорологической информации Средства: GrADS Рассмотрим GRIB-файл "model...