Программа для создания кросвордов - Lazarus[Delphi]-версия., [Обсуждение программы и кода] |
Здравствуйте, гость ( Вход | Регистрация )
Программа для создания кросвордов - Lazarus[Delphi]-версия., [Обсуждение программы и кода] |
xwicked |
2.11.2011, 22:49
Сообщение
#1
|
Студент Группа: Участник Сообщений: 66 Регистрация: 2.8.2011 Из: Старый Оскол Пользователь №: 2781 Спасибо сказали: 0 раз(а) Репутация: 0 |
Здравствуйте!
Вот и созрел четвёртый проект для глаз общественности. Пока выпущено 2-е бетаверсии. В них я попытался исправиться с комментариями кода. Комментирую сразу, возможно есть лишнее. Он представляет собой Клёст-кроссворд переписанный на Lazarus так же, не используя ничего нестандартного, во избежании плохой межплатформенной переносимости. Носит кодовое название OpenKlest. Смысл его заключается в создании открытого стандарта файла кроссвордов для всех компиляторов, независимо от платформы или языка. Версия 0.1.1 - есть функция отгадывания кроссворда в формате OpenKlest 1.0(экспортируют Клёст-кроссворд 0.2.9, 0.3.7). Пока только латиница Скрин: Ссылка на SourceForge.net. Код под GNU GPL v2 - OpenSource. Цитата Описание формата OpenKlest 1.0: Как Вам словесное описание и сам формат? Что нужно добавить или изменить? Жду комментариев.
Это двоичный формат файла кроссворда, разработанный так, чтобы было максимально просто сделать его поддержку в других языках программирования, отличных от C++. Он экспортируется средствами чистого C++, без расширяющих возможностей библиотеки Qt. --- //Версия файла char cFileBegin[14] = "OpenKlest-1.0~"; //Количество строк кроссворда uint uiRowCount; //Количество столбцов кроссворда uint uiColumnCount; //Ширина(Высота) ячейки uint uiRowHeight; // Если ячейка чёрная ;QChar qcCell = 'b'; // Если ячейка белая ;QChar qcCell = 'w'; // Цикл от uiRowCount до uiColumnCount ushort usCell = qcCell.unicode() + 1; //Количество слов uint uiWordCount; //Координата строки расположения слова в сетке кроссворда; //Цикл от 0 до uiWordCount ushort usWordRow; //Координата столбца расположения слова в сетке кроссворда; //Цикл от 0 до uiWordCount ushort usWordColumn; // Если слово вертикальное ;QChar qcDirection = 'v'; // Если слово горизонтальное ;QChar qcDirection = 'h'; //Направление слова в сетке кроссворда; //Цикл от 0 до uiWordCount ushort usWordDirection = qcDirection.unicode(); //Длина слова в сетке кроссворда; //Цикл от 0 до uiWordCount ushort usWordLength; //Слово ;string sWord; //Цикл от 0 до uiWordCount char cWord[sWord.length()]; //Длина вопроса; Цикл от 0 до uiWordCount ushort usQuestionLength; //Вопрос ;string sQuestion; //Цикл от 0 до uiWordCount char cQuestion[sQuestion.length()]; //Метка конца файла char cFileEnd[10] = "~OpenKlest"; |
|
|
Алексей1153 |
3.11.2011, 7:43
Сообщение
#2
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
моё мнение прежнее - XML. Абсолютная совместимость с любым языком, простая прозрачная структура, нет геморроя с совместимостью между версиями.
Но если уж хочется гемора, то парочка советов, как его упростить: 1) весь формат побить на структуры, длину каждой структуры хранить перед телом структуры (то есть всегда можно перешагнуть незнакомое место, зная его размер). Сами структуры опознаются по сигнатурам. 2) использовать типы, где явно указано количество бит (int8, int16, int32) |
|
|
Текстовая версия | Сейчас: 27.11.2024, 13:20 |