我一直在开发一个程序,该程序将从命令行运行,该程序读取包含单词的文件,然后从这些单词生成 WordSearch 游戏。
我已经定义了几个函数,但我遇到的问题是 word_place 函数。这个函数应该采用我最初用句点填充的网格或二维数组:
width = 20
height = 20
grid = [['.' for i in range(0,width)] for j in range(0,height)]
并将单词随机地向后或向前、垂直、水平或对角放置,并随机放置在符合拼图宽度和高度的位置。
def word_place(word,grid):
global width, height
word = random.choice([word,word[::-1]])
direction = random.choice([[1,0],[0,1],[1,1]])
xsize = width if direction[0] == 0 else width - len(word)
ysize = height if direction[1] == 0 else height - len(word)
x = random.randrange(0,xsize)
y = random.randrange(0,ysize)
for i in range(0,len(word)):
grid[y + direction[1]*i][x + direction[0]*i] = word[i]
return grid
正如您可能看到的那样,如果单词碰巧相交,那么最后放置的单词将覆盖它相交的单词的字符。
我想要程序做的是检查我的二维数组的每个“坐标”。
例如,假设单词的第一个字母恰好是 at grid[5][8]
,它应该检查该位置是否有句点。如果是这样,那么它将检查下一个方块,依此类推。
基本上,如果我要放置的单词的字母是==
a.
或索引中已经存在的任何字母,则可以放置,否则它应该废弃它,并给单词一个新的起始坐标并重试。
抱歉,如果这很长或不清楚。如果您需要更多信息,请告诉我!