Russian Qt Forum

Программирование => Разработка игр => Тема начата: xwicked от Июнь 02, 2011, 12:03



Название: Программа для создания кроссвордов[обсуждение исходника]
Отправлено: xwicked от Июнь 02, 2011, 12:03
(http://labfreetech.org/manual/crosswordviewer/image/Image1.png)

Здравствуйте! Целью данной темы было желание поделиться с общественностью своими наработками. Вот исходник (http://labfreetech.org/downloads/xwcv/xwcv-0.5.1-lin-src.tar.gz) - пока только прокомментировал текст исходного кода просмотрщика кроссвордов. Создатель кроссвордов будет чуть позже. Жду комментариев.

Также эта игра может быть использована новичкам как пример рабочей программы на Qt(C++).
Проект OpenSource под GPL. Есть и на SourceForge.net (http://sourceforge.net/projects/xwcv/) - присоединяйтесь!


Название: Re: Программа для создания кроссвордов[обсуждение исходника]
Отправлено: serega-5508 от Июнь 02, 2011, 16:02
подключи к поекту. Логин на sourceForge - serega-5508. Поучавствую в разработке. Исходник пока не смотрел, комменты потом.


Название: Re: Программа для создания кроссвордов[обсуждение исходника]
Отправлено: xwicked от Июнь 02, 2011, 16:20
подключи к поекту. Логин на sourceForge - serega-5508. Поучавствую в разработке. Исходник пока не смотрел, комменты потом.
Предполагаю, что лучше будет сначала посмотреть на программу, исходник, высказать хотя бы пару идей по поводу дальнейшего её совершенствования - потом подключу на sf.
ЗЫ: Это первая моя программа на C++ и на Qt тоже - мне сначала будет интересно не комом ли мой первый код получился. Комментариев там немного.


Название: Re: Программа для создания кроссвордов[обсуждение исходника]
Отправлено: xwicked от Июнь 13, 2011, 20:48
Продолжение: создатель кроссвордов - исходник (http://labfreetech.org/downloads/xwce/xwce-0.5.6-lin-src.tar.gz). Второй проект на SourceForge.net (http://sourceforge.net/projects/xwce/).
Дам ещё ссылки на windows-версии, чтобы могли также остальные посмотреть на них: создание (http://labfreetech.org/downloads/xwce/xwce-0.5.6-win-x86.exe), отгадывание (http://labfreetech.org/downloads/xwcv/xwcv-0.5.1-win-x86.exe).

Сетка кроссворда представлена обычной таблицей 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(длина слова), само слово).


Название: Профессиональный кроссворд 0.1.4
Отправлено: xwicked от Июнь 23, 2011, 12:16
Продолжаем знакомиться с исходником. Профессиональный кроссворд, версии 0.1.4 - это объединение двух предыдущих: создателя и отгадывателя, с последующей доработкой.
Изменения:
- Добавлена возможность автоматического создания сетки кроссворда(бета-версия).
- Добавлена возможность автоматического составления кроссворда(выбор слов из словаря). Первая бета-версия.
- Присутствуют обе возможности(создание и отгадывыание).

Отмечу, что выбор слов происходит в один проход и могут быть пропуски слов в сетке, после составления кроссворда.

Исходный код(0.1.4) (http://sourceforge.net/projects/klest-crossword/files/0.1.4/xwcp-0.1.4-lin-src.tar.gz/download?use_mirror=citylan) Отдельный проект на SourceForge.net - Клёст-кроссворд (http://sourceforge.net/projects/klest-crossword/)

В Клёст-кроссворде нет возможности сохранять пароль, в то время как в Crossword editor эта возможность есть. Проекты были разделены для большего удобства разработки.

P.S. Профессиональный кроссворд 0.1.7 = Клёст-кроссворд 0.1.7  :)


Название: Профессиональный кроссворд 0.1.5
Отправлено: xwicked от Июнь 28, 2011, 00:00
Следующая версия программы - 0.1.5. Исходный код (http://sourceforge.net/projects/klest-crossword/files/0.1.5/xwcp-0.1.5-lin-src.tar.gz/download?use_mirror=citylan).

Изменилась функция составления кроссворда, которая теперь позволяет заполнить всю сетку кроссворда словами.


Название: Профессиональный кроссворд[Final Edition] 0.1.6
Отправлено: xwicked от Июнь 29, 2011, 13:33
В новой версии 0.1.6 - исходник (http://sourceforge.net/projects/klest-crossword/files/0.1.6/xwcp-0.1.6-lin-src.tar.gz/download?use_mirror=citylan), добавлен экспорт кроссворда в изображения следующих растровых графических форматов: JPG, JPEG, BMP, TIFF, PNG, XPM, XBM, PPM + несколько других исправлений.


Название: Клёст-кроссворд 0.1.7
Отправлено: xwicked от Июль 10, 2011, 18:08
А вот и новая версия 0.1.7. Изучаем код (http://sourceforge.net/projects/klest-crossword/files/0.1.7/klest-crossword-0.1.7-lin-src.tar.gz/download?use_mirror=citylan).

Что изменено:
Цитировать
      - Временное название "Профессиональный кроссворд" изменено на "Клёст-кроссворд".
      - При вводе слова в кроссворд, производится проверка на количество введённых букв в поле "Введите слово".
      - В свойствах таблицы кроссворда отключена возможность ввода букв, непосредственно в ячейку, минуя поле "Введите слово".
      - Изменены цветовые стили некоторых компонентов.
      - В строку состояния добавлен компонент, отображающий количество букв.
      - Добавлена проверка состояния сохранения изменений, произведённые в кроссворде, при выходе, используя меню "Кроссворд->Выход".


Название: RPM-дистрибутивы ОС Linux, сборка программы
Отправлено: xwicked от Июль 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
Специальный архив (http://sourceforge.net/projects/klest-crossword/files/0.1.7/klest-crossword-0.1.7-rpm.tar.gz/download?use_mirror=citylan) версии 0.1.7.
Устанавливаем дополнительный пакет rpm-build и собираем командой в консоли:
Цитировать
$rpmbuild -bb /home/username/RPM/SPECS/klest-crossword-0.1.7-alt.spec


Название: Клёст-кроссворд 0.1.8
Отправлено: xwicked от Июль 22, 2011, 22:40
Продолжение: 0.1.8 (http://sourceforge.net/projects/klest-crossword/files/0.1.8/klest-crossword-0.1.8-lin-src.tar.gz/download?use_mirror=citylan), 0.1.8-rpm (http://sourceforge.net/projects/klest-crossword/files/0.1.8/klest-crossword-0.1.8-rpm.tar.gz/download?use_mirror=citylan).

Изменения:
Цитировать
- Изменился алгоритм выбора слов из словаря(бета 3), с небольшой оптимизацией;
- Исправлена ошибка при экспорте кроссворда в изображение;
- Изменилось автоматическое переключение между направлением слов, на ручное - щелчком правой кнопки мыши.


Название: Клёст-кроссворд 0.1.9
Отправлено: xwicked от Июль 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 (http://sourceforge.net/projects/klest-crossword/files/0.1.9/klest-crossword-0.1.9-lin-src.tar.gz/download?use_mirror=citylan), 0.1.9-rpm (http://sourceforge.net/projects/klest-crossword/files/0.1.9/klest-crossword-0.1.9-rpm.tar.gz/download?use_mirror=citylan), 0.1.9-deb (http://sourceforge.net/projects/klest-crossword/files/0.1.9/klest-crossword-0.1.9-deb.tar.gz/download?use_mirror=citylan).

Что нового:
Цитировать
      - Исправлена фатальная ошибка, возникающая при отсутствии словаря.
      - Исправлена фатальная ошибка, возникающая когда заканчиваются слова в словаре.
      - Добавлена возможность несимметричного ручного редактирования сетки кроссворда.
      - Изменён режим работы программы по умолчанию на режим просмотра.


Название: Клёст-кроссворд 0.2.0
Отправлено: xwicked от Август 02, 2011, 08:54
Следующая версия = 0.2.0.

Исходный код + сборки (http://sourceforge.net/projects/klest-crossword/files/0.2.0/).

Важное изменение: добавление значков Oxygen. Ещё добавлены 2-а новых словаря: русский на 31 000 слов и английский на 41 000 слов. Теперь программа выглядит вот так -

(http://labfreetech.org/poster.gif)

Произведённые изменения:
Цитировать
- Добавлены значки "Oxygen", распространяемые по лицензии GNU GPL;
- Исправлена ошибка экспорта кроссворда в изображение форматов JPG, JPEG, TIFF;
- Добавлена возможность выбора словаря для составления кроссворда. Возможные варианты: русский и английский;
- Изменена стандартная панель - добавлены несколько новых действий, исправлены ошибки;
- Изменён формат файла свойств программы, в сторону более простого добавления в него будущих свойств.


Название: Re: Программа для создания кроссвордов[обсуждение исходника]
Отправлено: Авварон от Август 03, 2011, 11:20
А не будет лучше рисовать кроссворд по центру вьюпорта? А то белая хня справа напрягает


Название: Re: Программа для создания кроссвордов[обсуждение исходника]
Отправлено: xwicked от Август 03, 2011, 12:13
А не будет лучше рисовать кроссворд по центру вьюпорта? А то белая хня справа напрягает
Это уже зависит от размера кроссворда и размера окна программы. Можно просто не разворачивать на весь экран и всё :)
Пример:

(http://i052.radikal.ru/1005/33/d97a618b7ff0.jpg)


Название: Re: Программа для создания кроссвордов[обсуждение исходника]
Отправлено: kambala от Август 03, 2011, 14:45
тогда может лучше реализовать масштабирование сетки и шрифта?


Название: Возможно.
Отправлено: xwicked от Август 03, 2011, 15:25
тогда может лучше реализовать масштабирование сетки и шрифта?
Хорошая идея. Нужно будет тогда добавить меню "Вид" и пункты "Увеличить + ", "Уменьшить - ".


Название: Клёст-кроссворд 0.2.1
Отправлено: xwicked от Август 25, 2011, 18:56
Программа доведена до стабильности. Релиз 0.2.1. Исходник + сборки (http://sourceforge.net/projects/klest-crossword/files/0.2.1/).

Все изменения:
Цитировать
- Исправлена фатальная ошибка, возникающая при повторном автоматическом выборе слов, после автоматического создания сетки;
- Исправлена ошибка алгоритма выбора слов из словаря;
- Исправлена ошибка автоматической вставки слов в сетку кроссворда;
- Исправлена ошибка неправильного ввода слова в сетку кроссворда, при повторных нажатиях на кнопку "ОК";
- Исправлена ошибка экспорта в изображения, при ручном создании кроссворда;
- Исправлена ошибка передачи текущего шрифта в диалог выбора шрифта, при его открытии;
- Оптимизирован алгоритм автоматического создания сетки кроссворда;
- Оптимизирован алгоритм автоматического выбора слов из словаря;
- Оптимизированы алгоритмы: создания, изменения, сохранения, открытия, закрытия кроссворда;
- Изменён формат файла кроссворда и формат файла сохранения состояния неполностью отгаданного кроссворда;
- Для повышения интереса к игровому процессу, после проверки правильности отгадывания, кроссворд закрывается.


Название: Re: Программа для создания кроссвордов[обсуждение исходника]
Отправлено: kolob от Август 30, 2011, 09:26
xwicked как можно поучаствовать в проекте?


Название: Re: Программа для создания кроссвордов[обсуждение исходника]
Отправлено: xwicked от Август 30, 2011, 18:53
xwicked как можно поучаствовать в проекте?
Участие в проекте такое же, как и в остальных свободных проектах. То бишь, можете присылать свои исправления ошибок и функциональные дополнения к программам, сообщать о найденных ошибках, просто давать советы и так далее. Наиболее активные помощники будут включены в список основных разработчиков.
Так же есть необходимость в осуществлении сборок программ для неподдерживаемых мной архитектур: ARM, PowerPC, MIPS, SPARC и так далее.


Название: Re: Программа для создания кроссвордов[обсуждение исходника]
Отправлено: kambala от Август 30, 2011, 19:07
могу собрать универсальное приложение Intel/ppc на 4.7.3


Название: Re: Программа для создания кроссвордов[обсуждение исходника]
Отправлено: xwicked от Август 30, 2011, 19:21
могу собрать универсальное приложение Intel/ppc на 4.7.3
Было бы замечательно, но сразу предупрежу, что сторонние сборки я временно буду отделять от своих, с соответствующей пометкой "Сторонняя сборка". Если будет желание - укажу на сайте, рядом с сылкой от кого сборка, можете сами в информации о программе указать :)


Название: Re: Программа для создания кроссвордов[обсуждение исходника]
Отправлено: kambala от Август 30, 2011, 20:26
скачал исходники для 0.2.1 (под 0.2.2 их почему-то нету), открыл klest-crossword.pro, собралось успешно, при запуске из креатора получаю
Цитировать
Запускается /Developer/Projects/Qt/klest-crossword-build-desktop/usr/games/klest-help.app/Contents/usr/games/klest-help...
Не удалось запустить программу. Путь или права недопустимы?
а ведь путь должен быть "/Developer/Projects/Qt/klest-crossword-build-desktop/usr/games/klest-help.app/Contents/MacOS/klest-help". то же самое наблюдается и с самим кроссвордом при запуске из креатора.

при запуске приложений из файндера в хелпе пусто, а в основной программе язык всегда английский вне зависимости от выбранного языка.

допиливать самому желания нету.


Название: Re: Программа для создания кроссвордов[обсуждение исходника]
Отправлено: xwicked от Август 30, 2011, 21:14
... допиливать самому желания нету.
Всё отлично, прикрепите их сюда архивом(только 2-а бинарника). Дальше дело техники. Потом, если будет желание, на мою dmg-шку посмотрите. Если всё получится - прокомментирую свою работу. Dmg-шка, я надеюсь, на обеих архитектурах открывается?  :)


Название: Re: Программа для создания кроссвордов[обсуждение исходника]
Отправлено: kambala от Август 30, 2011, 22:06
в оба проектных файла добавил следующие строки:
Код:
macx {
    QMAKE_MAC_SDK = /Developer/SDKs/MacOSX10.5.sdk
    CONFIG += x86 ppc
    QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.1 # но вроде реально приложение будет работать на системах 10.4 и выше
}
Всё отлично, прикрепите их сюда архивом(только 2-а бинарника).
на всякий пожарный выкладываю 2 версии бинарников - только скомпиленые (http://www.mediafire.com/?0v3jdpbl17hyjh4) (350 Кб в архиве) и пропущенные через macdeployqt (http://www.mediafire.com/?g1hn65seqli86gs) (41 Мб в архиве, точно будут запускаться на любой машине, но весят будь здоров).
Dmg-шка, я надеюсь, на обеих архитектурах открывается?  :)
:D
Потом, если будет желание, на мою dmg-шку посмотрите.
кто-то забыл про macdeployqt - просто напихать библиотеки в папку с исполняемым файлом или пакетом приложения тут не катит
Цитировать
Dyld Error Message:
  Library not loaded: /usr/local/Trolltech/Qt-4.5.3/lib/QtSql.framework/Versions/4/QtSql
  Referenced from: /Volumes/klest-crossword-/klest-crossword-0.2.2-mac-x86/klest-crossword.app/Contents/MacOS/klest-crossword
  Reason: image not found

да, и добавлял бы свой Info.plist, и все файлы лучше прятать в пакет приложения, а не распространять приложение папкой с кучей файлов.


Название: Re: Программа для создания кроссвордов[обсуждение исходника]
Отправлено: xwicked от Август 30, 2011, 23:01
... (350 Кб в архиве) и пропущенные через macdeployqt (http://www.mediafire.com/?g1hn65seqli86gs) (41 Мб в архиве, ...
кто-то забыл про macdeployqt - просто напихать библиотеки в папку с исполняемым файлом или пакетом приложения тут не катит
Цитировать
Dyld Error Message:
  Library not loaded: /usr/local/Trolltech/Qt-4.5.3/lib/QtSql.framework/Versions/4/QtSql
  Referenced from: /Volumes/klest-crossword-/klest-crossword-0.2.2-mac-x86/klest-crossword.app/Contents/MacOS/klest-crossword
  Reason: image not found

да, и добавлял бы свой Info.plist, и все файлы лучше прятать в пакет приложения, а не распространять приложение папкой с кучей файлов.
Благодарю за сборку - осталось всё это только запустить. Из пакета .app klest-crossword-0.2.1 не копируется из под рута в /usr/games, не можете знать, почему? :) 41 мб это слишком, хотя, может и хватит. macdeployqt, Info.plist - это я в первый раз слышу  ::). Я же виндузятник, который 2.7 года назад только полностью перешёл на линух. О Solaris и Mac OS X я чисто случайно узнал на сайте SourceForge.net, когда флажки на дефолтную загрузку проставлял и увидел 2-е ещё мне незнакомые на тот момент системы. Так что, в Mac OS я новичок :)
Ошибка устраняется, после установки скрипта install. Все либы копируются по нужным путям.


Название: Re: Программа для создания кроссвордов[обсуждение исходника]
Отправлено: kambala от Август 30, 2011, 23:16
Из пакета .app klest-crossword-0.2.1 не копируется из под рута в /usr/games, не можете знать, почему?
без понятия, вроде обычный себе файл...
macdeployqt, Info.plist - это я в первый раз слышу  ::)
http://doc.qt.nokia.com/latest/deployment-mac.html
Ошибка устраняется, после установки скрипта install. Все либы копируются по нужным путям.
да, точно. вот только теперь язык всегда принудительно русский независимо от выбранного (перезапуск не помогает).


Название: Re: Программа для создания кроссвордов[обсуждение исходника]
Отправлено: xwicked от Сентябрь 02, 2011, 15:30
...
без понятия, вроде обычный себе файл...
Файл так и не скопировался, но проблема исчезла.
...
http://doc.qt.nokia.com/latest/deployment-mac.html ...
Понял посмотрю.
...
да, точно. вот только теперь язык всегда принудительно русский независимо от выбранного (перезапуск не помогает).
Это, скорее всего связано с тем, что все файлы у меня в пакете приложения в папке MacOS. Всё копировал я с линуха. Потом делал iso-шник из папки. Загонял  в виртуалку и в MacOS уже делал dmg-ку. Поэтому права там линуховые и нужно их сменить на маковские права.

ЗЫ: Про dmg-ку я понял - это образ маковского диска, соответственно он платформеннонезависимый.  :D
А без деплоя кроссворд не запустился(с деплоем - отлично!!!) с такой же ошибкой, но путь уже другой и версия 4.7.3 в пути и всё.

Папка с деплоем 101 МБ, архив 39, что никуда не годится :( Поэтому я буду пробовать делать со скриптом "install", как раньше. Ни один МБ не должен быть лишним. Что это не хорошо - я знаю, но я не думаю, что скрипт запустить для установки из консоли для пользователя будет невыполнимо :) .
[UPDATED]: Что это?
Цитировать
denis-flegontovs-computer:~/Documents denisflegontov$ ./klest-nodeploy/klest-help.app/Contents/MacOS/klest-help
dyld: Library not loaded: /Developer/qt-4.7.3-universal/lib/QtGui.framework/Versions/4/QtGui
  Referenced from: /Users/denisflegontov/Documents/./klest-nodeploy/klest-help.app/Contents/MacOS/klest-help
  Reason: image not found
Trace/BPT trap

После моего нового скрипта install:

denis-flegontovs-computer:~/Documents denisflegontov$ ./klest-nodeploy/klest-help.app/Contents/MacOS/klest-help
dyld: Library not loaded: @executable_path/../Frameworks/QtCore.framework/Versions/4/QtCore
  Referenced from: /Developer/qt-4.7.3-universal/lib/QtGui.framework/Versions/4/QtGui
  Reason: image not found
Trace/BPT trap
Переведу для остальных - библиотека QtGui грузится по пути установленной библиотеки Qt, а дальше QtCore грузится из ТЕКУЩЕЙ папки, из которой запущено приложение.  Это диверсия!!! Попытка помощи провалилась :(


Название: Re: Программа для создания кроссвордов[обсуждение исходника]
Отправлено: xwicked от Сентябрь 03, 2011, 22:53
А в новой версии (http://sourceforge.net/projects/klest-crossword/files/0.2.2/) 0.2.2 я реализовал импорт кроссворда из текстового формата AcrossLite первой версии. Вторая версия будет загружаться, но за исключением дополнительной головоломки.

Что нового:
Цитировать
      - Появилась возможность импортировать кроссворд, из текстового формата AcrossLite;
      - Исправлена фатальная ошибка, не позволяющая создавать кроссворды больше чем 18х18;
      - В меню "Помощь" добавились пункты: "Пожертвовать" и "Получить исходный код";
      - Сохранение состояния неполностью отгаданного кроссворда AcrossLite(TXT) имеет своё расширение, при оставленной той же структуре файла;
      - В окне о программе все ссылки изменили свой цвет на синий, для удобства поиска;
      - Появилась возможность вводить слово в сетку кроссворда, нажатием на клавишу "Ввод".
Дабы быть уверенным в том, что файлы не побились, при закачке, я добавил текстовик с md5-контрольными суммами.
Git-репозиторий:
Цитировать
git://klest-crossword.git.sourceforge.net/gitroot/klest-crossword/klest-crossword (read-only)


Название: Re: Программа для создания кроссвордов[обсуждение исходника]
Отправлено: xwicked от Ноябрь 08, 2011, 01:39
Здравствуйте!
Цитировать
- Добавлена возможность полуавтоматического ввода слов из словаря;
- Добавлена возможность печати кроссворда;
- Добавлены горячие клавишы;
- Увеличен максимальный размер кроссворда до 999х999х999(столбцы/строки/размер ячейки);
- Во избежании ошибки, теперь после отмены выбора слов нельзя сделать экспорт в изображение;
- После отладки, возвращено автоматическое определение направления слов при выделении, убранное в версии 0.1.8;
- Добавлена возможность ввода имени игрока;
- Добавлена статистика;
- Исправлена ошибка неисчезновения пунктов меню автоматизации, в режиме просмотра;
- Исправлена ошибка, при ручном вводе слов в кроссворд;
- Добавлен пункт меню "Получить техподдержку";
- Некоторые окна теперь не разворачиваются на весь экран по-умолчанию. Изменились также размеры нескольких окон.
В новой версии 0.2.7 (http://"http://sourceforge.net/projects/klest-crossword/files/0.2.7/") Появилась возможность печати кроссворда. Хочу обратить особое внимание на тестирование этой функции, так как у меня дома нету принтера. Очень интересно, как ведёт себя печать на разных принтерах под всеми ОС.
Полуавтоматический ввод слов позволит создавать тематические кроссворды и задавать различную сложность, при составлении.

P.S. Ещё один очень важный момент: версии 0.2.7, 0.2.8 - сборки являются минимальными. То есть, чтобы посмотреть на все функции, необходимо программу собрать из исходника . Это делалось для проверки аудитории пользователей на заинтересованность в программе, путем отправки мне запроса на получение исходного кода. Что было не очень удачной идеей и, с версии 0.2.9, сборки программы уже снова полнофункциональны. Прошу извинить меня за данное неудобство :-\ .


Название: Re: Программа для создания кроссвордов[обсуждение исходника]
Отправлено: xwicked от Ноябрь 26, 2011, 23:55
В версии 0.2.8 (http://sourceforge.net/projects/klest-crossword/files/0.2.8/) я добавил функции горизонтального и вертикального отражения кроссворда как изображения. Так же добавил инверсию цветов ячеек сетки кроссворда. Но... я не смог быстро придумать функцию обрезания сетки кроссворда, если он, например, получился меньше созданных рамок. Интересует самое простое решение данного вопроса. Благодарю!

Ещё изменения:
Цитировать
- Добавлена возможность рисования сетки, как карандашом;
- Добавлена функция автоматического создания, сохранения и экспорта неограниченного числа кроссвордов из одного шаблона по нажатии одной клавиши, предварительно установив соотвествующие настройки;
- Добавлены функции очистки слов, сетки и всего кроссворда;
- Добавилось окно "Параметры";
- Выбор словаря перенесён в окно "Параметры";
- Добавлена возможность выбора папки, из которой будут показываться шаблоны, для последующего их использования;
- Добавлена возможность задания пути для экспортируемого изображения в окне "Параметры";
- Добавлена возможность задания папки для экспорта вопросов и ответов в окне "Параметры";


Название: Re: Программа для создания кроссвордов[обсуждение исходника]
Отправлено: xwicked от Январь 28, 2012, 16:04
Следующая (http://sourceforge.net/projects/klest-crossword/files/0.2.9) версия программы 0.2.9. В ней я походу вышел за предел стека   :D: Ошибку я уже нашёл.

Цитировать
- Оптимизирован алгоритм выбора слов в 2,5 раза;
- Добавлена возможность экспорта кроссворда в файл, форматов: HTML, PDF, PostScript, текстовый формат AcrossLite, OpenKlest(*.ok);
- Добавлена возможность поворота кроссворда;
- Добавлена возможность автоматического создания и экспорта кроссворда в форматы HTML, PDF, PostScript, текстовый формат AcrossLite, OpenKlest(*.ok);
- Добавлена возможность импорта кроссворда в формате OpenKlest(*.ok);
Экспорт в PDF и PostScript осуществляется достаточно просто: подготавливается HTML-страница и распечатывается на принтере, но печать идёт не на физическое устройство а в файл :)
Код
C++ (Qt)
   QTextEdit textEdit;
   textEdit.setHtml(strHTML);
#ifndef QT_NO_PRINTER
 
   QPrinter printer(QPrinter::HighResolution);//Настройка принтера на  высокое качество
   printer.setOutputFormat(QPrinter::PostScriptFormat);//Выбор печати в файл PostScript
   printer.setOutputFileName(sExportName);//Присваивание имени файла
   textEdit.document()->print(&printer);//Сама печать
 
#endif
Хотелось бы отметить, что с появлением функции экспорта кроссворда в Across Lite TXT, у программы across lite 2.0 появилась возможность отгадывать нетолько американские кроссворды, но и классические, правда всё в английском языке. Можете поэксперементировать, ради интереса   ::)


Название: Re: Программа для создания кроссвордов[обсуждение исходника]
Отправлено: xwicked от Февраль 08, 2012, 22:56
Здравствуйте! Как я избавился от переполнения стека:
Код
C++ (Qt)
ushort usTable[50][50];//Массив сетки кроссворда
Если делал больше 50-ти, то отваливался импорт файла и запуск руководства пользователя   :D
Изменил на:
Код
C++ (Qt)
ushort **usTable;//Массив сетки кроссворда
...
//Создание двумерного динамического массива
       usTable = new ushort*[TableKlestCrossword->rowCount()];
 
       for(int i = 0; i < TableKlestCrossword->rowCount(); i++)
           usTable[i] = new ushort[TableKlestCrossword->columnCount()];
 
Далее введены константы:
Код
C++ (Qt)
//Определение путей констант, в соответствии с системой
#if defined(Q_WS_WIN)
 
   #define PATH_TMP_SET QApplication::applicationDirPath() + "/settings.xwsc"
   #define PATH_SHARE_DOC QApplication::applicationDirPath()
   #define PATH_SHARE_APP QApplication::applicationDirPath()
   #define PATH_TMP_STAT QApplication::applicationDirPath() + "/cstat.html"
 
 
#elif defined(Q_WS_X11)
 
   #define PATH_TMP_SET "/tmp/klest-crossword-0.3.7/settings.xwsc"
   #define PATH_SHARE_DOC "/usr/share/doc/klest-crossword-0.3.7"
   #define PATH_SHARE_APP "/usr/share/klest-crossword-0.3.7"
   #define PATH_TMP_STAT "/tmp/klest-crossword-0.3.7/cstat.html"
 
#elif defined(Q_WS_MAC)
 
   #define PATH_TMP_SET QApplication::applicationDirPath() + "/settings.xwsc"
   #define PATH_SHARE_DOC QApplication::applicationDirPath()
   #define PATH_SHARE_APP QApplication::applicationDirPath()
   #define PATH_TMP_STAT QApplication::applicationDirPath() + "/cstat.html"
 
 
#endif
 
//Пути для разработки и отладки программы
/*#define PATH_TMP_SET QApplication::applicationDirPath() + "/settings.xwsc"
#define PATH_SHARE_DOC QApplication::applicationDirPath()
#define PATH_SHARE_APP QApplication::applicationDirPath()
#define PATH_TMP_STAT QApplication::applicationDirPath() + "/cstat.html"*/

 
#define MODE_VIEW true
#define MODE_EDIT false
 
#define ACROSS_ENABLE true
#define ACROSS_DISABLE false
 
#define LANGUAGE_RUSSIAN true
#define LANGUAGE_ENGLISH false
 
#define TOOLBAR_SHOW true
#define TOOLBAR_HIDE false
 
#define EXPORT_YES true
#define EXPORT_NO false
 
#define TYPE_PDF 0
#define TYPE_POST_SCRIPT 1
Что позволило пути в программе менять всего один раз :) Так же появилась возможность убрать лишние условия и оформить в switch:
Код
C++ (Qt)
       switch(iTypeExport)
       {
       case TYPE_PDF:
           sFilter = ".pdf";
           break;
 
       case TYPE_POST_SCRIPT:
           sFilter = ".ps";
           break;
 
       case TYPE_HTML:
           sFilter = ".html";
           break;
 
       case TYPE_TXT:
           sFilter = ".txt";
           break;
 
       case TYPE_JPG:
           sFilter = ".jpg";
           break;
 
       case TYPE_JPEG:
           sFilter = ".jpeg";
           break;
 
       case TYPE_BMP:
           sFilter = ".bmp";
           break;
 
       case TYPE_TIFF:
           sFilter = ".tiff";
           break;
 
       case TYPE_PNG:
           sFilter = ".png";
           break;
 
       case TYPE_XPM:
           sFilter = ".xpm";
           break;
 
       case TYPE_XBM:
           sFilter = ".xbm";
           break;
 
       case TYPE_PPM:
           sFilter = ".ppm";
           break;
 
       case TYPE_OPEN_KLEST:
           sFilter = ".ok";
           break;
       }
Введение структуры файла свойств:
Код
C++ (Qt)
//Структура файла свойств программы
struct TFileOptions
{
    bool bModeWork,//Режим работы программы
         bLanguageProgram,//Язык программы
         bStateStandardToolbar,//Состояние показа стандартной панели
         bStateExport,//Состояние экспортирования
         bCurrentDictionary;//Текущий словарь
    QString sModePassword,//Пароль режима
            sPathCrossword,//Путь для кроссвордов
            sPathExport,//Путь для экспорта
            sPathTemplate;//Путь для шаблонов
    int iNumberTimes,//Количество раз
        iTypeExport;//Тип экспорта
};
Скачать 0.3.7 (http://"http://sourceforge.net/projects/klest-crossword/files/0.3.7/"). На данный момент это последняя версия, прошу...


Название: Re: Программа для создания кроссвордов[обсуждение исходника]
Отправлено: kambala от Февраль 08, 2012, 23:22
а чем QDir::tempPath() не устраивает?

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


Название: Re: Программа для создания кроссвордов[обсуждение исходника]
Отправлено: xwicked от Февраль 08, 2012, 23:29
а чем QDir::tempPath() не устраивает? ...
Об этом я узнал позже(11.12.11), в следующей версии обязательно буду использовать, только не временный, а домашний каталог пользователя.


Название: Re: Программа для создания кроссвордов[обсуждение исходника]
Отправлено: kambala от Февраль 09, 2012, 02:04
если это обычные настройки приложения, то с ними лучше работать через QSettings


Название: Re: Программа для создания кроссвордов[обсуждение исходника]
Отправлено: xwicked от Февраль 11, 2012, 22:36
если это обычные настройки приложения, то с ними лучше работать через QSettings
Кстати, А QSettings пишет в оффтопике в реестр или можно на ini настроить?
Если только реестр - буду реализовывать свой класс.


Название: Re: Программа для создания кроссвордов[обсуждение исходника]
Отправлено: kambala от Февраль 12, 2012, 00:37
может и туда и туда, см. конструктор


Название: Re: Программа для создания кроссвордов[обсуждение исходника]
Отправлено: xwicked от Февраль 12, 2012, 00:46
может и туда и туда, см. конструктор
Благодарю, а то Шлее меня сразу выпугал всего. Про ini, это я в сети случайно увидел и решил переспросить.


Название: Re: Программа для создания кроссвордов[обсуждение исходника]
Отправлено: xwicked от Июнь 11, 2012, 16:15
Оптимизация констант:
Код
C++ (Qt)
enum eTypeCrossword {TYPE_PDF, TYPE_POST_SCRIPT, TYPE_RTF, TYPE_HTML, TYPE_TXT, TYPE_JPG, TYPE_JPEG, TYPE_BMP,
                   TYPE_TIFF, TYPE_PNG, TYPE_XPM, TYPE_XBM, TYPE_PPM, TYPE_OPEN_KLEST};
 
Экспорт в RTF вместе с изображением:
Код
C++ (Qt)
QString TCrosswordGrid::wordToUnicode(QString sWord)
{
   QString sTemp;
 
   for (int i = 0; i < sWord.length(); i++)
//Добавляет один символ Unicode, если этого не получается сделать, то отображается знак вопроса
       sTemp.append("\\u" + QString::number(sWord.at(i).unicode()) + "?");
 
   return sTemp;
}
 
//Формирование RTF-документа и сохранение
void TCrosswordGrid::saveToRTF(QString sExportName, QString strRTF, QImage imgExport)
{
   QByteArray baImage;
   QBuffer buffer(&baImage);
   buffer.open(QIODevice::WriteOnly);
   imgExport.save(&buffer, "BMP");//BMP как обязательный формат изображения
   baImage = baImage.toHex();//Побайтовое преобразование изображения в шестнадцатеричную форму
   QFile ifile(sExportName);
   QTextStream istream(&ifile);
   istream.setCodec("UTF-8");//UTF-8 кодировка документа
   ifile.open(QIODevice::WriteOnly);
//Добавление информации об изображении с сохранением изначального размера
   istream << "{\\rtf1\n{\\pict\\wmetafile8\\picw" + QString::number(columnCount() * rowHeight(0) * 27) + "\\pich"
           + QString::number(rowCount() * rowHeight(0) * 27) + "\n";
 
   int j = 0;
 
   for (int i = 0; i < baImage.size(); i++)
   {
       if (j == 128)//Если количество символов в строке == 128
       {
           istream << "\n";//То перевод строки; Избавляет от ошибок, при чтении документа.
           j = 0;
       }
 
       istream << baImage.at(i);
       j++;
   }
   istream << "}\\par\\par\n";
   istream << strRTF;
   istream << "}";
   ifile.close();
}
 
//Формирование RTF-текста вопросов и ответов
QString TCrosswordGrid::makeRTFText(QString ListWordH, QString ListWordV, QStringList ListOutV, QStringList ListOutH)
{
   QString strRTF;
   QString strText1;
   QString strText2;
   QString strText3;
 
   for(int i = 0; i < ListOutH.count(); i++)
   {
       strText1.append(wordToUnicode(ListOutH.at(i)) + "\\par\n");
   }
 
   strText2.clear();
 
   for(int i = 0; i < ListOutV.count(); i++)
   {
       strText2.append(wordToUnicode(ListOutV.at(i)) + "\\par\n");
   }
 
   strText3.clear();
   strText3 = "{\\b " + wordToUnicode(tr("Horizontal")) + "}:\\par\n" + wordToUnicode(ListWordH) + "\\par\n" + "{\\b " + wordToUnicode(tr("Vertical"))
              +"}:\\par\n" + wordToUnicode(ListWordV) + "\\par\n";
 
   strRTF.append("{\\b " + wordToUnicode(tr("Horizontal")) + "}:\\par\n"
                  + strText1 + "\\par\n"
                  "{\\b " + wordToUnicode(tr("Vertical")) + "}:\\par\n"
                  + strText2 + "\\par\n"
                  "{\\b\\i " + wordToUnicode(tr("Answers")) + "}:\\par\n"
                  + strText3 + "\\par\n");
   return strRTF;
}
 
 
Использовался материал Википедии (http://ru.wikipedia.org/wiki/Rich_Text_Format). Скачать 1.0.0 (http://sourceforge.net/projects/klest-crossword/files/1.0.0/).
Цитировать
Список изменений:
- Повышена безопасность работы игры;
- Добавлен экспорт кроссворда в RTF;
- Исправлена нумерация вопросов кроссворда при печати и экспорте;
- Оптимизирована скорость отображения статистики;
- Изменён цветовой стиль сетки кроссворда, уменьшен контраст цветов;


Название: Re: Программа для создания кроссвордов[обсуждение исходника]
Отправлено: kambala от Июнь 11, 2012, 16:21
а объекты по-прежнему передаются по значению, а не по константной ссылке – очень нехорошо


Название: Re: Программа для создания кроссвордов[обсуждение исходника]
Отправлено: xwicked от Июнь 11, 2012, 16:58
а объекты по-прежнему передаются по значению, а не по константной ссылке – очень нехорошо
Такие "мелочи" я буду исправлять постепенно. Привычка просто ;)


Название: Re: Программа для создания кроссвордов[обсуждение исходника]
Отправлено: kambala от Июнь 11, 2012, 17:23
это вовсе не мелочи. писать правильно лучше сразу.


Название: Re: Программа для создания кроссвордов[обсуждение исходника]
Отправлено: Igors от Июнь 11, 2012, 17:29
а объекты по-прежнему передаются по значению, а не по константной ссылке – очень нехорошо
Такие "мелочи" я буду исправлять постепенно. Привычка просто ;)
Чем дальше - тем труднее избавиться от этой вредной привычки. Которая прозрачно намекает что Ваши познания ограничиваются Qt и без него ... В общем явная "ложка дегтя" в неплохом, боевом проекте


Название: Re: Программа для создания кроссвордов[обсуждение исходника]
Отправлено: xwicked от Июнь 11, 2012, 17:44
... Чем дальше - тем труднее избавиться от этой вредной привычки. Которая прозрачно намекает что Ваши познания ограничиваются Qt и без него ... В общем явная "ложка дегтя" в неплохом, боевом проекте
Сначала я узнал о QString и, вначале, файл кроссворда представлял один QString. Потом познакомился с QStringList, код значительно упростился и так далее. То, что я переделываю двойную работу - это нехорошо и я это знаю. Но, в это время, кто-то уже пользуется программой, не вдаваясь в код.
Сейчас это только затрудняет помощь мне, только и всего. Придя к профессионализму - у меня уже будут 4-е по-настоящему Мегапроекта ;) Как-то вот так...


Название: Re: Программа для создания кроссвордов[обсуждение исходника]
Отправлено: kambala от Июнь 11, 2012, 17:47
Придя к профессионализму - у меня уже будут 4-е по-настоящему Мегапроекта ;)
и ЧСВ over 9000 судя по всему


Название: Re: Программа для создания кроссвордов[обсуждение исходника]
Отправлено: alexis031182 от Июнь 11, 2012, 17:52
и ЧСВ over 9000 судя по всему
Откуда 9000? Я думал в level'ах это измеряется. И максимум, как правило, около 80.


Название: Re: Программа для создания кроссвордов[обсуждение исходника]
Отправлено: kambala от Июнь 11, 2012, 17:54
и ЧСВ over 9000 судя по всему
Откуда 9000? Я думал в level'ах это измеряется. И максимум, как правило, около 80.
http://lurkmore.to/ЧСВ первая же картинка :)


Название: Re: Программа для создания кроссвордов[обсуждение исходника]
Отправлено: xwicked от Июнь 11, 2012, 17:57
Придя к профессионализму - у меня уже будут 4-е по-настоящему Мегапроекта ;)
и ЧСВ over 9000 судя по всему
Хорош оффтопить, без этого, я бы давно начал пиво глушить литрами, а сейчас только молоко, здоровье и пару программок...


Название: Re: Программа для создания кроссвордов[обсуждение исходника]
Отправлено: Igors от Июнь 11, 2012, 18:13
Вот я смотрю - вроде неплохой, работящий паренек. Ну вникать в подробности его кроссвордов - мне это не нужно, но при случае можно с ним поконтачить и предложить кое-какие работы. Конечно может свяжется а может и нет, это нормально. Ладно, поглядим как он отреагирует на безобидное замечание.

Хорош оффтопить,
Ага, вот так.. Ну я ошибался, этот паренек мне больше не интересен  :)


Название: Re: Программа для создания кроссвордов[обсуждение исходника]
Отправлено: xwicked от Май 06, 2013, 21:56
Цитировать
... поконтачить и предложить кое-какие работы ...
Ну что, вышел этот паренёк на контакт али нет?!?!?
Это была попытка переманить на свою сторону или просто "выскочку" "поставить на место", сбив его с толку  ???
Ладно, проехали  :D ...
Все изменения:
Цитировать
- Добавлена возможность создать словарь из текстового файла со
словами;
- Добавлена возможность выбора путей к файлу свойств, файлу статистики, файлу словаря;
- Исправлена фатальная ошибка при вводе слов в сетку, без координат слов;       
- Добавлена поддержка файла кроссворда формата OpenKlest 1.1;
- Добавлено сохранение положений панелей инструментов при выходе из программы;      
- Добавлены новые классы: TCell, TGrid и tfileoptions;
- Добавлена возможность удалённого расположения файла свойств;
- В свойства игры добавлены кнопки "Сбросить" и "Восстановить умолчания";
- Изменены ссылки баг-трекера и git;
- Добавлена возможность разворачивания на весь экран окон статистики и руководства пользователя;
- Название программы и номер версии вынесены в отдельный заголовочный файл;
Новая версия 1.2.3 (http://sourceforge.net/projects/klest-crossword/files/1.2.3/)
Мной было принято решение о прекращении сборок в linux-пакеты в пользу простоты установки, оформив всё в виде мастера-установщика как в ОС Оффтопик. В связи с замедлением процесса разработки прошу давать советы на крайне необходимые функции и указания на исправление критических ошибок.

Благодарю!