C# 拼字#

C# 拼字#,c#,visual-studio,C#,Visual Studio,我目前正在用C#写一个类似拼字游戏的游戏。我可以让计算机找到使用当前机架可以生成的最高点值单词,但是我不知道如何检查该单词是否“可放置”在15*15游戏板上(2D数组:string[,]) 在默认状态下(板上没有字母),所有元素都设置为0 允许 --------------- -------H------- -------E------- -----FILL------ -------L------- -------O------- --------------- 我如何检查单词是否不正确,例

我目前正在用C#写一个类似拼字游戏的游戏。我可以让计算机找到使用当前机架可以生成的最高点值单词,但是我不知道如何检查该单词是否“可放置”在15*15游戏板上(2D数组: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-----------
---------------
-H-------------
-E-------------

这篇论文来自1988年,描述了一种高效的拼字游戏引擎。它很短,可读性惊人

我在F#项目的基础上学会了如何做到这一点。即使你不知道F#(像我一样),你也会感觉到作者是如何决定这样做的

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

  • 使用
    坐标
    系统查找
    分幅
  • 上填充
    方块
    ,这些方块既可以容纳磁贴(字母),也可以容纳分数信息
  • Tile
    表示一个字母,既在玩家的字母库中,也在棋盘上
  • 移动
    表示玩家字母位置的移动
  • 在坐标和分幅上实现
    IComparable
    ,以简化排序
  • 计算
    运行
    ,表示移动将放置的单词,以计算分数

总的来说,这是一个非常好的开始,让你的头围绕着一个拼字游戏引擎。我能够在不知道F的情况下将大部分代码移植到C中,所以对其他人来说应该不会太糟糕。

我想你必须自己解决这个问题-检查边界并检查现有的字母。这方面没有明显的算法,所以我们需要查看您的代码来告诉您该做什么。但不会那么难。关于边界检查:您是否已经知道这一点,因为您需要查找三个字母的分数平铺等?还有“2D数组:字符串[,]”-每个正方形都有一个字符串?不是一个字符?只是一个建议:如果你不是先看机架上的瓷砖,而是在黑板上确定了一个单词可能出现的所有位置,该怎么办?我意识到这说起来容易做起来难,但用不同的方式思考这个问题可能会让你取得突破。伟大的小发现!作为一名有竞争力的拼字游戏玩家和试图在J2ME中实现它的人,我必须对它进行一次阅读。@Jeff+1,这是一个很好的答案,另外还有一些非常有趣的阅读。谢谢