我目前正在用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-----------
答案 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#中,所以对其他任何人来说都不应该太糟糕。