![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
xwicked |
![]() ![]()
Сообщение
#1
|
![]() Студент ![]() Группа: Участник Сообщений: 66 Регистрация: 2.8.2011 Из: Старый Оскол Пользователь №: 2781 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
![]() Здравствуйте! Есть одна программа для создания кроссвордов. Она состоит из двух частей: создание и отгадывание. Прошу её код хорошо покритиковать. Для остальных, чтобы могли посмотреть на её работу, дам ссылки на бинарники 32-бит: создание, отгадывание. Qt-4.5.3. Проекты OpenSource под GPLv2. Ссылки на SourceForge.net - создание, отгадывание. Это мой первый код на C++(Qt). Жду комментариев ![]() Добавлю небольшое описание: Сетка кроссворда представлена обычной таблицей TableCrosswordEdit(QTableWidget), слова загружаются в список слов ListWord(QStringList), толкования(вопросы) находятся в списке вопросов ListQuestions(QListWidget). Структура файла - динамическая. Когда писал программы на Delphi - использовал статику - расходовалось лишнее дисковое пространство . XWC: Пароль, количество строк, количество столбцов, ширина(высота) ячейки таблицы, шрифт, структура таблицы(w + 1(x) - белая ячейка, b + 1( c ) - чёрная), строка с данными CrosswordData(QString).
CrosswordData: цикл по количеству слов(q, QChar(номер слова), QChar(координата строки в сетке), QChar(координата столбца в сетке), направление слова в сетке), цикл по количеству слов(W, QChar(номер слова), QChar(длина слова), само слово), цикл по количеству вопросов(Q, QChar(номер вопроса), QChar(длина вопроса), сам вопрос).
Шаблон кроссворда(XWTPL) таже структура, но без пароля и без CrosswordData. Состояние сохранения(tmpcross): цикл по количеству слов(W, QChar(номер слова), QChar(длина слова), само слово). |
|
|
ViGOur |
![]()
Сообщение
#2
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: ![]() ![]() ![]() |
у нас на сайте, есть раздел исходники, можешь добавить туда.
![]() нцужно просто зайти залогинившись на форуме на сам crossplatform.ru и все увидишь. |
|
|
xwicked |
![]() ![]()
Сообщение
#3
|
![]() Студент ![]() Группа: Участник Сообщений: 66 Регистрация: 2.8.2011 Из: Старый Оскол Пользователь №: 2781 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
xwicked |
![]() ![]()
Сообщение
#4
|
![]() Студент ![]() Группа: Участник Сообщений: 66 Регистрация: 2.8.2011 Из: Старый Оскол Пользователь №: 2781 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Продолжаем знакомиться с исходником. Профессиональный кроссворд, версии 0.1.4 - это объединение двух предыдущих: создателя и отгадывателя, с последующей доработкой.
Изменения: - Добавлена возможность автоматического создания сетки кроссворда(бета-версия). - Добавлена возможность автоматического составления кроссворда(выбор слов из словаря). Первая бета-версия. - Присутствуют обе возможности(создание и отгадывыание). Отмечу, что выбор слов происходит в один проход и могут быть пропуски слов в сетке, после составления кроссворда. Исходный код + сборки(0.1.4) Отдельный проект на SourceForge.net - Клёст-кроссворд В Клёст-кроссворде нет возможности сохранять пароль, в то время как в Crossword editor эта возможность есть. Проекты были разделены для большего удобства разработки. P.S. Профессиональный кроссворд 0.1.7 = Клёст-кроссворд 0.1.7 ![]() |
|
|
xwicked |
![]() ![]()
Сообщение
#5
|
![]() Студент ![]() Группа: Участник Сообщений: 66 Регистрация: 2.8.2011 Из: Старый Оскол Пользователь №: 2781 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Следующая версия программы - 0.1.5. Исходный код + сборки.
Изменилась функция составления кроссворда, которая теперь позволяет заполнить всю сетку кроссворда словами. |
|
|
registr |
![]()
Сообщение
#6
|
Участник ![]() ![]() Группа: Участник Сообщений: 115 Регистрация: 16.11.2009 Пользователь №: 1234 Спасибо сказали: 8 раз(а) Репутация: ![]() ![]() ![]() |
Попробуй рассказать об игре на http://www.gamedev.ru/projects/forum/ Будет дополнительная реклама и возможно какие-нибудь советы и пожелания. Ну и удачи с проектом
![]() |
|
|
xwicked |
![]() ![]()
Сообщение
#7
|
![]() Студент ![]() Группа: Участник Сообщений: 66 Регистрация: 2.8.2011 Из: Старый Оскол Пользователь №: 2781 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Попробуй рассказать об игре на http://www.gamedev.ru/projects/forum/ Будет дополнительная реклама и возможно какие-нибудь советы и пожелания. Ну и удачи с проектом Благодарю, посмотрю.![]() ------------------------------------- В новой версии 0.1.6 - исходник + сборки, добавлен экспорт кроссворда в изображения следующих растровых графических форматов: JPG, JPEG, BMP, TIFF, PNG, XPM, XBM, PPM + несколько других исправлений. |
|
|
xwicked |
![]() ![]()
Сообщение
#8
|
![]() Студент ![]() Группа: Участник Сообщений: 66 Регистрация: 2.8.2011 Из: Старый Оскол Пользователь №: 2781 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
А вот и новая версия 0.1.7. Изучаем исходный код + сборки.
Что изменено: Цитата - Временное название "Профессиональный кроссворд" изменено на "Клёст-кроссворд".
- При вводе слова в кроссворд, производится проверка на количество введённых букв в поле "Введите слово". - В свойствах таблицы кроссворда отключена возможность ввода букв, непосредственно в ячейку, минуя поле "Введите слово". - Изменены цветовые стили некоторых компонентов. - В строку состояния добавлен компонент, отображающий количество букв. - Добавлена проверка состояния сохранения изменений, произведённые в кроссворде, при выходе, используя меню "Кроссворд->Выход". |
|
|
xwicked |
![]() ![]()
Сообщение
#9
|
![]() Студент ![]() Группа: Участник Сообщений: 66 Регистрация: 2.8.2011 Из: Старый Оскол Пользователь №: 2781 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Если у кого-нибудь будет желание свою изменённую версию кроссворда далее распространять, то для этой цели я подготовил спекфайл для сборки программы в дистрибутиве ОС Linux, основанного на RPM-пакетах.
Также прошу найти в нём ошибки: Цитата Summary: Qt program for professional creating and easy guessing the classic crossword puzzles. Специальный архив версии 0.1.7.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 Устанавливаем дополнительный пакет rpm-build и собираем командой в консоли: Цитата $rpmbuild -bb /home/username/RPM/SPECS/klest-crossword-0.1.7-alt.spec
|
|
|
xwicked |
![]() ![]()
Сообщение
#10
|
![]() Студент ![]() Группа: Участник Сообщений: 66 Регистрация: 2.8.2011 Из: Старый Оскол Пользователь №: 2781 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Продолжение: 0.1.8. Исходник + сборки.
Изменения: Цитата - Изменился алгоритм выбора слов из словаря(бета 3), с небольшой оптимизацией;
- Исправлена ошибка при экспорте кроссворда в изображение; - Изменилось автоматическое переключение между направлением слов, на ручное - щелчком правой кнопки мыши. |
|
|
xwicked |
![]() ![]()
Сообщение
#11
|
![]() Студент ![]() Группа: Участник Сообщений: 66 Регистрация: 2.8.2011 Из: Старый Оскол Пользователь №: 2781 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Здравствуйте!
Хочу порадовать Вас тем, что я сделал дополнительный архив исходного кода, для сборки программы в ОС 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. Исходный код + сборки Что нового: Цитата - Исправлена фатальная ошибка, возникающая при отсутствии словаря.
- Исправлена фатальная ошибка, возникающая когда заканчиваются слова в словаре. - Добавлена возможность несимметричного ручного редактирования сетки кроссворда. - Изменён режим работы программы по умолчанию на режим просмотра. |
|
|
xwicked |
![]() ![]()
Сообщение
#12
|
![]() Студент ![]() Группа: Участник Сообщений: 66 Регистрация: 2.8.2011 Из: Старый Оскол Пользователь №: 2781 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Следующая версия = 0.2.0.
Исходный код + сборки: 0.2.0. Важное изменение: добавление значков Oxygen. Ещё добавлены 2-а новых словаря: русский на 31 000 слов и английский на 41 000 слов. Теперь программа выглядит вот так - ![]() Произведённые изменения: Цитата - Добавлены значки "Oxygen", распространяемые по лицензии GNU GPL;
- Исправлена ошибка экспорта кроссворда в изображение форматов JPG, JPEG, TIFF; - Добавлена возможность выбора словаря для составления кроссворда. Возможные варианты: русский и английский; - Изменена стандартная панель - добавлены несколько новых действий, исправлены ошибки; - Изменён формат файла свойств программы, в сторону более простого добавления в него будущих свойств. |
|
|
Алексей1153 |
![]()
Сообщение
#13
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2943 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
xwicked,
Цитата Структура файла - динамическая. Цитата Изменён формат файла свойств программы, в сторону более простого добавления в него будущих свойств. я, даже не уточняя формат файла, сразу советую перейти к XML ![]() |
|
|
xwicked |
![]() ![]()
Сообщение
#14
|
![]() Студент ![]() Группа: Участник Сообщений: 66 Регистрация: 2.8.2011 Из: Старый Оскол Пользователь №: 2781 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
...я, даже не уточняя формат файла, сразу советую перейти к XML Все форматы файлов двоичные. От XML я отказался и в будущем не буду его использовать вообще. ![]() Аргументы: 1. Громоздкость самого формата; 2. Переносимость моего двоичного формата созданных файлов; 3. Увеличение размера Win и Mac сборок программы, за счёт добавления лишней библиотеки. Думаю достаточно ![]() |
|
|
Алексей1153 |
![]()
Сообщение
#15
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2943 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
xwicked, громоздкость ? Да ерунда. Имена неосновных узлов можно задавать покороче. Всё остальное хорошо сожмётся архиватором
Минусы двоичных форматов: 1. громоздкость самого формата. Давай, сохрани туда вектор или мапу ![]() 2. Непереносимость и трудность переходов между версиями. Байт влево , байт вправо - расстрел на месте. Также нужно постоянно помнить и трястись над тем, чтобы (см п1) содержимое структур можно было бы побайтово копировать, а также чтобы не менялся порядок сохранения данных 3. за счёт чего увеличение ? Например, я сохраняю XML "вручную" (мне так показалось удобнее), а парсю готовым классом с открытыми исходниками. Ну добавит это всё от силы пару килобайт в модуль. ЗАТО - забудешь про пункт 2 - экономия кучи нервов и времени - вложенность: можно для каждого класса определить функцию, которая дописывает в поток кусочек с XML-узлом класса. - отладка. Попробуешь - поймёшь. Видно визуально, правится прямо в студии (ну это я про себя - у меня студия), она и UTF8 понимает, и форматирование расставит. - непринуждённая расширяемость. Добавляй, что хочешь, удаляй, что хочешь. лично я раньше сохранял в двоичные файлы, но когда узнал про XML - теперь никогда такой хренью не страдаю ))) xwicked, ох, а как весело поддерживать программы, где программист вовсю сохранял структурированные данные в двоичные файлы... Я вот сейчас такой проект веду. Как внезапно начинало рушиться - а поразбираешься, вот она, причина. Поменял местами переменные в структуре, а он, гат такой, в двоичные файлы любит записывать, в результате записывается указатель (и читается тоже). Не поленился, потратил два дня на переделывание в XML - теперь полёт нормальный ) Ещё один интересный момент: как думаешь, что сохранится в файл, если запишешь туда переменную типа B ? Раскрывающийся текст
Сообщение отредактировал Алексей1153 - 23.8.2011, 9:04 |
|
|
Litkevich Yuriy |
![]()
Сообщение
#16
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
1. громоздкость самого формата. Давай, сохрани туда вектор или мапу это элементарно, по сравнению с XMLНепереносимость и трудность переходов между версиями. Байт влево , байт вправо - расстрел на месте. это смотря как опишешь формат.Ещё один интересный момент: как думаешь, что сохранится в файл, если запишешь туда переменную типа B ? приведи тотже пример только с XML
|
|
|
Алексей1153 |
![]()
Сообщение
#17
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2943 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
Цитата это элементарно, по сравнению с XML сравнимо. Плюс в дальнейшей совместимости и поддержке, а также в человекочитаемости контента Цитата это смотря как опишешь формат. в том и прелесть, что в XML не надо думать, как был описан формат. Главное - не упадёт ничего Цитата приведи тотже пример только с XML не понял вопроса Сообщение отредактировал Алексей1153 - 23.8.2011, 9:55 |
|
|
xwicked |
![]() ![]()
Сообщение
#18
|
![]() Студент ![]() Группа: Участник Сообщений: 66 Регистрация: 2.8.2011 Из: Старый Оскол Пользователь №: 2781 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
xwicked, громоздкость ? Да ерунда. Имена неосновных узлов можно задавать покороче. Всё остальное хорошо сожмётся архиватором Вы немножко не осведомлены в вопросе даваемого Вами совета: Минусы двоичных форматов: 1. громоздкость самого формата. Давай, сохрани туда вектор или мапу ![]() 2. Непереносимость и трудность переходов между версиями. Байт влево , байт вправо - расстрел на месте. Также нужно постоянно помнить и трястись над тем, чтобы (см п1) содержимое структур можно было бы побайтово копировать, а также чтобы не менялся порядок сохранения данных 3. за счёт чего увеличение ? Например, я сохраняю XML "вручную" (мне так показалось удобнее), а парсю готовым классом с открытыми исходниками. Ну добавит это всё от силы пару килобайт в модуль. ... 1 Цитата # Размер XML-документа существенно больше бинарного представления тех же данных. В грубых оценках величину этого фактора принимают за 1 порядок (в 10 раз). # Размер XML-документа существенно больше, чем документа в альтернативных текстовых форматах передачи данных (например JSON[4], YAML, Protocol Buffers) и особенно в форматах данных, оптимизированных для конкретного случая использования. # Избыточность XML может повлиять на эффективность приложения. Возрастает стоимость хранения, обработки и передачи данных. # XML содержит метаданные (об именах полей, классов, вложенности структур), и одновременно XML позиционируется как язык взаимодействия открытых систем. При передаче между системами большого количества объектов одного типа (одной структуры), передавать метаданные повторно нет смысла, хотя они содержатся в каждом экземпляре XML описания. # Для большого количества задач не нужна вся мощь синтаксиса XML и можно использовать значительно более простые и производительные решения. Ссылка на Википедию. Не привожу статьи из журналов, где многие думают о пересмотре стандарта XML и как от него отказываются. 2. Это если речь идёт о структурах и о стандартном C++. Я же сохраняю типы QStringList, QFont и подобные, их сможет загрузить только Qt, который изначально переносимый. 3. Вручную это делать глупо, когда есть интерфейсы DOM и SAX. Увеличение за счёт добавление библиотеки QtXml + библиотека для сжатия этого XML. ЗЫ: Всё просто ![]() Сообщение отредактировал xwicked - 23.8.2011, 10:17 |
|
|
Алексей1153 |
![]()
Сообщение
#19
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2943 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
xwicked, я прекрасно осведомлён о содержимом и устройстве простейшего XML, который использую очень часто
![]() Я не навязываю. К этому сам потом придёшь, когда будешь зарабатывать на жизнь программированием. XML против бинарников - это экономия сил, времени и , соответственно, денег. Я советую именно потому, что всё это прошёл и знаю разницу. Есть выбор: 1) бинарник + малый объём + много гемора при отладке и совместимости версий 2) XML + чуть побольше объём + удобная отладка, поддержка и совместимость А рост объёма сейчас мало кого волнует - ресурсы машин растут несоизмеримо быстрее. Цитата # Размер XML-документа существенно больше бинарного представления тех же данных. В грубых оценках величину этого фактора принимают за 1 порядок (в 10 раз). # Размер XML-документа существенно больше, чем документа в альтернативных текстовых форматах передачи данных (например JSON[4], YAML, Protocol Buffers) и особенно в форматах данных, оптимизированных для конкретного случая использования. # Избыточность XML может повлиять на эффективность приложения. Возрастает стоимость хранения, обработки и передачи данных. # XML содержит метаданные (об именах полей, классов, вложенности структур), и одновременно XML позиционируется как язык взаимодействия открытых систем. При передаче между системами большого количества объектов одного типа (одной структуры), передавать метаданные повторно нет смысла, хотя они содержатся в каждом экземпляре XML описания. # Для большого количества задач не нужна вся мощь синтаксиса XML и можно использовать значительно более простые и производительные решения. глупость. Никто не заставляет постоянно читать и записывать - загрузи в память в любом привычном виде и работай. XML - это хранилище, совместимое во времени с другими версиями программы и между запусками. Метаданные - архиватор спасёт от избыточности . Цитата Вручную это делать глупо зато эффективно и не делает Цитата 3. Увеличение размера Win и Mac сборок программы, за счёт добавления лишней библиотеки. ![]() В общем-то , не хотел "зафлуживать" тему , я дал совет - тебе решать. Я думал, плюсы и так очевидны xwicked, но всёж-таки, интересно, каков у тебя ответ на вопрос Цитата B b; int i=sizeof(B ); //сколько ? void* p=&b; //что там ? и какова будет реакция деструктора переменной при попытке считывания из файла ![]() Сообщение отредактировал Алексей1153 - 23.8.2011, 11:17 |
|
|
xwicked |
![]() ![]()
Сообщение
#20
|
![]() Студент ![]() Группа: Участник Сообщений: 66 Регистрация: 2.8.2011 Из: Старый Оскол Пользователь №: 2781 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
Алексей1153 |
![]()
Сообщение
#21
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2943 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
xwicked, осторожно! Кроссворды тебя погубят
![]() |
|
|
xwicked |
![]() ![]()
Сообщение
#22
|
![]() Студент ![]() Группа: Участник Сообщений: 66 Регистрация: 2.8.2011 Из: Старый Оскол Пользователь №: 2781 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Программа доведена до стабильности. Релиз 0.2.1. Исходник + сборки.
Все изменения: Цитата - Исправлена фатальная ошибка, возникающая при повторном автоматическом выборе слов, после автоматического создания сетки;
- Исправлена ошибка алгоритма выбора слов из словаря; - Исправлена ошибка автоматической вставки слов в сетку кроссворда; - Исправлена ошибка неправильного ввода слова в сетку кроссворда, при повторных нажатиях на кнопку "ОК"; - Исправлена ошибка экспорта в изображения, при ручном создании кроссворда; - Исправлена ошибка передачи текущего шрифта в диалог выбора шрифта, при его открытии; - Оптимизирован алгоритм автоматического создания сетки кроссворда; - Оптимизирован алгоритм автоматического выбора слов из словаря; - Оптимизированы алгоритмы: создания, изменения, сохранения, открытия, закрытия кроссворда; - Изменён формат файла кроссворда и формат файла сохранения состояния неполностью отгаданного кроссворда; - Для повышения интереса к игровому процессу, после проверки правильности отгадывания, кроссворд закрывается. |
|
|
xwicked |
![]() ![]()
Сообщение
#23
|
![]() Студент ![]() Группа: Участник Сообщений: 66 Регистрация: 2.8.2011 Из: Старый Оскол Пользователь №: 2781 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
А в новой версии 0.2.2 я реализовал импорт кроссворда из текстового формата AcrossLite первой версии. Вторая версия будет загружаться, но за исключением дополнительной головоломки.
Что нового: Цитата - Появилась возможность импортировать кроссворд, из текстового формата AcrossLite; Дабы быть уверенным в том, что файлы не побились, при закачке, я добавил текстовик с md5-контрольными суммами.- Исправлена фатальная ошибка, не позволяющая создавать кроссворды больше чем 18х18; - В меню "Помощь" добавились пункты: "Пожертвовать" и "Получить исходный код"; - Сохранение состояния неполностью отгаданного кроссворда AcrossLite(TXT) имеет своё расширение, при оставленной той же структуре файла; - В окне о программе все ссылки изменили свой цвет на синий, для удобства поиска; - Появилась возможность вводить слово в сетку кроссворда, нажатием на клавишу "Ввод". Git-репозиторий: Цитата git://klest-crossword.git.sourceforge.net/gitroot/klest-crossword/klest-crossword (read-only)
|
|
|
xwicked |
![]() ![]()
Сообщение
#24
|
![]() Студент ![]() Группа: Участник Сообщений: 66 Регистрация: 2.8.2011 Из: Старый Оскол Пользователь №: 2781 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Здравствуйте!
Цитата - Добавлена возможность полуавтоматического ввода слов из словаря; В новой версии 0.2.7 Появилась возможность печати кроссворда. Хочу обратить особое внимание на тестирование этой функции, так как у меня дома нету принтера. Очень интересно, как ведёт себя печать на разных принтерах под всеми ОС. - Добавлена возможность печати кроссворда; - Добавлены горячие клавишы; - Увеличен максимальный размер кроссворда до 999х999х999(столбцы/строки/размер ячейки); - Во избежании ошибки, теперь после отмены выбора слов нельзя сделать экспорт в изображение; - После отладки, возвращено автоматическое определение направления слов при выделении, убранное в версии 0.1.8; - Добавлена возможность ввода имени игрока; - Добавлена статистика; - Исправлена ошибка неисчезновения пунктов меню автоматизации, в режиме просмотра; - Исправлена ошибка, при ручном вводе слов в кроссворд; - Добавлен пункт меню "Получить техподдержку"; - Некоторые окна теперь не разворачиваются на весь экран по-умолчанию. Изменились также размеры нескольких окон. Полуавтоматический ввод слов позволит создавать тематические кроссворды и задавать различную сложность, при составлении. P.S. Ещё один очень важный момент: версии 0.2.7, 0.2.8 - сборки являются минимальными. То есть, чтобы посмотреть на все функции, необходимо программу собрать из исходника . Это делалось для проверки аудитории пользователей на заинтересованность в программе, путем отправки мне запроса на получение исходного кода. Что было не очень удачной идеей и, с версии 0.2.9, сборки программы уже снова полнофункциональны. Прошу извинить меня за данное неудобство ![]() |
|
|
xwicked |
![]() ![]()
Сообщение
#25
|
![]() Студент ![]() Группа: Участник Сообщений: 66 Регистрация: 2.8.2011 Из: Старый Оскол Пользователь №: 2781 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
В версии 0.2.8 я добавил функции горизонтального и вертикального отражения кроссворда как изображения. Так же добавил инверсию цветов ячеек сетки кроссворда. Но... я не смог быстро придумать функцию обрезания сетки кроссворда, если он, например, получился меньше созданных рамок. Интересует самое простое решение данного вопроса. Благодарю!
Ещё изменения: Цитата - Добавлена возможность рисования сетки, как карандашом;
- Добавлена функция автоматического создания, сохранения и экспорта неограниченного числа кроссвордов из одного шаблона по нажатии одной клавиши, предварительно установив соотвествующие настройки; - Добавлены функции очистки слов, сетки и всего кроссворда; - Добавилось окно "Параметры"; - Выбор словаря перенесён в окно "Параметры"; - Добавлена возможность выбора папки, из которой будут показываться шаблоны, для последующего их использования; - Добавлена возможность задания пути для экспортируемого изображения в окне "Параметры"; - Добавлена возможность задания папки для экспорта вопросов и ответов в окне "Параметры"; |
|
|
Алексей1153 |
![]()
Сообщение
#26
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2943 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
Цитата Но... я не смог быстро придумать функцию обрезания сетки кроссворда, если он, например, получился меньше созданных рамок. две переменные для подсчёта максимальной использованной ширины и высоты int xmax=0; int ymax=0; перебрать все слова и запоминать (вернее - обновлять эти переменные). По итогам станет ясно, какой размер прямоугольника кроссворда нужен |
|
|
Sokoloff |
![]()
Сообщение
#27
|
Участник ![]() ![]() Группа: Участник Сообщений: 237 Регистрация: 1.4.2009 Из: Москва Пользователь №: 654 Спасибо сказали: 50 раз(а) Репутация: ![]() ![]() ![]() |
Появилась возможность печати кроссворда. Хочу обратить особое внимание на тестирование этой функции, так как у меня дома нету принтера. Для отладки печати под виндой можно использовать программу fineprint. Триальная версия добавляет строку внизу страницы, но для тестов это не существенно. В линухе можно настроить виртуальный принтер печатающий в PostScript файл. |
|
|
xwicked |
![]() ![]()
Сообщение
#28
|
![]() Студент ![]() Группа: Участник Сообщений: 66 Регистрация: 2.8.2011 Из: Старый Оскол Пользователь №: 2781 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
... В линухе можно настроить виртуальный принтер печатающий в PostScript файл. Благодарю! Я собственно говоря, так и делал. Без этой возможности печать вообще не появилась бы ![]() ![]() |
|
|
xwicked |
![]() ![]()
Сообщение
#29
|
![]() Студент ![]() Группа: Участник Сообщений: 66 Регистрация: 2.8.2011 Из: Старый Оскол Пользователь №: 2781 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Следующая версия программы 0.2.9. В ней я походу вышел за предел стека
![]() Цитата - Оптимизирован алгоритм выбора слов в 2,5 раза; Экспорт в PDF и PostScript осуществляется достаточно просто: подготавливается HTML-страница и распечатывается на принтере, но печать идёт не на физическое устройство а в файл - Добавлена возможность экспорта кроссворда в файл, форматов: HTML, PDF, PostScript, текстовый формат AcrossLite, OpenKlest(*.ok); - Добавлена возможность поворота кроссворда; - Добавлена возможность автоматического создания и экспорта кроссворда в форматы HTML, PDF, PostScript, текстовый формат AcrossLite, OpenKlest(*.ok); - Добавлена возможность импорта кроссворда в формате OpenKlest(*.ok); ![]() Хотелось бы отметить, что с появлением функции экспорта кроссворда в Across Lite TXT, у программы across lite 2.0 появилась возможность отгадывать не только американские кроссворды, но и классические, правда всё в английском языке. Можете поэксперементировать, ради интереса ![]() |
|
|
xwicked |
![]() ![]()
Сообщение
#30
|
![]() Студент ![]() Группа: Участник Сообщений: 66 Регистрация: 2.8.2011 Из: Старый Оскол Пользователь №: 2781 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Здравствуйте! Как я избавился от переполнения стека:
Если делал больше 50-ти, то отваливался импорт файла и запуск руководства пользователя ![]() Изменил на: Далее введены константы: Что позволило пути в программе менять всего один раз ![]() Введение структуры файла свойств: Скачать 0.3.7. На данный момент это последняя версия, прошу...
|
|
|
Алексей1153 |
![]()
Сообщение
#31
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2943 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
можно немного встряну ))
предлагаю более ООП варианты: с массивом лучше так Раскрывающийся текст
по остальному - глобальные дефайны лучше объединять в класс файл "mydefines.h" Раскрывающийся текст
файл "mydefines.cpp" Раскрывающийся текст
и где-то в прогремме:
ну а по структуре TFileOptions - я уже говорил, что там не так Сообщение отредактировал Алексей1153 - 9.2.2012, 7:44 |
|
|
xwicked |
![]() ![]()
Сообщение
#32
|
![]() Студент ![]() Группа: Участник Сообщений: 66 Регистрация: 2.8.2011 Из: Старый Оскол Пользователь №: 2781 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
можно немного встряну )) Благодарю, вариант enum ee_path_id, enum ee_ext_id я уже сам собирался так оформить. Насчёт остального мне пока квалификации не хватает, чтобы понять, где что предлагаю более ООП варианты: ... ![]() А такой вариант покатит, чтобы switch заменить?
Сообщение отредактировал xwicked - 9.2.2012, 21:49 |
|
|
Алексей1153 |
![]()
Сообщение
#33
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2943 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
>>Насчёт остального мне пока квалификации не хватает, чтобы понять, где что
задавай вопросы, расскажу, что там я сделал А такой вариант покатит, чтобы switch заменить? фиговый вариант ![]() а функция GetPath тоже, наверное, лучше всё же через свич сделать, а не через мап. В данном случае. |
|
|
xwicked |
![]() ![]()
Сообщение
#34
|
![]() Студент ![]() Группа: Участник Сообщений: 66 Регистрация: 2.8.2011 Из: Старый Оскол Пользователь №: 2781 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
Алексей1153 |
![]()
Сообщение
#35
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2943 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
свич - это великолепная штука, когда нужно выбрать одину из циферных констант, сравнивая со значением тестируемой переменной (как в mydefines::GetExt )
работает быстро, так как компилятор строит табличную адресацию, а не перебор множества условий, как можно было бы подумать. То есть, практически вычисляется тот же индекс, по которому берётся адрес перехода для jmp , делается переход. |
|
|
xwicked |
![]() ![]()
Сообщение
#36
|
![]() Студент ![]() Группа: Участник Сообщений: 66 Регистрация: 2.8.2011 Из: Старый Оскол Пользователь №: 2781 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Оптимизация констант:
Экспорт в RTF вместе с изображением: Использовался материал Википедии. Скачать 1.0.0.Цитата Список изменений:
- Повышена безопасность работы игры; - Добавлен экспорт кроссворда в RTF; - Исправлена нумерация вопросов кроссворда при печати и экспорте; - Оптимизирована скорость отображения статистики; - Изменён цветовой стиль сетки кроссворда, уменьшен контраст цветов; |
|
|
xwicked |
![]() ![]()
Сообщение
#37
|
![]() Студент ![]() Группа: Участник Сообщений: 66 Регистрация: 2.8.2011 Из: Старый Оскол Пользователь №: 2781 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Все изменения:
Цитата - Добавлена возможность создать словарь из текстового файла со словами; - Добавлена возможность выбора путей к файлу свойств, файлу статистики, файлу словаря; - Исправлена фатальная ошибка при вводе слов в сетку, без координат слов; - Добавлена поддержка файла кроссворда формата OpenKlest 1.1; - Добавлено сохранение положений панелей инструментов при выходе из программы; - Добавлены новые классы: TCell, TGrid и tfileoptions; - Добавлена возможность удалённого расположения файла свойств; - В свойства игры добавлены кнопки "Сбросить" и "Восстановить умолчания"; - Изменены ссылки баг-трекера и git; - Добавлена возможность разворачивания на весь экран окон статистики и руководства пользователя; - Название программы и номер версии вынесены в отдельный заголовочный файл; Новая версия 1.2.3 Мной было принято решение о прекращении сборок в linux-пакеты в пользу простоты установки, оформив всё в виде мастера-установщика как в ОС Оффтопик. В связи с замедлением процесса разработки прошу давать советы на крайне необходимые функции и указания на исправление критических ошибок. Благодарю! |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 5.5.2025, 4:59 |