hemantwithu Ответов: 2

Кросс-Word приложение в C#?


Привет,

Может ли кто-нибудь помочь мне в создании кроссвордного приложения? Я не уверен в том, как работает кросс-словесное приложение. Замечания также приветствуются.

Спасибо

2 Ответов

Рейтинг:
19

Keith Barrow

Если я правильно вас понял, то предлагаю вам взглянуть на это http://en.wikipedia.org/wiki/Crossword[^] во-первых, чтобы увидеть различные типы сетки и как работает кроссворд.

Заставить это работать потенциально сложно (зависит от того, насколько глубоко вам нужно идти), но, как и все остальное, разбейте проблему, начните с малого и постройте свое решение шаг за шагом. Один вариант для начала нужно сделать следующее (предполагая, что вы не используете шведскую сетку):


  1. Создать абстрактный Square Класс
  2. Создать BlackSquare Класс для черных квадратов
  3. Создать LetteredSquare класс для квадратов "ответа" должен иметь свойство char для правильного символа и nullable interger для номера подсказки
  4. Создать Grid Класс, который имеет двумерный массив Square базовый класс.
  5. Создайте класс clue, который содержит ClueNumber, Direction, Clue текст и Answer текст (возможно, массив символов, а не строка) Ответ Length


Вам нужно решить, хотите ли вы сгенерировать сетку и затем подогнать результаты, или добавить результаты и подогнать сетку к ним, или позволить сеттеру [человеку] сделать это. Если последнее-то вариант самый простой.
Есть несколько вещей, которые вы могли бы рассмотреть:

  • Вам нужно убедиться, что там, где ответы пересекаются, символ в квадрате одинаков для обоих
  • Если ответ уже был введен и он пересекает другой, было бы хорошо заполнить это значение в символьном значении, чтобы помочь составителю кроссворда
  • Если вы сначала создадите сетку, вы можете предоставить (или позволить сеттеру сначала создать черные квадраты), вы можете назначить значения подсказок и создать пустые ответы для заполнения сеттером

Если вы хотите автоматически генерировать подсказки, то у вас есть реальные проблемы!


Dalek Dave

Он также должен иметь вращательную симметрию.

Keith Barrow

Хорошая мысль! В интересах ОП это легко достигается, если убедиться, что Григ может быть равномерно распределен (иметь четное количество квадратов с каждой стороны для практических целей и является квадратным). Поскольку черные заполнены, вам просто нужно повернуть положение для каждого оставшегося квадранта.

Sergey Alexandrovich Kryukov

Пожалуйста, смотрите мой комментарий ниже.
--СА

Sergey Alexandrovich Kryukov

Я не уверен в одном пункте: может быть, представление структуры данных в виде квадрата не самое лучшее. Лучше это будет концептуально бесконечное поле с динамически выделяемыми горизонтальными или вертикальными линейными объектами. Черный квадрат-это просто украшение, которое нужно добавить (или не поздно). Некоторые кроссворды используют форму, очень далекую от квадрата или прямоугольника. Кроме того, для построения оптимальных вариантов пересечения слов бесконечное поле подхода может обеспечить большую свободу.
--СА

Sergey Alexandrovich Kryukov

Тем не менее, мои 5 за эти советы.
--СА

Рейтинг:
0

Abhinav S

Прямого решения вашего вопроса не существует.
Возможно, вы захотите взглянуть на алгоритмы, лежащие в основе некоторых из них. эти[^].