我正在为boggle添加方向性,这样用户就可以在棋盘游戏中跟踪他们的路径。我找到了一些代码,可以帮助程序实现对角函数,但我不太确定这些代码是什么意思。如果有人能解释一下下面的函数,那会有很大帮助的。
def valid_direction(x1, y1, x2, y2):
dy = y2 - y1
dx = x2 - x1
if dx == 0:
return dy != 0
elif dy == 0:
return dx != 0
else:
return abs(dx) == abs(dy)我还想让用户输入与16个字母的正方板上的字母有关的坐标。在shell中看起来是这样的:
|w||e||b||e|
|r||t||o||l|
|e||t||a||e|
|i||p||a||a|
Enter coordinate: 输入的坐标存储在path = []中,我已经为它编写了一个函数。我的目标是让函数实际工作,这样用户就会得到多次提示,直到他们输入完一个实际的单词。下面是函数
def validate_path(path):
word = word_from_path(path, board)
if valid_word(word):
# is it value = value from while loop and the rest?
value = word_value(word)
print("Value of {} is {}".format(word, value))
score += value
else:
print("Invalid word")
return validate_path(path)和游戏循环的一部分
while game:
curr_input = input("Enter coordinate: ")
if curr_input == "quit":
print("Your total score is:", score)
game = False
elif curr_input == "done":
validate_path(path) 非常感谢花时间阅读这篇文章的人!
发布于 2020-04-08 09:13:45
函数valid_direction在dy中存储增量y(y坐标的变化),在dx中存储增量x。然后,随后的if语句具有以下逻辑:
如果y坐标没有改变(dy == 0),那么如果返回0,因为坐标是相同的,这是一个无效的移动,否则返回1.
dx == 0 x坐标没有改变(dx == 0),执行与1中相同的操作。除了y和x颠倒。
dy != 0 and dx != 0),那么检查它们是否都改变了相同的绝对量。如果是,则按绝对量进行对角移动,并返回1,否则返回0.我不确定这是否是你想要的Boggle,因为我认为你想要严格相邻的移动(或者直接对角空间的移动),所以检查两个点之间的有效移动将是:
def valid_direction(x1, y1, x2, y2):
dy = y2 - y1
dx = x2 - x1
if dx == 0:
return abs(dy) == 1
elif dy == 0:
return abs(dx) == 1
else:
return abs(dx) == abs(dy) == 1它检查后续移动的坐标是否恰好相差一个。或者,更简洁地说:
def valid_direction(x1, y1, x2, y2):
dy = y2 - y1
dx = x2 - x1
if not dy and not dx:
return 0
return abs(dx) <= 1 and abs(dy) <= 1https://stackoverflow.com/questions/61091523
复制相似问题