Рубрика «C++»

Разработка игры на С++, Qt

game_screens

Написал ремейк небольшой логической игрушки — «Полный квадрат». Код показался мне достаточно интересным чтобы описать на блоге. По сюжету игры, ёжик перемещается по лабиринту из облаков. Ходить ёж умеет только по вертикали и горизонтали, а начав движение идет до тех пор, пока не упрется в пустоту (пройденные облака исчезают), край экрана или грозовую тучу. Необходимо …

Способы обработки XML в Qt — Stream, SAX, DOM

Screenshot_of_the_schedule_currency

Многие сталкивались с XML-документами и знают что это такое, ведь стандарт рассматриваемого языка разметки опубликован в далеком 1998 году. Язык XML используется во многих областях, но чаще всего для передачи информации через Internet — не случайно стандарт разработан Консорциумом Всемирной паутины (W3C) [1]. Очень много информации в этом мире записано и передается в формате XML, …

Многопоточный сервер Qt. Пул потоков. Паттерн Decorator

рис. 3 decorator implementation

В предыдущей статье [1] была рассмотрена работа с сокетами в библиотеке Qt. Наш сервер сетевого чата работал в одном потоке. Задача текущей статьи — описание многопоточного сервера. Однако, если сервер просто принимает сообщение и передает его всем подключенным клиентам — распараллеливать нечего и потоки не особо нужны. В связи с этим, мы немного усложним задачу …

Работа с сетью в Qt. Сокеты. Паттерн Adapter

рис. 5 диаграмма классов сетевого чата

В статье показана работа с сетью на примере очень простого сетевого чата, а также описан никак не связанный с сетью шаблон проектирования адаптер (adapter, wrapper, обертка). Несмотря на то, что наш чат максимально прост (он не позволяет передавать файлы и оффлайн-сообщения, не хранит историю, передает сообщения не шифрованными и т.д.), мы все же отделим часть, …

Cистема плагинов Qt, построение графиков и Qt Script

рис. 1 снимок окна программы

Очень обзорная статья, описывает вершки некоторых интересных элементов библиотеки Qt. Речь идет про: библиотеку Qwt, позволяющую строить графики, гистограммы, круговые (и другие) диаграммы; систему плагинов библиотеки Qt, предназначенную для предоставления возможности модульного расширения программы; Qt Script — язык, позволяющий, как и система плагинов, дополнять программу, но не требующий компиляции (плагина). Статья не претендует на полноту …

Параллельные задачи (tasks) OpenMP

рис. 4 диграммы загрузки процессора. быстрая сортировка. OpenMP

В предыдущей статье был рассмотрен параллельный цикл, однако, в OpenMP есть и другие средства распараллеливания. В настоящей статье на примере быстрой сортировки рассмотрены параллельные задачи (tasks). Затем, описаны параллельные задачи OpenMP. В конце статьи показано распараллеливание быстрой сортировки с использованием механизма задач OpenMP. Быстрая сортировка на C++ Параллельные задачи OpenMP Параллельная быстрая сортировка средствами OpenMP

Библиотека OpenMP. Параллельный цикл

Статья ориентирована на тех, кто не знаком с библиотекой OpenMP, но хотел бы познакомиться. OpenMP — не просто библиотека параллельного программирования, но и стандарт, официально поддерживаемый для языков Си, C++ и Fortran (а неофициально и для других языков, Free Pascal, например [1]). Работает OpenMP только на архитектурах с общей памятью. Библиотека OpenMP задумана так, что …

Шаблон проектирования Prototype. Примеры

рис. 3 диаграмма классов после имплементации шаблона "Прототип"

Напомню, что в прошлый раз мы написали программу, которая содержала тулбар с геометрическими фигурами и поле, на которое эти фигуры добавлялись. Для каждой фигуры был определен отдельный класс, поэтому для добавления нового типа фигуры требовалось бы перекомпилировать программу. Шаблон проектирования «Прототип» решает эту проблему, позволяя порождать новые типы объектов во время выполнения программы. Шаблон проектирования …

Работа с графической сценой [Qt]

рис. 1 снимок окна программы-примера

В библиотеку Qt включены специальные классы для удобной и эффективной работы с большим количеством двумерных графических объектов. Сегодня мы рассмотрим не все (остальные потом), но основные — QGraphicsScene, QGraphicsView, QGraphicsItem. Использовать эти классы удобно если в Вашей программе происходит хоть какая-то работа с графическими объектами, и особенно, если таких объектов много, требуется обнаруживать их пересечения/столкновения, …

Паттерн шаблонный метод (template method)

рис. 2 шаблон проектирования template method

Template method представляет собой поведенческий шаблон проектирования. Вспоминать про него стоит всякий раз, когда в вашем проекте появляется дублирующийся код (именно с таким, плохим кодом он иногда может справиться). Суть шаблонного метода заключается в том, что алгоритм поведения объектов выносится в базовый класс, а реализация отдельных шагов падает на плечи классов-наследников. Рассмотрим шаблон проектирования «template …