Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.
Внимание! Некоторое время письма не доходят до аккаунтов MAIL RU GROUP, не доходят на все почтовые ящики mail.ru, inbox.ru, bk.ru. Пишите им жалобы, чтобы быстрее восстановили получение писем, регистрируйтесь через яндекс почту и gmail, туда письма с активизацией доходят.

Вернуться   Форум программистов > C++ > Qt и кроссплатформенное программирование С/С++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 27.11.2011, 00:55   #21
xwicked
Профессионал
 
Аватар для xwicked
 
Регистрация: 21.03.2010
Адрес: Россия, г. Старый Оскол
Сообщений: 1,270
Репутация: 283

icq: 624801702
skype: labfreetech.org
Лампочка

В версии 0.2.8 я добавил функции горизонтального и вертикального отражения кроссворда как изображения. Так же добавил инверсию цветов ячеек сетки кроссворда. Но... я не смог быстро придумать функцию обрезания сетки кроссворда, если он, например, получился меньше созданных рамок. Интересует самое простое решение данного вопроса. Благодарю!

Ещё изменения:
Цитата:
- Добавлена возможность рисования сетки, как карандашом;
- Добавлена функция автоматического создания, сохранения и экспорта неограниченного числа кроссвордов из одного шаблона по нажатии одной клавиши, предварительно установив соотвествующие настройки;
- Добавлены функции очистки слов, сетки и всего кроссворда;
- Добавилось окно "Параметры";
- Выбор словаря перенесён в окно "Параметры";
- Добавлена возможность выбора папки, из которой будут показываться шаблоны, для последующего их использования;
- Добавлена возможность задания пути для экспортируемого изображения в окне "Параметры";
- Добавлена возможность задания папки для экспорта вопросов и ответов в окне "Параметры";
__________________
Google - лучший помощник программиста.
---
моя лаборатория | мой FaceBook
xwicked вне форума   Ответить с цитированием
Старый 27.11.2011, 01:41   #22
TheIronMan
Заблокирован
 
Регистрация: 23.11.2011
Адрес: Россия
Сообщений: 11
Репутация: 10
По умолчанию Программа для создания кроссвордовобсуждение исходника

Если написано что и для 64 битной версии работает - значит работает, я не раз качал с этого сайта. Решай сам или ждать или качать сейчас весь архикад.
TheIronMan вне форума   Ответить с цитированием
Старый 28.01.2012, 17:13   #23
xwicked
Профессионал
 
Аватар для xwicked
 
Регистрация: 21.03.2010
Адрес: Россия, г. Старый Оскол
Сообщений: 1,270
Репутация: 283

icq: 624801702
skype: labfreetech.org
Лампочка

Следующая версия программы 0.2.9. В ней я походу вышел за предел стека : Ошибку я уже нашёл.

Цитата:
- Оптимизирован алгоритм выбора слов в 2,5 раза;
- Добавлена возможность экспорта кроссворда в файл, форматов: HTML, PDF, PostScript, текстовый формат AcrossLite, OpenKlest(*.ok);
- Добавлена возможность поворота кроссворда;
- Добавлена возможность автоматического создания и экспорта кроссворда в форматы HTML, PDF, PostScript, текстовый формат AcrossLite, OpenKlest(*.ok);
- Добавлена возможность импорта кроссворда в формате OpenKlest(*.ok);
Экспорт в PDF и PostScript осуществляется достаточно просто: подготавливается HTML-страница и распечатывается на принтере, но печать идёт не на физическое устройство а в файл
Код:

    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 появилась возможность отгадывать нетолько американские кроссворды, но и классические, правда всё в английском языке. Можете поэксперементировать, ради интереса
__________________
Google - лучший помощник программиста.
---
моя лаборатория | мой FaceBook
xwicked вне форума   Ответить с цитированием
Старый 08.02.2012, 23:32   #24
xwicked
Профессионал
 
Аватар для xwicked
 
Регистрация: 21.03.2010
Адрес: Россия, г. Старый Оскол
Сообщений: 1,270
Репутация: 283

icq: 624801702
skype: labfreetech.org
Лампочка

Здравствуйте! Как я избавился от переполнения стека:
Код:

ushort usTable[50][50];//Массив сетки кроссворда

Если делал больше 50-ти, то отваливался импорт файла и запуск руководства пользователя
Изменил на:
Код:

ushort **usTable;//Массив сетки кроссворда
...
//Создание двумерного динамического массива
        usTable = new ushort*[TableKlestCrossword->rowCount()];

        for(int i = 0; i < TableKlestCrossword->rowCount(); i++)
            usTable[i] = new ushort[TableKlestCrossword->columnCount()];

Далее введены константы:
Код:

//Определение путей констант, в соответствии с системой
#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:
Код:

        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;
        }

Введение структуры файла свойств:
Код:

//Структура файла свойств программы
struct TFileOptions
{
     bool bModeWork,//Режим работы программы
          bLanguageProgram,//Язык программы
          bStateStandardToolbar,//Состояние показа стандартной панели
          bStateExport,//Состояние экспортирования
          bCurrentDictionary;//Текущий словарь
     QString sModePassword,//Пароль режима
             sPathCrossword,//Путь для кроссвордов
             sPathExport,//Путь для экспорта
             sPathTemplate;//Путь для шаблонов
     int iNumberTimes,//Количество раз
         iTypeExport;//Тип экспорта
};

Скачать 0.3.7. На данный момент это последняя версия, прошу...
__________________
Google - лучший помощник программиста.
---
моя лаборатория | мой FaceBook
xwicked вне форума   Ответить с цитированием
Старый 11.06.2012, 17:17   #25
xwicked
Профессионал
 
Аватар для xwicked
 
Регистрация: 21.03.2010
Адрес: Россия, г. Старый Оскол
Сообщений: 1,270
Репутация: 283

icq: 624801702
skype: labfreetech.org
Хорошо

Оптимизация констант:
Код:

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 вместе с изображением:
Код:

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;
}

Использовался материал Википедии. Скачать 1.0.0.
Цитата:
Список изменений:
- Повышена безопасность работы игры;
- Добавлен экспорт кроссворда в RTF;
- Исправлена нумерация вопросов кроссворда при печати и экспорте;
- Оптимизирована скорость отображения статистики;
- Изменён цветовой стиль сетки кроссворда, уменьшен контраст цветов;
__________________
Google - лучший помощник программиста.
---
моя лаборатория | мой FaceBook
xwicked вне форума   Ответить с цитированием
Старый 06.05.2013, 23:12   #26
xwicked
Профессионал
 
Аватар для xwicked
 
Регистрация: 21.03.2010
Адрес: Россия, г. Старый Оскол
Сообщений: 1,270
Репутация: 283

icq: 624801702
skype: labfreetech.org
Счастье

Все изменения:
Цитата:
- Добавлена возможность создать словарь из текстового файла со
словами;
- Добавлена возможность выбора путей к файлу свойств, файлу статистики, файлу словаря;
- Исправлена фатальная ошибка при вводе слов в сетку, без координат слов;
- Добавлена поддержка файла кроссворда формата OpenKlest 1.1;
- Добавлено сохранение положений панелей инструментов при выходе из программы;
- Добавлены новые классы: TCell, TGrid и tfileoptions;
- Добавлена возможность удалённого расположения файла свойств;
- В свойства игры добавлены кнопки "Сбросить" и "Восстановить умолчания";
- Изменены ссылки баг-трекера и git;
- Добавлена возможность разворачивания на весь экран окон статистики и руководства пользователя;
- Название программы и номер версии вынесены в отдельный заголовочный файл;
Новая версия 1.2.3
Мной было принято решение о прекращении сборок в linux-пакеты в пользу простоты установки, оформив всё в виде мастера-установщика как в ОС Оффтопик. В связи с замедлением процесса разработки прошу давать советы на крайне необходимые функции и указания на исправление критических ошибок.

Благодарю!
__________________
Google - лучший помощник программиста.
---
моя лаборатория | мой FaceBook
xwicked вне форума   Ответить с цитированием
Старый 16.01.2018, 18:38   #27
xwicked
Профессионал
 
Аватар для xwicked
 
Регистрация: 21.03.2010
Адрес: Россия, г. Старый Оскол
Сообщений: 1,270
Репутация: 283

icq: 624801702
skype: labfreetech.org
Подмигивание

Всем привет!
После нескольких лет неудачных попыток я наконец подтвердил и активировал свой PayPal-кошелёк.
Внести пожертвования.
По данной ссылке Вы можете перечислить "лишние"() 100р на счёт проекта. Если у Вас нету PayPal-аккаунта, то Вам необходимо выбрать слева внизу ссылку "Продолжить":
Цитата:
У вас нет счета PayPal?
Используйте кредитную карту или банковский счет (если имеются).
Продолжить
Далее можно будет вписать необходимую сумму в долларах США и отправить деньги с любой карты, вписав реквизиты. Банк пересчитает их по текущему курсу из любой валюты.

Если Вы считаете, что проект для Вас не интересен, то кто знает, может в будущем, при Вашей поддержке я буду писать OpenSource-программу именно для Вас.

Благодарю!
__________________
Google - лучший помощник программиста.
---
моя лаборатория | мой FaceBook
xwicked вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа для создания кроссвордов - Lazarus[Delphi]-версия xwicked Общие вопросы Delphi 3 24.09.2012 21:02
Программа для создания модулей/макетов для КМС LeoN Софт 0 02.12.2010 11:51
Программа для создания меню для сайта iukash Софт 3 06.06.2009 13:10
Логика для Кроссвордов Судоку. С.М.С Свободное общение 7 02.04.2009 16:07


14:35.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru