Вот и созрел четвёртый проект для глаз общественности. Пока выпущено 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";
Как Вам словесное описание и сам формат? Что нужно добавить или изменить? Жду комментариев.
Это двоичный формат файла кроссворда, разработанный так, чтобы было максимально просто сделать его поддержку в других языках программирования, отличных от 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";