从原点开始有多少非对角线移动?

时间:2015-08-12 19:34:02

标签: python-3.x math pygame absolute-value

87 76 67 58 49 40 31 22 13  4
77 68 59 50 41 32 23 14  5 -4
69 60 51 42 33 24 15  6 -3-12
61 52 43 34 25 16  7 -2-11-20
53 44 35 26 17  8 -1-10-19-28
45 36 27 18  9  0 -9-18-27-36
37 28 19 10  1 -8-17-26-35-44
29 20 11  2 -7-16-25-34-43-52
21 12  3 -6-15-24-33-42-51-60

我正在使用这个数字网格来定义基于pygame tile的地图字典中的关卡。每个数字是一个字典键,用于定义参考每个其他地图的地图位置,其值为2d列表。我需要一个函数,它返回非对角线移动的数量,远离0,网格中的每个数字都是。我将使用此数字来计算难度级别。因此,玩家从原点0越远,游戏越难获得。为了更好地理解这些数字是如何生成的......向北移动增加8,向南移动增加-8,向东移动增加-9,向西移动增加9.因此例如地图17,-1 ,1和-17等于2,而地图8,9,-9,-8等于1,依此类推。我正在学习编写合适的代码,但有时需要的数学能力超出了我的能力。

1 个答案:

答案 0 :(得分:0)

好的,所以我想出了解决问题的一种不那么复杂的方法。我使用了2个值的列表。我将位置0递增或递减1表示北,南移动并递增或递减位置1递减1表示西,东移动。然后我添加了位置0的绝对值和位置1的绝对值并返回了答案。这似乎给了我一个准确的距离0. YAY!

dif_list =[0,0]
if move == 'north':
  dif_list[0] += 1
if move == 'south':
  dif_list[0] -= 1
if move == 'west':
  dif_list[1] += 1
if move == 'east':
  dif_list[1] -= 1
  
def difficulty():
  num = abs(dif_list[0])+abs(dif_list[1])
  return num