Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.01.2014, 03:48   #1
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию Кроссворд. Измененный алгоритм, оцените

Здравствуйте) Опять я пишу по поводу кроссворда, наверное вы уже видели мой алгоритм глупого сравнения каждого edit с образцом, код был громоздкий, вот моя <<тема>>, а теперь посмотрите, пожалуйста, вложения в этой теме, как вам мой новый алгоритм? Я смог оптимизировать его на столько, на сколько догадался, и на сколько опыта хватила, в принципе все так же просто, но кода меньше, думаю многие одобрят, так как алгоритм проверки не "слизал", а сам придумал, ну да ладно, смотрим, комментируем, одобряем, кстати, что в кроссворде еще можно улучшить? Кстати, всего букв 141, а слов 24, помогите составить верную пропорцию, чтоб по буквам определяла более точное среднее количество слов, или у меня пропорция в принципе тоже не плоха?
Вложения
Тип файла: rar кроссворд по английскому.rar (313.6 Кб, 21 просмотров)
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 25.01.2014, 19:13   #2
doktor255
Заблокирован
 
Регистрация: 31.03.2011
Сообщений: 976
По умолчанию

Посмотрел методику исполнения. Не плохо. Советую рассмотреть такой алгоритм.
Во первых убираем все ячейки Edit с формы, и объявляем массив эдитов. Определяем размер кроссворда. К примеру 100 на 100 ячеек. Создаём шифрованный файл вопросов под каждый кроссворд примерно такого содержания.
10,10,1,вопрос,ответ
20,30,0,вопрос,ответ
где первое число, номер ячейки по оси X, второе число номер ячейки по оси Y, третье число - горизонталь/вертикаль. Ну а дальше понятно. Пишем парсер этой таблицы, который будет инициировать Edit-ы массива Edit-ов, и располагать их согласно координатам X,Y количеством равным длине ответа на вопрос. Что это даёт? Это в первую очередь даёт возможность писать десятки кроссвордов, не вмешиваясь в бинарник программы. Естественно это уже будет новый проект. Так сказать Beta3. Могу оказать помощь на добровольном начале, так как сам интересуюсь различными логическими играми.
doktor255 вне форума Ответить с цитированием
Старый 25.01.2014, 19:13   #3
doktor255
Заблокирован
 
Регистрация: 31.03.2011
Сообщений: 976
По умолчанию

Del Del Del
doktor255 вне форума Ответить с цитированием
Старый 25.01.2014, 22:34   #4
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

хм, не плохо придумали динамически создавать массив эдитов и раскидывать по форме, но боюсь с моими знаниями я до этого еще не скоро дойду) ну иногда накатывает озарение, так что можно попробовать)) кстати, люди добрые, гляньте процедуру закрытия форм1, на этапе тестирования получилось так, что программа отказалась закрываться после нажатия на кнопку проверить, а затем на крестик, больше такой ошибки не возникло, но все же, потестите, пожалуйста, а то запара полная
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 25.01.2014, 23:30   #5
doktor255
Заблокирован
 
Регистрация: 31.03.2011
Сообщений: 976
По умолчанию

Цитата:
Сообщение от Алексей_2012 Посмотреть сообщение
но боюсь с моими знаниями я до этого еще не скоро дойду
Я же написал, могу оказать помощь. Читай внимательно. И кстати Edit, это баловство. Гораздо интереснее рисовать на Canvas.
doktor255 вне форума Ответить с цитированием
Старый 25.01.2014, 23:55   #6
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

о, до этого мне еще дальше) рисовал только простенький редактор, и то на практической работе с готовым кодом)) Ладно, но думаю не очень будет списываться
на форуме по данной теме, кстати, нашел баг, гляньте пожалуйста, заполните operatingsystem (вопрос1), нажмите проверить, затем нажмите No, и все, при нажатии на крестик программа отказывается закрываться(((
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 26.01.2014, 00:13   #7
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
Посмотрел методику исполнения. Не плохо. Советую рассмотреть такой алгоритм.
Во первых убираем все ячейки Edit с формы, и объявляем массив эдитов. Определяем размер кроссворда. К примеру 100 на 100 ячеек. Создаём шифрованный файл вопросов под каждый кроссворд примерно такого содержания.
10,10,1,вопрос,ответ
20,30,0,вопрос,ответ
где первое число, номер ячейки по оси X, второе число номер ячейки по оси Y, третье число - горизонталь/вертикаль. Ну а дальше понятно. Пишем парсер этой таблицы, который будет инициировать Edit-ы массива Edit-ов, и располагать их согласно координатам X,Y количеством равным длине ответа на вопрос. Что это даёт? Это в первую очередь даёт возможность писать десятки кроссвордов, не вмешиваясь в бинарник программы. Естественно это уже будет новый проект. Так сказать Beta3. Могу оказать помощь на добровольном начале, так как сам интересуюсь различными логическими играми.
Тогда уж edit'ы это просто мусор.
Мало того, что создаете тонну GDI объектов которые самую малость грузят процессор т.к. в перемешку перекрывают друг-друга из-за надобности видеть кроссворд без мерцания и т.д. и т.п., так ещё и в возможностях себя же этим и ограничили. Очень надо бесить юзера вводить буковки по-очереди, в каждый edit по один штука.
Почему бы не рисовать кроссворд самому? И простор больше и возможности.
Человек_Борща вне форума Ответить с цитированием
Старый 26.01.2014, 00:20   #8
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

Проблема в алгоритмах) придумать то конечно можно, но всегда будут какие-то недостатки, и другой бред, потом в итоге алгоритм заброшен, время убито, программист негодует) так что лучше делать так, как знаешь (если работа имеет временные рамки, а если нет, то можно и помучить голову новым алгоритмом). Поправьте, если не прав)
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 26.01.2014, 02:00   #9
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Малость не правы, есть правильный подход к задаче и есть не правильный.

Наплодив 100500 компонент, которые вообще не предназначены для того чтобы из них кроссворды строить, вы создадите проблемы себе, а пользователи и так разбегутся сами

Дам подсказку) StringGrid, это не компонент windows, рисуется самостоятельно. БОльшая часть там сделана за вас. Осталось только блокировать ненужные ячейки.
Человек_Борща вне форума Ответить с цитированием
Старый 26.01.2014, 09:08   #10
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Алексей_2012, если уж скидываете архив, то прилагайте к нему и экзешник. Мне интересна тема по кроссвордам, но поучаствовать не могу т.к. нет компилятора Делфи. А искать его и устанавливать ради просмотра кода одной програмульки, как то не айс.
Из обсуждений я так и не понял, Ваша программка для разгадывания кроссворда или для составления?
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder

Последний раз редактировалось Smitt&Wesson; 26.01.2014 в 09:13.
Smitt&Wesson вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Японский кроссворд Svеtиk Помощь студентам 2 25.07.2013 01:21
Кроссворд на stringgrid Atoll93 Помощь студентам 1 08.06.2012 14:28
Массив измененный Freeman-des Помощь студентам 6 17.01.2011 10:15
кроссворд Delphi tatiana74 Помощь студентам 6 02.03.2010 15:44