鱼C论坛

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

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

    [复制链接]
发表于 2018-1-19 15:02:48 | 显示全部楼层
没看懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-23 09:15:51 | 显示全部楼层
基本看懂了,努力今天把这个代码自己写出来。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-27 12:37:25 | 显示全部楼层
看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-1-29 20:55:22 | 显示全部楼层
感觉鱼币很难得到
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-30 10:13:14 | 显示全部楼层
录制的零基础入门学习python的第二十章内嵌函数和闭包的第十七分零十秒左右把零基础入门学习python说成了零基础入门学习C语言
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-5 22:17:44 | 显示全部楼层
学习学习 学习  现在感觉一天的时间真的不够用
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-12 16:22:25 | 显示全部楼层
加油
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-2-23 14:44:10 | 显示全部楼层
打卡
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-3-1 23:50:13 | 显示全部楼层
小邪 发表于 2018-1-30 10:13
录制的零基础入门学习python的第二十章内嵌函数和闭包的第十七分零十秒左右把零基础入门学习python说成了零 ...

我回头看了,是真的,这位同学好细心,不扶墙,就服你
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-6 21:51:49 | 显示全部楼层
这个程序没看懂。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-7 14:08:09 | 显示全部楼层
不用nonlocal 也可以吧?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-7 20:29:56 | 显示全部楼层
闭包对于一个新手来说还是需要时间理解的,其实就是相当于return了一个函数,后面带操作数就能得到相应的值,而且这个闭包不会被释放
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-9 10:14:43 | 显示全部楼层
看懂了,好感动
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-13 11:20:00 | 显示全部楼层
我是从鱼c老师的书上过来的,第一次听到闭包的概念,大致了解了下,我想鱼c老师的这段代码并不是为了让大家了解坐标的移动位置的语句循环处理的,大家太过于执着代码整个本身,其实我觉得鱼c老师是让大家更贯彻的理解闭包概念,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-13 11:39:24 | 显示全部楼层
我觉得鱼C老师只是为了让大家明白什么是闭包,外部函数的临时变量被内部函数所调用的方法就叫闭包~通俗的讲:你想去一场婚礼场所蹭吃蹭喝,你想去这个婚礼,就得有一个婚礼,所以创建了一个所谓婚礼的外部函数,函数有一个默认的变量叫邀请函,你有了一个临时的变量邀请函了,你就要去婚礼内部现场找到自己的座位才能蹭吃蹭喝,所以在婚礼现场蹭吃蹭喝就是内部函数的返回值,而他得用外部函数的邀请函,公式:蹭吃蹭喝 = 邀请函 + 座位,return 蹭吃蹭喝,这就是闭包吧,可是又有一个人没有邀请函绕过了外部函数,直接找到了内部函数的婚礼现场,直接找到一个座位蹭吃喝,可是他没有邀请函,人家告诉他,您好由于您没有邀请函,拒绝你入座,鱼C老师如果您看到了我这个比喻就回复下,如果我比喻错了就把我这个删了,我也是刚学,我也怕理解的不好误人子弟,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2018-3-20 21:09:55 | 显示全部楼层
函数结尾用return moving ,如果用return moving(),会怎么样,这是为什么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-23 14:43:07 | 显示全部楼层
direction默认值是多少 是个list?  传递进去的实际参数是多少 direction[0],direction[1] step具体的值是多少呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-26 15:11:40 | 显示全部楼层
理想小青年 发表于 2018-3-23 14:43
direction默认值是多少 是个list?  传递进去的实际参数是多少 direction[0],direction[1] step具体的值是多 ...

求解释!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-26 15:23:13 | 显示全部楼层
John_farmer 发表于 2015-8-28 11:42
第017讲课后作业动动手的最后一题,我写的程序,出现一个错误,求小甲鱼帮忙分析下错误原因
>>> def Decim ...

r[0]你没有定义 你先定义一个列表
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-26 20:53:01 | 显示全部楼层
origin = (0, 0)         # 原点
legal_x = [-100, 100]   # x轴的移动范围
legal_y = [-100, 100]   # y轴的移动范围

def create(pos_x=0, pos_y=0):
# 初始化位于原点为主   
    def moving(direction, step):
    # direction参数设置方向,1为向右(向上),-1为向左(向下),0为不移动
    # step参数设置移动的距离
        nonlocal pos_x, pos_y
        new_x = pos_x + direction[0] * step
        new_y = pos_y + direction[1] * step
        # 检查移动后是否超出x轴边界
        if new_x < legal_x[0]:
            pos_x = legal_x[0] - (new_x - legal_x[0])
        elif new_x > legal_x[1]:
            pos_x = legal_x[1] - (new_x - legal_x[1])
        else:            
            pos_x = new_x
        # 检查移动后是否超出y轴边界
        if new_y < legal_y[0]:
            pos_y = legal_y[0] - (new_y - legal_y[0])
        elif new_y > legal_y[1]:
            pos_y = legal_y[1] - (new_y - legal_y[1])
        else:            
            pos_y = new_y
        return pos_x, pos_y
    return moving
   
move = create()
print('向右移动10步后,位置是:', move([1, 0], 10))
print('向上移动130步后,位置是:', move([0, 1], 130))
print('向左移动10步后,位置是:', move([-1, 0], 10))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-18 12:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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