Размещение слов Эрудит C # - PullRequest
6 голосов
/ 21 июля 2011

Я сейчас пишу игру, похожую на скрэббл, на C #. Я могу заставить компьютер найти слово с наивысшим значением точки, которое может быть получено с использованием текущей стойки, однако я не знаю, как проверить, является ли это слово «Размещаемым» на игровой доске 15 * 15 (2D Array: string [,] ).

В состоянии по умолчанию (без букв на доске) все элементы установлены на 0.

Допускается

---------------
-------H-------
-------E-------
-----FILL------
-------L-------
-------O-------
---------------

Как я могу проверить, не является ли слово, например:

не допускается

 ---------------
 -H-------------
 -E-------------
FILL------------ <-- F is out of bounds
 -L-------------
 -O-------------
 ---------------

не допускается

 ---------------
 -H-------------
 -E-W-----------
 -L-O-----------
 -L-R-----------
 FOLL----------- <-- Fill is overlapping with O
 ---D-----------

Ответы [ 2 ]

18 голосов
/ 21 июля 2011

Статья " Самый быстрый в мире движок Scrabble " (PDF) написана в 1988 году и описывает эффективный движок Scrabble.Он короткий и удивительно читабельный!

0 голосов
/ 18 января 2012

Я научился это делать на основе проекта F # SharpScrabble . Даже если вы не знаете F # (как и я), вы почувствуете, как автор решил это сделать.

Большие вещи для меня были:

  • Использование системы Coordinate для поиска Tiles
  • Заполнение Board с помощью Squares, которое может содержать плитку (букву), но также содержать информацию о счете
  • Tile представляет букву как в банке букв игрока, так и на доске
  • Move, который представляет размещение букв игрока
  • Реализация IComparable для координат и плиток для упрощения сортировки
  • Вычисление Runs, которое представляет слова, которые будет помещать ход, чтобы вычислить оценку

В целом, действительно хороший учебник для начинающих, когда вы начинаете крутить голову вокруг движка Scrabble. Я смог перенести большую часть этого кода в C #, не зная F #, так что это не должно быть ужасно для всех остальных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...