鱼C论坛

 找回密码
 立即注册
楼主: 小甲鱼

[扩展阅读] 游戏中的角色移动:闭包(closure)在实际开发中的作用

    [复制链接]
发表于 2015-9-17 12:57:08 | 显示全部楼层
课程重复 看很多次  终于 有点 概念了  :shy::shy:  一步一脚印  往前走 。。。。。。 继续努力
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-9-18 16:59:08 | 显示全部楼层
等我能看懂的那一天才回来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-9-28 09:24:40 | 显示全部楼层
还差完成No.20
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-9-30 17:37:47 | 显示全部楼层
看懂是可以看懂,但是,可笑的是,我并不清楚,闭包在这个代码里面的作用啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-10-7 16:00:15 | 显示全部楼层
支持楼主
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-10-21 19:24:10 | 显示全部楼层
完全看不懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-10-22 09:03:06 | 显示全部楼层
大不了从头再来 发表于 2015-9-30 17:37
看懂是可以看懂,但是,可笑的是,我并不清楚,闭包在这个代码里面的作用啊

你再了解下闭包的概念就明白了。。。。我也是刚开始不明白闭包是什么意思。。。后来又翻了一遍概念去看了,那样就可以不用设置一个初始化坐标的全局变量,也就不怕当全局变量坐标作出修改时影响到这个函数,这是我的理解

    小甲鱼的解释:python中的闭包从表现形式上定义为:如果在一个内部函数里,对在外部作用域(但不是在全局作用域)的变量进行引用,那么内部函数就被认为是闭包(closure)。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2015-10-28 00:44:46 | 显示全部楼层
我想知道鱼币怎么搞……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-10-28 01:07:53 | 显示全部楼层
正常情况下调用完函数后其内部的变量会随着函数的结束而销毁,但是在闭包情况下外部函数的变量却变成了永恒,这么说只要一个函数里定义一个函数,那么这个外部函数的变量生存期就成“永远”了么。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-10-30 00:11:02 | 显示全部楼层
有些地方有点糊涂,还得好好学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-11-16 09:40:47 | 显示全部楼层
好难啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-11-21 14:04:58 | 显示全部楼层
好迷茫的说
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-11-30 16:45:15 | 显示全部楼层
我想说的是:最后的判断逻辑错了
# 检查移动后是否超出x轴边界
        if new_x < legal_x[0]:
            pos_x = legal_x[1] + (new_x - legal_x[0])
        elif new_x > legal_x[1]:
            pos_x = legal_x[0] + (new_x - legal_x[1])
        else:            
            pos_x = new_x
        # 检查移动后是否超出y轴边界
        if new_y < legal_y[0]:
            pos_y = legal_y[1] + (new_y - legal_y[0])
        elif new_y > legal_y[1]:
            pos_y = legal_y[0] + (new_y - legal_y[1])
        else:            
            pos_y = new_y
        return pos_x, pos_y
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-11-30 16:47:32 | 显示全部楼层
原来撞墙回走。。。感觉很怪,一般撞墙是从反面返方向走。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-12-10 11:08:54 | 显示全部楼层
直接看不dog啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-12-15 17:46:55 | 显示全部楼层
恩,基本看懂了,谢谢大家的解释,要不然真的不懂,如果还不懂就自己那个笔纸画画就号了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-12-17 11:04:09 | 显示全部楼层
向右向左(x轴坐标改变,y不变)
向上向下(x轴坐标不变,y轴坐标改变)
1表示正坐标  向右(x正半轴)向上(y正半轴)
-1表示负坐标  向左(x负半轴)向下(y负半轴)
理解了这些再看上面代码就没什么压力了
主要还是知识的掌握程度和理解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-1-10 16:28:00 | 显示全部楼层
nonlocal  pos_x , pos_y

这一句,语法错误,编译不通过怎么回事?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-1-11 11:56:07 | 显示全部楼层
小甲鱼 发表于 2014-1-11 22:06
是啊,只是简单介绍闭包的用法

我理解,闭包主要是可以减少一个函数中参数的个数。这个例子中使用的参数一共有四个,闭包以后每个函数就只有两个参数了。 我理解对吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-1-11 11:58:12 | 显示全部楼层
guokai83524 发表于 2014-3-17 13:05
看不懂最后的调用30-33行,为什么move里面可以这样带参数,不理解

move里面带的参数是传给moving的

move([1,0],10)就相当于create()([1,0],10)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 2 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-18 10:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表