我一直在思考游戏Ruzzle中使用的算法。游戏的目的是找到给定网格中任何单词的存在,单词可以在任何方向上下,上下,左右,左右,上下对角线等匹配。
让我们简单一点。在具有相同匹配约束(方向)的二维网格中查找给定单词。具有最佳时间复杂度的算法是什么?
例如,可以在此网格中找到FOREVER。
H O F E R
L R E T O
S N V O R
P Q T E N
答案 0 :(得分:1)
您可以使用Trie数据结构进一步优化它。一旦用所有英语单词(或不同的语言)填写结构,就可以在O(1)中检查是否需要探索特定的邻居角色。
请注意,此时你交易存储时间:你可能需要更多的RAM来存储整个Trie,但是你会比检查有序的单词列表更快地查询它。
在游戏背后的架构方面,我认为他们使用的是专用服务器,它可以全时存储在数据库新游戏(矩阵)及其可接受单词列表中。在游戏过程中,您的设备会收到一个ID,它会下载矩阵和可接受的单词列表,这足以让您玩游戏。在每个游戏结束时,一切都将被删除,最终得分(只是一个整数)将提交给服务器,服务器将更新您的个人资料。在实际的游戏中还有更多的东西,因为它们还有徽章和统计数据(但这些都是收集的琐碎东西)。请记住,这只是我设计和开发它的方式。
你怎么看?我们能做得更好吗?答案 1 :(得分:-1)
我创建了一个关于在Unity中制作ruzzle游戏机制的课程。请检查出来,你会找到确切的答案:
https://www.udemy.com/word-game-unity/?couponCode=wordgamecourse