|
发表于 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
##################################
|
评分
-
查看全部评分
|