Последнее время я занимаюсь изучением азбуки Морзе с помощью данной программы. Но она рассчитана на изучение кодов кириллических букв, что является неактуальным в современной радиосвязи (все используют латинский алфавит, кроме нашей доблестной армии).
Такая ситуация меня не устроила, и было принято решение написать программу для генерации звукового кода Морзе из некоторого текста с настройкой скорости и возможностью добавления кодов динамически. Решение получилось достаточно оригинальным и гибким (ИМХО, конечно же). И я решил поделиться программой с общественностью: возможно, она будет кому-то полезна или покажется интересной.
В качестве инструмента реализации идеи был выбран С++ в связке с Qt.
Пока весь мир с замиранием ждёт 11-го выпуска СДСМ, посвящённого MPLS BGP L3VPN, я решил сделать вольный перевод неплохой статьи Джереми Стреча с Packetlife.net.
(Начало здесь.)
К 1962 году стало понятно, что p-n переход может быть использован как лазер. Но при этом он потреблял огромный ток, и поэтому мог работать только в жидком азоте – иначе быстро наступал перегрев. Сегодня мы узнаем, как лазеры научились работать при комнатной температуре и как далеко они ушли от своих прародителей.
Недавно прочитал статью про игру Жизнь, и вспомнилось мне, что я в мае этого года начинал писать свой проект подобной направленности. Только вот интерес к нему за рутиной работы быстро угас, хотя написано было немало. И сейчас, вдохновлённый этой статьёй, я взял этот проект с пыльной полки и добавил несколько фич, о которых расскажу далее.
Вкратце, мой вариант имеет следующие условия:
жизнь развивается на поле 256*256 клеток;
на поле могут размещаться объекты трёх типов: живность, пища(назовем её травой) и камень (препятствие);
живность представляет собой фактически модифицированную машину Тьюринга, если точнее, то это больше похоже на Автомат с магазинной памятью, т.е. живность является «процессором», выполняющим свой «генетический» код;
живность имеет возможность совершать определенные действия (двигаться, есть, размножаться (пока только клонированием, мутации будут со дня на день, скрещивание в перспективе)), отдавая соответствующие команды;
наступив на траву, живность её вытаптывает;
для поглощения еды надо дать команду «Ешь в этом направлении!», находясь в соседней клетке;
живность имеет память, что позволяет строить циклы, условия и т.п., т.е. полная по Тьюрингу (поправьте меня, если не прав!), объем памяти неограничен;
живность может складывать и вычитать значения в уме, разрядность ограничена одним байтом;
существует возможность реализации генетических алгоритмов (пока не реализовано).
Сегодня я хочу показать, как реализовать всеми любимую игру Game Of Life Джона Конвея на Qt. Писать будем на виджетах. На примере этого проекта я покажу как работать с QPainter, несколькими классами из core, лэйаутами и вообще с графикой в Qt Widgets. Всем кому интересна эта игра или работа с графикой на Qt, прошу читать дальше. Вообще, статья ориентирована на новичков, но и продвинутым ребятам тоже будет что прочитать:).
Кому лень — вот тут лежит исходничег проекта. Можно собирать сразу, зависимости на core, gui.