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