Russian Qt Forum
Март 29, 2024, 11:05
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Программирование
>
Разработка игр
>
Программа для создания кроссвордов[обсуждение исходника]
Страниц: [
1
]
2
3
4
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Программа для создания кроссвордов[обсуждение исходника] (Прочитано 48415 раз)
xwicked
Гость
Программа для создания кроссвордов[обсуждение исходника]
«
:
Июнь 02, 2011, 12:03 »
Здравствуйте! Целью данной темы было желание поделиться с общественностью своими наработками. Вот
исходник
- пока только прокомментировал текст исходного кода просмотрщика кроссвордов. Создатель кроссвордов будет чуть позже. Жду комментариев.
Также эта игра может быть использована новичкам как пример рабочей программы на Qt(C++).
Проект OpenSource под GPL. Есть и на
SourceForge.net
- присоединяйтесь!
«
Последнее редактирование: Август 02, 2011, 08:47 от xwicked
»
Записан
serega-5508
Гость
Re: Программа для создания кроссвордов[обсуждение исходника]
«
Ответ #1 :
Июнь 02, 2011, 16:02 »
подключи к поекту. Логин на sourceForge - serega-5508. Поучавствую в разработке. Исходник пока не смотрел, комменты потом.
Записан
xwicked
Гость
Re: Программа для создания кроссвордов[обсуждение исходника]
«
Ответ #2 :
Июнь 02, 2011, 16:20 »
Цитата: serega-5508 от Июнь 02, 2011, 16:02
подключи к поекту. Логин на sourceForge - serega-5508. Поучавствую в разработке. Исходник пока не смотрел, комменты потом.
Предполагаю, что лучше будет сначала посмотреть на программу, исходник, высказать хотя бы пару идей по поводу дальнейшего её совершенствования - потом подключу на sf.
ЗЫ: Это первая моя программа на C++ и на Qt тоже - мне сначала будет интересно не комом ли мой первый код получился. Комментариев там немного.
Записан
xwicked
Гость
Re: Программа для создания кроссвордов[обсуждение исходника]
«
Ответ #3 :
Июнь 13, 2011, 20:48 »
Продолжение: создатель кроссвордов -
исходник
. Второй проект на
SourceForge.net
.
Дам ещё ссылки на windows-версии, чтобы могли также остальные посмотреть на них:
создание
,
отгадывание
.
Сетка кроссворда представлена обычной таблицей TableCrosswordEdit(QTableWidget), слова загружаются в список слов ListWord(QStringList), толкования(вопросы) находятся в списке вопросов ListQuestions(QListWidget).
Структура файла - динамическая. Когда писал программы на Delphi - использовал статику - расходовалось лишнее дисковое пространство .
XWC: Пароль, количество строк, количество столбцов, ширина(высота) ячейки таблицы, шрифт, структура таблицы(w + 1(x) - белая ячейка, b + 1( c ) - чёрная), строка с данными CrosswordData(QString).
Код:
... if(file.open(QIODevice::WriteOnly))
{
QBrush BrushBlack = QBrush(Qt::black, Qt::SolidPattern);
QDataStream sfile(&file);
QChar sdata;
ushort idata;
if(State == false) sfile << strPassword;
sfile << TableCrosswordEdit->rowCount();
sfile << TableCrosswordEdit->columnCount();
sfile << TableCrosswordEdit->rowHeight(0);
sfile << TableCrosswordEdit->font();
for(int i = 0; i < TableCrosswordEdit->rowCount(); i++)
for(int j = 0; j < TableCrosswordEdit->columnCount(); j++)
{
if(TableCrosswordEdit->item(i,j)->background() == BrushBlack)
{
sdata = 'b';
idata = sdata.unicode() + 1;
sfile << idata;
}
else
{
sdata = 'w';
idata = sdata.unicode() + 1;
sfile << idata;
}
sdata = 0;
}
if(State == false) CrosswordToData(2);
if(State == false) sfile << CrosswordData;
file.close();
if(State == false) SaveStateCross = true;
else SaveStateTemplate = true;
} ...
CrosswordData: цикл по количеству слов(q, QChar(номер слова), QChar(координата строки в сетке), QChar(координата столбца в сетке), направление слова в сетке), цикл по количеству слов(W, QChar(номер слова), QChar(длина слова), само слово), цикл по количеству вопросов(Q, QChar(номер вопроса), QChar(длина вопроса), сам вопрос).
Код:
...
for(int i = 0; i < ListWord.count(); i++)
{
CrosswordData.append(QChar('W'));
CrosswordData.append(QChar(ushort(i)));
CurrentString.clear();
CurrentString.append(ListWord.at(i));
CrosswordData.append(QChar(ushort(CurrentString.length())));
CrosswordData.append(ListWord.at(i));
}
for(int i = 0; i < ListQuestions->count(); i++)
{
CrosswordData.append(QChar('Q'));
CrosswordData.append(QChar(ushort(i)));
CrosswordData.append(QChar(ushort(ListQuestions->item(i)->text().length())));
CrosswordData.append(ListQuestions->item(i)->text());
} ...
Шаблон кроссворда(XWTPL) таже структура, но без пароля и без CrosswordData.
Состояние сохранения(tmpcross): цикл по количеству слов(W, QChar(номер слова), QChar(длина слова), само слово).
Записан
xwicked
Гость
Профессиональный кроссворд 0.1.4
«
Ответ #4 :
Июнь 23, 2011, 12:16 »
Продолжаем знакомиться с исходником. Профессиональный кроссворд, версии 0.1.4 - это объединение двух предыдущих: создателя и отгадывателя, с последующей доработкой.
Изменения:
- Добавлена возможность автоматического создания сетки кроссворда(бета-версия).
- Добавлена возможность автоматического составления кроссворда(выбор слов из словаря). Первая бета-версия.
- Присутствуют обе возможности(создание и отгадывыание).
Отмечу, что выбор слов происходит в один проход и могут быть пропуски слов в сетке, после составления кроссворда.
Исходный код(0.1.4)
Отдельный проект на SourceForge.net -
Клёст-кроссворд
В Клёст-кроссворде нет возможности сохранять пароль, в то время как в Crossword editor эта возможность есть. Проекты были разделены для большего удобства разработки.
P.S. Профессиональный кроссворд 0.1.7 = Клёст-кроссворд 0.1.7
Записан
xwicked
Гость
Профессиональный кроссворд 0.1.5
«
Ответ #5 :
Июнь 28, 2011, 00:00 »
Следующая версия программы - 0.1.5.
Исходный код
.
Изменилась функция составления кроссворда, которая теперь позволяет заполнить всю сетку кроссворда словами.
Записан
xwicked
Гость
Профессиональный кроссворд[Final Edition] 0.1.6
«
Ответ #6 :
Июнь 29, 2011, 13:33 »
В новой версии 0.1.6 -
исходник
, добавлен экспорт кроссворда в изображения следующих растровых графических форматов: JPG, JPEG, BMP, TIFF, PNG, XPM, XBM, PPM + несколько других исправлений.
Записан
xwicked
Гость
Клёст-кроссворд 0.1.7
«
Ответ #7 :
Июль 10, 2011, 18:08 »
А вот и новая версия 0.1.7. Изучаем
код
.
Что изменено:
Цитировать
- Временное название "Профессиональный кроссворд" изменено на "Клёст-кроссворд".
- При вводе слова в кроссворд, производится проверка на количество введённых букв в поле "Введите слово".
- В свойствах таблицы кроссворда отключена возможность ввода букв, непосредственно в ячейку, минуя поле "Введите слово".
- Изменены цветовые стили некоторых компонентов.
- В строку состояния добавлен компонент, отображающий количество букв.
- Добавлена проверка состояния сохранения изменений, произведённые в кроссворде, при выходе, используя меню "Кроссворд->Выход".
Записан
xwicked
Гость
RPM-дистрибутивы ОС Linux, сборка программы
«
Ответ #8 :
Июль 16, 2011, 14:48 »
Если у кого-нибудь будет желание свою изменённую версию кроссворда далее распространять, то для этой цели я подготовил спекфайл для сборки программы в дистрибутиве ОС Linux, основанного на RPM-пакетах.
Также прошу найти в нём ошибки:
Цитировать
Summary: Qt program for professional creating and easy guessing the classic crossword puzzles.
Summary(ru): Qt программа для профессионального создания редактирования и лёгкого отгадывания классических кроссвордов
%define version 0.1.7
Group: Games/Puzzles
Name: klest-crossword
BuildRequires: gcc-c++, libqt4-sql-sqlite >= 4.4.3, libqtgui4 >= 4.4.3, libqt4-core >= 4.4.3
BuildArch: %ix86
Provides: klest-crossword
Release: alt1
Source: klest-crossword-%{version}.tar.gz
Url:
http://labfreetech.org/index_e.html
Version: %{version}
License: GPLv2
Packager: LabFreeTech.org
admin@labfreetech.org
%description
Qt program for creating and guessing the classic crossword puzzles.
Supported features: - Create a crossword puzzle; - Editing a crossword puzzle; - Guessing crossword puzzle; - Check correctness of guessing a crossword puzzle; - Save state incompletely guessed crossword puzzle; - Automatic creation of crossword puzzle grid (beta) - Automatic selection of words from the dictionary (Beta 2); - Adding / removing words from the dictionary; - Conservation created a crossword puzzle grid, as a template for the new; - Editing the font crossword; - Editing the size of the grid cell crossword puzzle; - Export crossword in the image.
%description -l ru
Qt программа для профессионального создания редактирования и лёгкого отгадывания классических кроссвордов
Поддерживаемые функции: - Создание кроссворда; - Редактирование кроссворда; - Отгадывание кроссворда; - Проверка правильности отгадывания кроссворда; - Сохранение состояния неполностью отгаданного кроссворда; - Автоматическое создание сетки кроссворда(бета); - Автоматический выбор слов из словаря(бета 2); - Добавление/удаление слов из словаря; - Сохранение созданной сетки кроссворда, как шаблон для нового; - Редактирование шрифта кроссворда; - Редактирование размера ячейки сетки кроссворда; - Экспорт кроссворда в изображение.
%prep
%setup -q
%build
%make_build
%install
cp -Rv klest/ %buildroot/
%clean
rm -rf $RPM_BUILD_ROOT
%files
/usr/games/*
/usr/share/*
%post
test -e /usr/bin/klest-crossword-0.1.7 || ln -s /usr/games/klest-crossword-0.1.7 /usr/bin/klest-crossword-0.1.7
test -e $HOME/Desktop/klest-crossword.desktop || cp -r /usr/share/applications/klest-crossword.desktop $HOME/Desktop/klest-crossword.desktop
%postun
test -L /usr/bin/klest-crossword-0.1.7 && rm -r /usr/bin/klest-crossword-0.1.7
test -e $HOME/Desktop/klest-crossword.desktop && rm -r $HOME/Desktop/klest-crossword.desktop
Специальный
архив
версии 0.1.7.
Устанавливаем дополнительный пакет rpm-build и собираем командой в консоли:
Цитировать
$rpmbuild -bb /home/username/RPM/SPECS/klest-crossword-0.1.7-alt.spec
Записан
xwicked
Гость
Клёст-кроссворд 0.1.8
«
Ответ #9 :
Июль 22, 2011, 22:40 »
Продолжение:
0.1.8
,
0.1.8-rpm
.
Изменения:
Цитировать
- Изменился алгоритм выбора слов из словаря(бета 3), с небольшой оптимизацией;
- Исправлена ошибка при экспорте кроссворда в изображение;
- Изменилось автоматическое переключение между направлением слов, на ручное - щелчком правой кнопки мыши.
Записан
xwicked
Гость
Клёст-кроссворд 0.1.9
«
Ответ #10 :
Июль 27, 2011, 18:38 »
Здравствуйте!
Хочу порадовать Вас тем, что я сделал дополнительный архив исходного кода, для сборки программы в ОС GNU / Linux Debian( / Ubuntu).
Для сборки deb-пакета необходимо наличие установленных пакетов: autotools-dev, dh-make, fakeroot, cdbs, dpkg, dpkg-dev и другие.
Команда сборки:
Цитировать
user@pc:/klest-crossword-0.1.9-deb$ dpkg-buildpackage -rfakeroot
Для проверки правильности соответствия стандартам дистрибутива Debian, используйте пакет Lintian.
Исходный код:
0.1.9
,
0.1.9-rpm
,
0.1.9-deb
.
Что нового:
Цитировать
- Исправлена фатальная ошибка, возникающая при отсутствии словаря.
- Исправлена фатальная ошибка, возникающая когда заканчиваются слова в словаре.
- Добавлена возможность несимметричного ручного редактирования сетки кроссворда.
- Изменён режим работы программы по умолчанию на режим просмотра.
«
Последнее редактирование: Июль 27, 2011, 18:43 от xwicked
»
Записан
xwicked
Гость
Клёст-кроссворд 0.2.0
«
Ответ #11 :
Август 02, 2011, 08:54 »
Следующая версия = 0.2.0.
Исходный код + сборки
.
Важное изменение: добавление значков Oxygen. Ещё добавлены 2-а новых словаря: русский на 31 000 слов и английский на 41 000 слов. Теперь программа выглядит вот так -
Произведённые изменения:
Цитировать
- Добавлены значки "Oxygen", распространяемые по лицензии GNU GPL;
- Исправлена ошибка экспорта кроссворда в изображение форматов JPG, JPEG, TIFF;
- Добавлена возможность выбора словаря для составления кроссворда. Возможные варианты: русский и английский;
- Изменена стандартная панель - добавлены несколько новых действий, исправлены ошибки;
- Изменён формат файла свойств программы, в сторону более простого добавления в него будущих свойств.
«
Последнее редактирование: Август 02, 2011, 19:28 от xwicked
»
Записан
Авварон
Джедай : наставник для всех
Offline
Сообщений: 3257
Re: Программа для создания кроссвордов[обсуждение исходника]
«
Ответ #12 :
Август 03, 2011, 11:20 »
А не будет лучше рисовать кроссворд по центру вьюпорта? А то белая хня справа напрягает
Записан
xwicked
Гость
Re: Программа для создания кроссвордов[обсуждение исходника]
«
Ответ #13 :
Август 03, 2011, 12:13 »
Цитата: Авварон от Август 03, 2011, 11:20
А не будет лучше рисовать кроссворд по центру вьюпорта? А то белая хня справа напрягает
Это уже зависит от размера кроссворда и размера окна программы. Можно просто не разворачивать на весь экран и всё
Пример:
«
Последнее редактирование: Август 03, 2011, 12:16 от xwicked
»
Записан
kambala
Джедай : наставник для всех
Offline
Сообщений: 4724
Re: Программа для создания кроссвордов[обсуждение исходника]
«
Ответ #14 :
Август 03, 2011, 14:45 »
тогда может лучше реализовать масштабирование сетки и шрифта?
Записан
Изучением C++ вымощена дорога в Qt.
UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Страниц: [
1
]
2
3
4
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...