拼字游戏单词放置C#

时间:2011-07-21 12:41:51

标签: c# visual-studio

我目前正在用C#编写类似拼字游戏的游戏。我可以让计算机找到可以使用当前机架进行的最高点值,但是我不知道如何在15 * 15游戏板上检查该单词是否是“可放置的”(2D数组:字符串[,] )。

在默认状态下(板上没有字母),所有元素都设置为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 个答案:

答案 0 :(得分:18)

论文“The worlds fastest Scrabble engine”(PDF),是1988年,描述了一种高效的拼字游戏引擎。它简短且令人惊讶的可读性!

答案 1 :(得分:0)

我根据F#SharpScrabble项目学会了如何做到这一点。即使你不了解F#(和我一样),你也会感觉到作者决定如何做到这一点。

对我来说最重要的事情是:

  • 使用Coordinate系统查找Tiles
  • 使用Board填充Squares可以容纳图块(字母)但也包含评分信息
  • Tile代表一封信,无论是在玩家的信件银行还是在董事会上
  • Move代表玩家的字母位置
  • 在坐标和图块上实施IComparable以简化排序
  • 计算Runs代表移动所代表的单词,以计算分数

总的来说,这是一个非常好的入门,开始围绕Scrabble引擎。我能够在不知道F#舔的情况下将大部分代码移植到C#中,所以对其他任何人来说都不应该太糟糕。