Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Регистрируясь, я даю согласие на обработку данных и условия почтовых рассылок.
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр Играйте в Длинные и Короткие нарды онлайн! Наслаждайтесь классической настольной игрой с простыми правилами и захватывающей стратегией. Бросайте кубики, перемещайте шашки и обыгрывайте своего соперника. Играйте прямо сейчас бесплатно!

Нарды Длинные и Короткие онлайн

Настольные, Для двоих, Пошаговая

Играть

Топ прошлой недели

  • solenakrivetka solenakrivetka 7 постов
  • Animalrescueed Animalrescueed 53 поста
  • ia.panorama ia.panorama 12 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая «Подписаться», я даю согласие на обработку данных и условия почтовых рассылок.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Маркет Промокоды Пятерочка Промокоды Aroma Butik Промокоды Яндекс Путешествия Промокоды Яндекс Еда Постила Футбол сегодня
0 просмотренных постов скрыто
d3dev
d3dev
ИТ-проекты пикабушников

Наконец-то вышла вторая версия моей игры!⁠⁠

8 лет назад
По какой-то неведомой для меня причине модератор выпилил первый пост. На всякий случай добавлю: это не реклама, это не коммерческий продукт и я не получаю за это деньги, более того, игра с открытым исходным кодом.


Вы когда-нибудь играли в сапёра с полем 1000x1000? Теперь вы можете! Но не только это отличает мою игру от классического сапёра из Windows. Основная фишка - использование разных оттенков цвета(по дефолту зелёного) для определения количества мин вокруг ячейки, светло зелёный - 1 мина, чуть темнее - 2 и всё в таком духе. Пару скриншотов для понимания:

Зелёное - это ячейки, вокруг которых мины, красное - отмеченные ячейки, на второй картинке они размером в 1 пиксель.


Скачать игру и почитать о ней чуть подробнее можно тут


https://devalone.github.io/CrazyMinesweeper/


P.S. Надеюсь найдётся азиат, который пройдёт игру с полем 1000x1000 :) У меня пока не получилось...

Показать полностью 2
[моё] Игры Проект C++ Qt
19
10
loginivsetakoe

Моя домашняя библиотека⁠⁠

8 лет назад

Решил поделиться (естественно ради славы и плюсиков) небольшой историей о приложении (и самим приложением) которое я написал для себя в качестве домашней электронной библиотеки.


В бытность студентом-математиком так сложилось, что я читал много книг по учебе. Ну, точнее не все конечно читал, некоторые книжники я так и не открывал, но хранил на всякий случай. Что-то дает преподаватель, что-то находишь для семинаров и курсовых, что-то интересно само по себе. Книги естественно почти все были электронными, хорошую книгу по математике купить в магазине почти не реально, да и зачем, если есть цифровая копия (разве что поддержать давно умершего автора).


Книжки собирались на компьютере, флешках, почте и может еще где, в общем, довольно скоро оказалось, что проще заново скачать книгу, чем найти, где она у тебя хранится. И тогда я решил написать для себя программку, которая станет чем-то вроде домашней электронной библиотеки. Тогда я работал в университете и по работе немного изучал java, так что особо не сомневался в том, на каком языке писать.


Первая версия была прям скажем, неказиста, но мне как студенту вполне хватало. Можно было хранить книги, заполнять о них необходимые сведения и что важно составлять библиографический список. Список литературы для меня был чем-то вроде спасения при написании статей, рефератов и т.д. Так как запомнить, как он оформляется, я не мог, а бумажки с описанием оформления постоянно терял. Были там и другие полезные функции (сортировки по разным категориям и поиск). В общем, приложение не было перегружено функционалом (удобная формулировка, когда не хочешь или не можешь что-то реализовать).

Но как я уже написал, мне как студенту этого вполне хватало. Так бы я и забил на это дело, если бы по собственной глупости не пошел в аспирантуру. Литературы стало больше, статей и прочей писанины тоже намного больше. И я решил довести до ума свою библиотеку.

Я вооружился языком C++, библиотеками Qt и начал все с начала, кто-то скажет, что это не очень умно и будет прав.


Не буду вдаваться в подробности разработки, функционал приложения был понятен (хранить, искать, открывать, формировать список литературы) из того немного, что было решено добавить отмечу только фильтры для книг, возможность хранить сразу несколько форматов оформления списка литературы и возможность выгружать/загружать книги. Основной упор был сделан на удобство пользования и немножечко на красоту (все-таки приятнее работать не с угрюмым кривым кусочком какахи). Так как с чувством прекрасного у меня бывают перебои, то с оформлением мне помогала жена (а то еще увидит, что не упомянул и обидится).


На мой взгляд, получилось неплохо.

Аспирантура показала, что математик из меня так себе, но приложение получилось неплохим и если кому-то интересно, то вот ссылка на него: https://yadi.sk/d/TSNUSK5A3Hvmsm

Показать полностью 4
[моё] Приложение Java Qt Библиотека Длиннопост
6
20
razdvaj

Литература по программированию и около того⁠⁠

8 лет назад

Всем привет, второй пост, выложу список литературы по программированию (конкретно по С++ и некотором около технологиям и фреймворкам). Не очень люблю всякие онлайн курсы, ибо как мне кажется довольно поверхностное повествование. 


С++ - прекрасный язык, но в голом виде мало кому нужен, как правило необходимо знание какого-нибудь GUI/Game engine фреймворка, БД, сети, работа с видео-кодеками. Крайне не рекомендуют изучать С++ с изучения Си. Литература:

1) cplusplus.com - справочник по языку, так же можно найти статьи по WinAPI итд.

1) Эккель "Философия С++ Vol 1&2" - вводная книга по языку, правда старая и не включает стандарт С++11(новый стандарт)

2) Липпман "С++ базовый курс" - вводная книга по языку, включает С++11.

3) Джосаттис  "Стандартная библиотека" (2ое издание по стандарту С++11) - можно использовать как справочник.

4) Серия книг Герба Саттера "Решения сложных задач на С++" "Решение новых сложных задач на С++" с Александреску "Стандарты программирования С++"  - Интересные вещи разбираются, читать выборочно т.к. например умные указатели(smart pointers, а разбираемый auto_ptr - считается depricated) уже вошли в стандарт С++11.

5) Серия книг Скотта Мейерса "Эффективный С++" примерно тоже самое серия Саттера, единственное у Саттера нет книги по новому стандарту, у Мейерса есть - шикарная штука.

6) Уильямс "Парарллельное программирование на С++ в действии" - многопоточность стала поддерживаться на уровне стандарта(раньше была реализация от сторонних вендоров) и чтиво по мьютексам, атомарным переперченным.

7) Стивенc "UNIX разработка сетевых приложений" "Unix взаимодействие процессов" - первая книга по сетям, подробный разбор как работают такие протоколы как TCP UDP написание своих клиентов и серверов, вторая - по IPC. Книга по UNIX, подойдут так и для Windows, в реальных проектах не думаю что придется писать свой клиент с нуля.

8) Стивенс "Unix. Профессиональное программирование" - хорошая(лучшая?) книга по POSIX.

9) Рихтер "Windows для профессионалов" - WinAPI

10) Бланшет "QT 4: программирование GUI на С++" - хорошая вводная хоть по Qt хоть и по 4 версии, Саммерфильд "Qt Профессиональное программирование" - в догонку, бесплатная книга по QML (необходимы базовые знания JS), самая лучшая онлайн документация с кучей примеров, готовых решений, уроков на ютубе

11) "Примеры объектно-ориентированного проектирования" (Gang of Four) или Александреску "Современное проектирование на С++" - книги по паттернам, вторая чуть сложнее

12) Седжвик "Алгоритмы на С++" - жестокое чтиво по алгоритмам графам и все такое, с доказательством с задачами.

13) ::boost - открытая библиотека по С++, можно сказать пре-стандарт


C++11 - стандарт 11 года, который внес много нововведений, С++14 - текущий стандарт, по сути доработка над С+11, С++17 - будущий стандарт.


PS Старался охватить основные темы и привести лучших авторов(хоть все книги есть на русском - рекомендую оригинал). Не стал включать книги по смежным темам - SQL, HTML, JS итд.

Почему включил Qt, а XXX не включил?- имхо Qt самый востребованный фреймворк по С++.


PPS Для работы возможно потребуется знание таких технологий как git, svn, tfs, cmake, qmake, qbs

Показать полностью
Программирование Литература C++ Qt Текст
31
19
QwertyMax

Интерактивные курсы по Qt/C++⁠⁠

9 лет назад

Доброго времени суток!

Данный пост немного рекламный, но создан не выгоды ради, а просвещения для.

Меня зовут Максим и недавно я начал проводить еженедельные онлайн-лекции по программированию на Qt/C++. Этот курс рассчитан на аудиторию любого уровня подготовки. Цель курсов - обучение ради самого обучения, ибо мне это нравится.


Немного о себе.

Увлекаюсь программированием с 17 лет, поступил в Таганрогский Технологический Институт (ныне Инженерно-технологическая академия ЮФУ) на Математика-Программиста. На последнем курсе организовал собственный факультатив по системному программированию в Linux и кроссплатформенному программированию на Qt/C++.

Работаю по специальности с 3го курса. Со временем понял, что многие студенты не получают в универе достаточных знаний по определённым технологиям. Например, никто в универе не уделял внимания системам контроля версий, хотя ни один современный процесс разработки без них не обходится. Вот так родилось желание делиться знаниями и опытом с теми, кто хочет узнать больше, чем на лабах и получить знаниям практическое применение.


Окончив учёбу, сменил город проживания, но желание делиться знаниями не пропало. В итоге родилась идея: собирать 2 раза в неделю онлайн-конференции, записывать их и выкладывать на YouTube. Предложил своим бывшим ученикам, нашёл новых и вот у нас небольшая компания. Мы договорились, что будем углубляться в Qt/C++, но начнём с азов и сторонние темы тоже не будем обходить стороной, если они будут интересны.


Формат занятий такой: перед каждым четвергом и воскресеньем я в своей группе VK выкладываю ссылку на мероприятие - Hangouts-встречу. В ней указывается время начала онлайн-трансляции. Непосредственно перед началом в той же группе я выкладываю прямую ссылку, по которой можно сразу попасть в эфир. Там я в прямом эфире пишу код, и всячески комментирую этот процесс, отвечаю на вопросы. Обычно тема встречи известна заранее, но я приветствую, когда мне задают вопросы в эфире, даже если нужно вспомнить что-то уже пройденное, даже если не по теме. То есть, моя цель - чтобы всем было максимально понятно! Учитывая ошибку осведомлённого, я признаю, что могу слишком спешить с объяснением некоторых аспектов и готов, что меня попросят объяснить что-то подробней.


Теперь касательно самой тематики курсов.

Про язык C++ слышали наверняка многие. Он заслуженно имеет репутацию не только как чуть ли не самого быстрого языка высокого уровня, но и как одного из самых сложных и многогранных. Его возможности практически не ограничены, если учесть, что на нём пишут реализации интерпретаторов других языков (например JavaScript'а). Но "с большой силой приходит и большая ответственность", и именно из-за больших возможностей языка родилась шутка про простреленную ногу. Фактически, на этом языке написана большая часть ПО, которым мы пользуемся.

А вот Qt - это библиотека. Проще говоря - набор готовых файлов кода, позволяющих создавать прикладные и мобильны приложения, не зависящие от платформы. То есть, вы пишите код для приложения под Windows, а можете почти не меняя этот код скомпилировать это же приложение и под Linux, и даже под Android и iOS. При этом во всех случаях стиль приложения будет выглядеть как обычное для этой системы. Но и не составит труда сделать его одинаковым на всех платформах.


За подробностями - ищите в описании к видео на канале. Вот запись первого занятия, где я показываю возможности Qt. Оно получилось немного неформальное, но у нас все очень дружелюбные.

Спасибо за внимание! Надеюсь увидеть новых участников на следующих встречах! =)

Показать полностью 1
[моё] Qt C++ Программирование Курсы Видео
18
5
MoreMadScientist
MoreMadScientist

Matlab 16a⁠⁠

9 лет назад

Несколько недель назад вышел Matlab 16a. Он теперь только 64-битный.

Роскажу у новых вкусностях, которые порадуют каждого студента.

Теперь тут можно сделать диплом, отчёт, веб-страницу за пару часов:

Также создание GUI стало похожим на Qt

Ждём появления на торрентах страны=)

Показать полностью 4
Matlab Обработка данных Qt Гифка Длиннопост
10
3
person5421

Эмулятор машины Тьюринга STuring v3.0 Beta 1 (Новая версия!!!)⁠⁠

9 лет назад

Хотел бы порадовать студентов новой версией программы-эмулятора Машины Тьюринга. Программа научилась обрабатывать ошибки - теперь вам будет еще проще готовить лабы :)


В этой версии появился полноценный обработчик ошибок. Он обрабатывает недопустимые состояния, невозможные команды, проверку числа входных параметров и другие вещи. Обработчик ошибок является последовательным: вы не будете видеть все ошибки сразу. После того, когда вы исправите самые грубые ошибки, вы сможете увидеть менее значительные (если, конечно, они есть).



В разработке:

- Перекомпоновка классов программы (разделение интерфейса и движка) - небольшой рефакторинг будет выполнен до выхода релизной 3.0. Перекомпоновка класса UI (и не только) будет в 4-й версии


- Улучшение редактора кода - выполнено. Обновление редактора, возможно, в 4-й версии;


- Пошаговое выполнение МТ - частично выполнено (будет в следующей бете);


- Открытие/Сохранение файлов STuring (файл с программой и данными МТ (.stur)) - в разработке (скорее всего, в следующей бете);


- Поддержка истории версий программы МТ (в файле .stur) - возможность посчитали ненужной;


- Модуль обработки ошибок программы МТ (предупреждения о дублированных командах, несуществующих состояний и переходов) - выполнено;


- Переписывание интерфейса на QML (в 4-й версии);


- Подсветка команд, выполняемых МТ в реальном времени - в 4-й версии;


- Добавление многострочных комментариев (/* */) - в разработке;


- Добавление верхнего меню (для сохранения/открытия файлов и меню "О Программе") - почти выполнено.


И, конечно же, картинки:

Показать полностью 7
[моё] Студенты Программирование Qt Длиннопост Машина тьюринга
7
166
DELETED

Пишем игру "Жизнь" под Android используя C++ и Qt за час.⁠⁠

9 лет назад

Всем привет! Недавно видел на пабликах типа ТП посты мол "делаем игру жизнь на java за час", "делаем игру жизнь на python за час", вот решил сделать пост, делаем игру жизнь под андроид используя C++ и библиотеки Qt за час.

Важно отметить что игра занимает ~100 строчек кода(исключая h файлы, символы переноса и т.п.), а также то, что созданная игра будет работать и под винду, и под андроид, и под линукс, и под ios и под mac os x. 

И так начнем. Правила игры жизнь я думаю вы знаете. Есть поле с клетками. Клетка может быть живая или мертвая. По прошествии хода, если вокруг мертвой клетки есть 3 живых, она становится живой. Если вокруг живой клетки будет 1 или 0 живых, то она становится мертвой, также она становится мертвой если вокруг нее более 3 живых клеток. Впринципе все, подробнее вы можете прочесть на википедии.

И так что у нас должно быть:

1. GUI. 

Поле с N*M клеток, кнопка "Новая игра", кнопка "Начать эволюцию". Поле забито прямогуольниками, изначально все пустые. При нажатии на клетку она окрашивается в черный или белый цвет, в зависимости от того какой цвет был там раньше.

2. Логика. Мы должны иметь двумерный массив(используем QT'шный вектор), в котором 0 отмечена мертвая клетка а единицей живая клетка. У меня была цель создать игру примерно за час, и поэтому этот 0 и 1 соответствуют черному и белому цветам многоугольников. Соответственно у нас есть массив с указателями на наши прямоугольники. Это не хорошо, ибо логика должна быть отделена от GUI, но для уменьшения размера кода - решил сделать так.

Должны быть реализованы функции подсчета соседей для каждой из клеток, зная положение клетки по X и Y. После каждого хода, мы рассчитываем количество соседей для каждой из клеток, и в зависимости от состояния клетки и количества её соседей добавляем клетку в массив(вектор), для изменения её состояния. Если за 1 ход не было добавлено ни 1 клетки, то игра заканчивается, выводим пользователю количество ходов


Если вы не знакомы с наследованием и библиотекой STD в C++, то вы являетесь новичком в C++ и возможно код покажется вам запутанным. К сожалению не хотелось бы писать про все это в этом посте, ибо для новичков информации в интернете - тонны, а переписывать еще раз это - просто не зачем. Если вы с этим знакомы, но незнакомы с сигнально-слотовой системой Qt тоже порекомендую прочитать over9000 материалов по этой теме. Если потребуются пояснения я отвечу в комментах.

И так, как выглядит GUI:

Скачиваем Qt Creator с официального сайта Qt(qt.io), выбираем бесплатный вариант для GPL приложений. Запускаемся, создаем новый проект, используя QWidget, с графической формой

Переходим к созданию. Переходим в режим дизайн и добавляем на форму "Graphics View" и 2 Push Button. Примерно вот так как на следующей картинке, и кликая правой кнопкой мыши по форме выбираем (Скомпоновать по сетке)

GUI готово! Теперь нам нужно перейти к непосредственно программированию.

QGraphicsView - это виджет, который может отображать графические элементы. QGraphicsView отображает элементы, который расположены на QScene. На QScene мы размешаем элементы в декартовой системе координат, а с помощью QGrahicsView мы её отображаем(можно поворачивать, увеличивать масштаб и т.п.).

Элементы бывают разных типов. Есть простые - QGraphicsRectItem - это многоугольник, который к слову нам и понадобиться. Есть QGraphicsPixMapItem который отобразит нам изображение. Есть  QGraphicsLineItem - это линия. И другие. 


И так, первая задача. Разместить на сцене N*M QGraphicsRectItem'ов - наших клеток. Мертвой клеткой будет считаться клетка, с Kletka->brush().color() == Qt::white живой Kletka-> brush().color() == Qt::black. И запихнуть все указатели на QGraphicsRectItem в отдельный двумерный вектор, чтобы мы могли с ними работать.

Однако, для этой задачи нам не подойдет "чистый" QGraphicsRectItem. Нужно будет создать класс наследник, и в нем реализовать свою обработку нажатия на клетку. Ведь в самом начале игры нам нужно будет выставить первичные мертвые и живые клетки на поле.

Т.е. по нажатию на наш прямоугольник, он должен окрашиваться в требуемый цвет. А у чистого QGraphicsRectItem обработка данного события пустая.

Создадим класс LifeRect основанный на QGraphicsRectItrem., и переопределим в нем mousePressEvent

Теперь займемся реализацией. Конструктор будет использовать конструктор с такими же параметрами как у QGraphicsRectItem(позиция по x, позиция по y, широта, высота, родитель). В событии mousePressEvent будет вызываться функция changeColor.

Реализация liferect.c

И так, переходим дальше. Работаем с нашим виджетом(формой) -  widget.c. В этом классе реализуется логика игры.

Что нам необходимо?

1. Таймер. Каждые 0.1 секунды будет происходить 1 ход.

2. Слоты нажатия на кнопку "Старт" и "Новая игра" соответственно.

3. Размеры поля - X и Y клеток. Принимаются через конструктор.

4. Переменная для хранения количества итераций(для вывода при завершении игры)

5. Двумерный вектор(используется QVector, а не std::vector) который хранит указатели на созданные нами LifeRect'ы. К его элементам мы будем обращаться, и будем представлять живое и мертвое состояние по его цвету, как я уже и писал ранее. Если среди читателей будут новички C++ в комментах могу помочь. Просто представляйте что это массив.

6. Функция для новой игры(обнуление поля, обнуления количества итераций).

7. Функция подсчета живых соседей рядом.


И так, начнем. Собственно вот заголовочный файл:

В конструкторе присвоим начальные данные(x,y из входных, 0 итераций, укажем то что сцена пока-что пустая, родительский элемент отсутствует. Проинициализируем таймер, но запускать его не будем

Создать слот on_pushButton нужно нажав правой кнопкой по кнопке на форме, выбрать перейти к слоту, и выбрать сигнал clicked()

Дальше - интереснее. И так, по нажатию на кнопку новая игра, мы должны нарисовать графическую сцену, с X*Y мертвыми многоугольниками, и наполнить двумерный вектор указателей на многоугольники ими же. Чтобы потом,когда игрок заполнит поле и нажмет на  кнопку "СТАРТ" запускается таймер, по каждому тику таймера обходить этот вектор, вычислить количество живых соседей каждой клетки, и перерисовать требуемые.

Постарался максимально прокомментировать код. 

К слову говоря, позиции осей X и Y в графической сцене таковы:

И так, мы прорисовали свои элементы, и уже можем потыкать и поменять их цвета, но пока-что не можем ничего запустить. Нужно реализовать функцию обработки каждого хода. И написать что по 2 кнопке мы запускаем таймер.

Осталось лишь только реализовать функцию подсчета соседей. Думаю, в ней проблем не будет. Мы просто смотрим на цвета наших 8 соседей(если вылезли за границы то перемещаемся в начало или конец соответственно) и выдаем на выход их количество

Все готово! Запускаем и играем на Linux, Windows или вашем Mac.

Что потребуется(если вкратце) для запуска на Android?

1. Пакеты Android SDK и Android NDK(для C++).

2. Устройство андроид или AVD.

3. Apache Ant.

Вы должны сконфигурировать ваш Qt Creator, в таком виде(ваши пути), и добавить в проектах сборку Android. Потребуется скачать в AVD драйвера USB, и API требуемых версий Android. Затем уже попробовать установить приложение на телефон/эмулятор. Я могу помочь, или привести ссылки где это подробно разбирается в комментах

Пробуем на стареньком LG Optimus One с Android 2.3.3. - все работает как часы и на старых андроидфонах. К слову говоря можете попробывать как все выглядет в реальности(перед созданием) по ссылке - https://play.google.com/store/apps/details?id=com.mousemove.... (без рекламы и прочего, как собрал так и залил)

Исходники - https://cloud.mail.ru/public/AsLq/4y4hufCQ7

Показать полностью 14
[моё] Программирование C++ Курсы программирования Qt Длиннопост
85
Junos
Junos

Как я программирую на Qt⁠⁠

10 лет назад
Как я программирую на Qt
Показать полностью 1
[моё] Программирование Qt Java Длиннопост
35
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Маркет Промокоды Пятерочка Промокоды Aroma Butik Промокоды Яндекс Путешествия Промокоды Яндекс Еда Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии