你好我是一名初学Python程序员,正在开发一个平台pygame游戏,同时查看来自http://programarcadegames.com/python_examples/en/sprite_sheets/的一些代码,有一个关于玩家类的特定部分,我不明白。
从玩家类中,第102行的代码部分
block_hit_list = pygame.sprite.spritecollide(self, self.level.platform_list, False)
由于未在此类中声明platform_list,如何以这种方式使用它?另外,怎么可能做level.platform_list?我已经尝试过上面提到的网站上的代码并且它运行良好,但我不明白这是如何工作的。任何人都可以向我解释这个吗?谢谢!
答案 0 :(得分:0)
在第13行,定义了Player
类。在其__init__
方法的第39行,其level
属性初始化为None
。可以推测该属性稍后会更改,因为它在第104行上用于获取其platform_list
属性:block_hit_list = pygame.sprite.spritecollide(self, self.level.platform_list, False)
答案 1 :(得分:0)
正如@zondo所说,Player
类定义level
属性并将其初始化为None
。
他的答案中缺少的一步是main()
中platform_scroller.py
填充了第57行的cuurent级别。由于这是一个Level
类,它有{{1}可以通过platform_list
对象中的self.level.platform_list
访问属性。
答案 2 :(得分:-1)
在Player类的第37-38行附近初始化为None。
# List of sprites we can bump against
self.level = None