【问题标题】:How many non diagonal moves from origin point?从原点有多少非对角线移动?
【发布时间】:2015-08-12 19:34:01
【问题描述】:
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 瓷砖的地图字典中的级别。每个数字都是一个字典键,定义一个地图位置,参考彼此的地图,其值为二维列表。我需要一个函数来返回网格中每个数字远离 0 的非对角线移动次数。我将使用这个数字来计算难度级别。所以玩家离原点 0 越远,游戏就越难。为了更好地理解这些数字是如何产生的......向北移动增加 8,向南移动增加 -8,向东移动增加 -9,向西移动增加 9。例如地图 17,-1 ,1 和 -17 将等于 2,而地图 8,9,-9,-8 将等于 1,依此类推。我在学习编写体面的代码方面取得了一些进展,但有时所需的数学运算超出了我的能力范围。

【问题讨论】:

  • 这个过程对我来说一清二楚……

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


【解决方案1】:

好的,所以我想出了一个简单得多的方法来解决我的问题。我使用了 2 个值的列表。对于北、南移动,我将位置 0 递增或递减 1,对于西、东移动,我分别将位置 1 递增或递减 1。然后我将位置 0 的绝对值和位置 1 的绝对值相加并返回答案。这似乎给了我与 0 的准确距离。耶!

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-05
    • 2019-07-26
    相关资源
    最近更新 更多