设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
楼主: crossin先生
打印 上一主题 下一主题

【Pygame 第12课】 屡败屡战

[复制链接]

0

主题

0

好友

53

积分

注册会员

Rank: 2

楼主
发表于 2014-10-26 20:39:12 |显示全部楼层
我将碰撞后的重置写在了一起
def restart(plane,e,enemies,b,bullets,score,gameover)
    plane.restart()
    for e in enemies:
        e.restart()
    for b in bullets:
        b.active = False
    score = 0
    gameover = False
但是在后面调用并不能正常运行了,我想是不是作用域的问题,另外我实验了一下,如果
def r(a,b):
    if a>0:
        b=True
    else:
        b=False
b=False
r(3,b)
print b
这样输出b也是false,请问这个和游戏中的差别在什么地方呢,为什么呢。有点混淆了,谢谢
回复

使用道具 举报

0

主题

0

好友

53

积分

注册会员

Rank: 2

沙发
发表于 2014-11-6 21:07:46 |显示全部楼层
crossin先生 发表于 2014-10-27 16:35
的确是作用域。如果你想在函数中改变一个变量的值,要么你把它定义为global全局变量,要么作为返回值retu ...

感觉得到这个地方还有一个迷惑的地方在于,检测碰撞的函数中,都可以把状态在函数中改掉,那么对象中的变量的作用域又是什么样的呢?对象中变量的值可以被函数修改吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-5-6 05:28 , Processed in 0.025154 second(s), 22 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部