鱼C论坛

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

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

    [复制链接]
发表于 2014-9-2 10:49:37 | 显示全部楼层
yu_wind 发表于 2014-1-11 16:22
请问
if new_x < legal_x[0]:
            pos_x = legal_x[0] - (new_x - legal_x[0])

那样就超出原点了,~这样做的目的是以原点为堆成点把负值转成正值~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 0 反对 1

使用道具 举报

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

使用道具 举报

发表于 2014-9-24 14:07:21 | 显示全部楼层
还没看懂~!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-10-19 22:07:39 | 显示全部楼层
来给甲鱼哥哥灌个水,课程很棒,我想学python然后做算法的实现:ton:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-11-1 17:20:26 | 显示全部楼层
表示勉强看懂。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2014-11-21 22:51:24 | 显示全部楼层
为什么我看了前20章 居然看不懂小甲鱼在写什么。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-12-18 01:11:27 | 显示全部楼层
基本看懂了,会用还得多实践。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-12-20 20:56:56 | 显示全部楼层
学习学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-1-8 16:58:11 | 显示全部楼层
看不懂啊:mad::mad:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-1-20 15:06:40 | 显示全部楼层
还需继续努力
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-1-29 11:21:54 | 显示全部楼层
感觉闭包有点难
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-2-2 16:40:02 | 显示全部楼层
一边画图一遍理解,自己动手再写一遍,现在感觉好简单。。通过这个实例,我发现闭包的一个好处就是,每次调用内部函数,都会从上一次的运行结果的基础上进行叠加。。以下是我修改的代码:
####################################
legal_x = [-100,100]  #x轴的移动范围
legal_y = [-100,100]  #y轴的移动范围

def create(pos_x = 0,pos_y = 0):
    def moving(direction,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[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
    return moving
##################################

评分

参与人数 2荣誉 +5 鱼币 +8 贡献 +3 收起 理由
cindyoshinee + 5 + 5 + 3
碗碗的泡菜坛 + 3 感谢楼主无私奉献!

查看全部评分

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

使用道具 举报

发表于 2015-2-3 07:44:38 From FishC Mobile | 显示全部楼层
看不懂了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-2-18 17:46:29 | 显示全部楼层
学习学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-3-3 18:09:33 | 显示全部楼层
origin = (0, 0)  一直沒用上啊,,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-3-8 20:19:23 | 显示全部楼层
鱼币在哪里
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-3-15 00:03:08 | 显示全部楼层
高端
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-3-24 16:36:45 | 显示全部楼层
{:1_1:}嘎嘎.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-4-5 16:10:38 | 显示全部楼层
顶起来,虽然看不懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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