python开发打地鼠5 #
- 创建资源类1
- 创建资源类2
收获 #
掌握python类的使用方法,通过PyGame实践学会独立建立和更新项目,完成打地鼠游戏开发
创建资源类1 #
本小节为资源类的构造函数定义。
class PygameResourceLoader():
def __init__(self, image_paths_dict=None, sound_paths_dict=None, font_paths_dict=None, bgm_path=None, **kwargs):
# 设置属性
self.bgm_path = bgm_path
self.font_paths_dict = font_paths_dict
self.image_paths_dict = image_paths_dict
self.sound_paths_dict = sound_paths_dict
# 导入字体
self.fonts = self.fontload(font_paths_dict)
# 导入图像
self.images = self.defaultload(image_paths_dict, pygame.image.load)
# 导入声音
self.sounds = self.defaultload(sound_paths_dict, pygame.mixer.Sound)
创建资源类2 #
本小节为资源类中锤子的默认的素材导入函数、导入字体函数和播放背景音乐函数的设置。
##############################在PygameResourceLoader类下,__init__()函数后面,添加下列新的功能函数###################
'''默认的素材导入函数'''
def defaultload(self, resources_dict, load_func):
if resources_dict is None: return dict()
assert isinstance(resources_dict, dict)
resources = dict()
for key, value in resources_dict.items():
if isinstance(value, dict):
resources[key] = self.defaultload(value, load_func)
elif isinstance(value, list):
resources[key] = list()
for path in value: resources[key].append(load_func(path))
else:
resources[key] = load_func(value)
return resources
'''导入字体'''
def fontload(self, font_paths_dict):
if font_paths_dict is None: return dict()
assert isinstance(font_paths_dict, dict)
fonts = dict()
for key, value in font_paths_dict.items():
if not value.get('system_font', False):
fonts[key] = pygame.font.Font(value['name'], value['size'])
else:
fonts[key] = pygame.font.SysFont(value['name'], value['size'])
return fonts
'''播放背景音乐'''
def playbgm(self):
pygame.mixer.music.load(self.bgm_path)
pygame.mixer.music.play(-1, 0.0)
小结 #
本节介绍了资源类的创建过程和功能函数的实现
需要掌握并实现如何使用pygame在项目中创建资源类