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

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

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

О реализации

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

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

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

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

воскресенье, 20 сентября 2015 г.

Маленкий шажок для человека

Сегодня, 20 сентября 2015 года, тихо и незаметно была размещена реклама моего учебника на сайте "Лаборатория юного линуксоида". Спасибо основателю проекта Светлане Шапошниковой за помощь в распространении! =)

вторник, 1 сентября 2015 г.

Keep calm and code python

Введение

Когда мне задают вопрос "Чем python лучше Matlab(c), да и лучше ли?", то я, признаюсь, прихожу в некоторое замешательство.
У меня с Matlab(c) не сложилось, весь мой личный опыт работы с ним окрашен в тёмные тона. Он жутко долго устанавливается, он нелегальный, он подвисает и тормозит, куча окошек, постоянные вектора-столбцы. Вдобавок он не мог прочитать крупный файл в netcdf  формате, и картографический пакет мне скачать с torrents также не удалось.
А с python у меня сложилось так, что я бросил программировать на фортране, удалил grads, легко перехожу с Linux на Windows, читаю, анализирую и визуализирую netcdf файлы в одной среде и чувствую себя великолепно!
Поэтому мне трудно дать объективный обзор, сравнить беспристрастно "слона" с "китом". Но я попытаюсь и предлагаю следующую схему: свойство и краткое его освещение в обеих системах. Поехали.


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