Программа для создания кросвордов - 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"; |
|
|
xwicked |
7.11.2011, 19:16
Сообщение
#2
|
Студент Группа: Участник Сообщений: 66 Регистрация: 2.8.2011 Из: Старый Оскол Пользователь №: 2781 Спасибо сказали: 0 раз(а) Репутация: 0 |
Мне уже указали на некоторые ошибки:
Цитата Описание формата OpenKlest 1.0: Пока такой вариант - потом буду дорабатывать, со словесным указанием занимаемой памяти и диапазона принимаемых значений.
Это двоичный формат файла кроссворда, разработанный так, чтобы было максимально просто сделать его поддержку в других языках программирования, отличных от C++. Он экспортируется средствами чистого C++, без расширяющих возможностей библиотеки Qt. --- //Версия файла cFileBegin array[14] of char := 'OpenKlest-1.0~'; //Количество строк кроссворда lwRowCount: Longword; //Количество столбцов кроссворда lwColumnCount: Longword; //Ширина(Высота) ячейки lwRowHeight: Longword; // Если ячейка чёрная ;(wcCell: WideChar) wcCell = 'b'; // Если ячейка белая ;(wcCell: WideChar) wcCell = 'w'; // Цикл от 0 до lwRowCount //Вложенный цикл от 0 до lwColumnCount wCell: Word := Word(wcCell) + 1; //Количество слов lwWordCount: Longword; //Координата строки расположения слова в сетке кроссворда; //Цикл от 0 до lwWordCount wWordRow: Word; //Координата столбца расположения слова в сетке кроссворда; //Цикл от 0 до lwWordCount wWordColumn: Word; // Если слово вертикальное ;(wcDirection: WideChar) wcDirection = 'v'; // Если слово горизонтальное ;(wcDirection: WideChar) wcDirection = 'h'; //Направление слова в сетке кроссворда; //Цикл от 0 до lwWordCount wWordDirection: Word := Word(wcDirection); //Длина слова в сетке кроссворда; //Цикл от 0 до lwWordCount wWordLength: Word; //Слово ;sWord: string; //Цикл от 0 до lwWordCount cWord: array[Length(sWord)] of char; //Длина вопроса; //Цикл от 0 до lwWordCount wQuestionLength: Word; //Вопрос ;sQuestion: string; //Цикл от 0 до lwWordCount cQuestion: array[Length(sQuestion)] of char; //Метка конца файла cFileEnd: array[10] of char := '~OpenKlest'; |
|
|
Текстовая версия | Сейчас: 23.11.2024, 20:53 |