Arcticfoxer 发表于 2020-10-19 10:15:02

准备学了20讲回来再看看,也是不太明白move那里怎么带的参数

siven-siven 发表于 2020-10-26 21:00:10

concrete 发表于 2016-5-17 09:56
nonlocal 将 pos_x和pos_y声明为全局变量,(全局变量越少越好,必要的全局变量放在最开始,如legal_x和l ...

我的理解是通过Move = creat( ),这样变量赋值,creat()函数就多了一个move标签,函数就不会被释放,所以函数的变量就会永远保存,起到了全局变量的作用。

siven-siven 发表于 2020-10-26 21:01:30

拂袖明灯 发表于 2016-10-3 09:00
为什么我就直接复制过去运行还会报错啊
SyntaxError: multiple statements found while compiling a singl ...

直接复制会有换行错误

siven-siven 发表于 2020-10-26 21:26:15

我的理解:在这个例子中,我们始终需要在内存中保存一个最新的位置坐标,但有不希望以全局变量的形式存在。所以就在一个函数内在构造一个内函数,这样外函数的变量就起到了全局变量的作用。内函数完成坐标更新的功能。更新后的结果以外函数的“全局变量”,永久保存在内存中。

siven-siven 发表于 2020-10-26 21:39:12

28行:return moving
我理解是:返回了一个函数的地址,这样才有机会把内函数的参数传递进去。如果是return moving(),那返回的就是内函数的返回值了,也就是没有入口把内函数的参数传递进去了。

羽翮 发表于 2020-11-2 16:18:21

{:10_266:}这个判断是否超出边界是不是得用循环体哇?

15909574023 发表于 2020-11-17 13:19:05

不懂

tunshi 发表于 2020-11-20 19:32:21

学到了学到了

斌小白 发表于 2020-12-4 08:51:05

求素材

564070598 发表于 2020-12-5 10:40:49

想着未来可以做成这样的效果,这也很厉害了

Tihool 发表于 2020-12-14 21:28:33

回复

skinacc 发表于 2021-1-2 12:09:44

请问为什么是 return moving?而不是 return moving()

v.ki 发表于 2021-1-5 16:05:11

看不懂的伙伴们可以把它形象成一个类,只不过比类占有了更少的空间,没有了复杂的魔方方法,每定义一次就相当于实例化一个类,

kpcjames 发表于 2021-1-14 22:32:57

完全看不懂啊

cpj0036 发表于 2021-1-20 17:28:59

小甲鱼没玩过贪吃蛇吗?应该从一边穿出边界,从另一边(对称点)穿进边界,而不是从0坐标穿进去,也有可能是小甲鱼马虎了。
把减数和被减数搞反了,修改下:
# 检查移动后是否超出x轴边界
      if new_x < legal_x:
            pos_x = (new_x - legal_x) - legal_x
      elif new_x > legal_x:
            pos_x = (new_x - legal_x) - legal_x
      else:            
            pos_x = new_x

pos_y也要这么修改,过程略

但你确定这种实现方式严谨吗,如果游戏人物出现了闪现技能,闪出地图边界永远就回不来了(如果闪现超过200距离)。我认为正确的算法应该是利用取余,-100到100定义为主值区间,超越主值区间的应该折算到主值区间中。

cpj0036 发表于 2021-1-20 17:32:20

siven-siven 发表于 2020-10-26 21:26
我的理解:在这个例子中,我们始终需要在内存中保存一个最新的位置坐标,但有不希望以全局变量的形式存在。 ...

不能说是永久,不是无懈可击的,你的程序中不能出现第二次   
move = create()
否则角色位置就会被初始化了,这是从外部改变内部的最简单的方法

鱼要动动脑子 发表于 2021-1-26 21:45:05

{:10_251:}

yuyoubin 发表于 2021-2-6 18:51:13

good

htyj0 发表于 2021-3-14 20:23:41

原来学了还以为闭包只是一个数据操作机制,没什么用。从这个例子清晰地看到它可以有效的保护变量,防止滥用。

刘三胖 发表于 2021-3-16 00:09:57

移动距离超过301就有逻辑错误了
页: 13 14 15 16 17 18 19 20 21 22 [23] 24 25
查看完整版本: 游戏中的角色移动:闭包(closure)在实际开发中的作用