在 Python pygame 中了解自我
Understanding self in Python pygame
你好,我是初学者 Python 开发平台 pygame 游戏的程序员,在查看 http://programarcadegames.com/python_examples/en/sprite_sheets/ 的一些代码时,有一个关于播放器的特定部分 class 我不明白。
来自播放器class第102行有一段代码
block_hit_list = pygame.sprite.spritecollide(self, self.level.platform_list, False)
既然platform_list没有在这个class中声明,怎么可能是这样使用的呢?另外,怎么可能做到level.platform_list?我试过上面提到的网站上的代码,它运行良好,但我不明白它是如何工作的。谁能给我解释一下?谢谢!
在播放器class中第37-38行左右初始化为None。
# List of sprites we can bump against
self.level = None
在第 13 行定义了 Player
class。在它的 __init__
方法中,在第 39 行,它的 level
属性被初始化为 None
。推测该属性后来被更改,因为它在第 104 行用于获取其 platform_list
属性:block_hit_list = pygame.sprite.spritecollide(self, self.level.platform_list, False)
正如@zondo 所说,Player
class 定义了 level
属性并将其初始化为 None
.
他的回答中缺少的步骤是 platform_scroller.py
中的 main()
在第 57 行用当前水平填充它。因为这是 Level
class,它有一个 platform_list
属性,可以通过 Player
对象内的 self.level.platform_list
访问。
你好,我是初学者 Python 开发平台 pygame 游戏的程序员,在查看 http://programarcadegames.com/python_examples/en/sprite_sheets/ 的一些代码时,有一个关于播放器的特定部分 class 我不明白。
来自播放器class第102行有一段代码
block_hit_list = pygame.sprite.spritecollide(self, self.level.platform_list, False)
既然platform_list没有在这个class中声明,怎么可能是这样使用的呢?另外,怎么可能做到level.platform_list?我试过上面提到的网站上的代码,它运行良好,但我不明白它是如何工作的。谁能给我解释一下?谢谢!
在播放器class中第37-38行左右初始化为None。
# List of sprites we can bump against
self.level = None
在第 13 行定义了 Player
class。在它的 __init__
方法中,在第 39 行,它的 level
属性被初始化为 None
。推测该属性后来被更改,因为它在第 104 行用于获取其 platform_list
属性:block_hit_list = pygame.sprite.spritecollide(self, self.level.platform_list, False)
正如@zondo 所说,Player
class 定义了 level
属性并将其初始化为 None
.
他的回答中缺少的步骤是 platform_scroller.py
中的 main()
在第 57 行用当前水平填充它。因为这是 Level
class,它有一个 platform_list
属性,可以通过 Player
对象内的 self.level.platform_list
访问。