Показаны сообщения с ярлыком OOP. Показать все сообщения
Показаны сообщения с ярлыком OOP. Показать все сообщения

понедельник, 21 сентября 2015 г.

Реализация игры "Жизнь"

Хочу поделиться своей реализацией игры Джона Конвея "Жизнь". Она доступна на моём канале GitHub в разделе PyGames.

О реализации

Игры была написана в качестве практики освоения ООП и стандартной библиотеки Tkinter.

Изначально я написал игру, где в качестве ячеек использовались кнопки-buttons. Однако, размер кнопок нельзя было уменьшить до нужного мне размера, когда я хотел большое поле. Тогда я воспользовался реализацией, предложенной на habrahabr, через прямоугольники. Там другой принцип реагирования - по позиционированию мыши.
В реализация  доступно два режима игры: на ограниченном прямоугольнике и на торе. Можно выбрать одну из 5 скоростей появления поколений.
Начальное поле может быть задано как вручную с помощью мыши (левый клик - добавить жизнь в клетку, правый - убить клетку), так и выбрана предустановленная комбинация: с помощью кнопки RANDOM можно задать случайное поле, а с помощью кнопки FIGURE выбрать одну из известных фигур игры.

Файлы игры: main.py, mylife_oop3.py

Что получилось в итоге - представлено на сайте GitHub.

четверг, 13 ноября 2014 г.

Исследовательский конструктор. Часть IV. Основы ООП

ABSTRACT

После долгого перерыва возобновляю выкладывать части исследовательского конструктора. Читатель, впрочем, может извинить меня, ведь я на ходу перерабатывал накатанную схему и по сути создавал новый вариант исследовательского конструктора. Я отказался от идеи папок с модулями и перешёл к пакетам, о которых ещё напишу, и Объектно-ориентированному (ООП) стилю. Оказалось, что это удобнее и практичнее наполнять класс новыми функциями, чем копить разноформатные функции в отдельных модулях. А главное, что всё это - и модули, и классы, и пакеты - ужасно похожие вещи. И иногда глядя просто на код невозможно понять, что это - пакет или метод класса. Так что начнём потихонечку разбираться в ООП.

Этот пост сделан в виде ipython notebook

Как выкладывать ноутбуки на личном канале GitHub


Как перевести 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...