一、本文简介
主要记录了使用pygame开发游戏的框架和关键步骤
二、游戏的主要框架
- 初始化:pygame.init()
- 设置屏幕大小:screen = pygame.display.set_mode((1200, 800))
- 设置标题:pygame.display.set_caption(“”)
- 游戏主循环:while True
- 监听键盘和鼠标事件:pygame.event.get(), 返回的是事件列表,需要for循环遍历
- 监听到退出事件,退出游戏:event.type = pygame.QUIT, sys.exit()
- 监听键盘事件:event.type = pygame.KEYDOWN, KEYUP
- 绘制屏幕:pygame.display.flip()
- 设置背景色(每一帧):screen.fill(bg_color)
- 绘制游戏对象:调用游戏对象的blit方法
- 监听键盘和鼠标事件:pygame.event.get(), 返回的是事件列表,需要for循环遍历
三、游戏对象
- 加载图像
- 加载图像并获取外接矩形:self.image = pygame.image.load(“path”), self.rect = self.image.get_rect()
- 获取屏幕的外接矩形:self.screen_rect = self.screen.get_rect()
- 以屏幕为参照系,设置游戏对象外接矩形的位置:self.rect.centerx, self.rect.bottom, self.rect.top
- pygame中,原点位于屏幕左上角,向右为x正方向,向下为y正方向
- 绘制游戏对象:self.screen.blit(self.image, self.rect)
- 手动创建矩形
- 创建矩形:self.rect = pygame.Rect(0, 0, width, height)
- 调整矩形初始化的位置:self.rect.centerx
- 绘制矩形:pygame.draw.rect(screen, color, rect)
- 相同对象创建编组
- 创建编组:bullets = pygame.sprite.Group()
- 更新编组:bullets.update(), 对编组应用update时,编组自动对其中的每个精灵调用update
- 删除编组中某个精灵:遍历编组(bullets.copy(),for循环中,不应对编组中删除条目,所以必须遍历编组的副本),判断条件,删除精灵(bullets.remove(bullet))
四、游戏功能
- 连续移动:设置一个状态位,按下键盘和抬起键盘时变更状态,根据状态来响应键盘
- 限制游戏对象的范围:将游戏对象的rect与screen的rect做比较
五、编程思想
- 通过定义一个设置类,来统一管理配置,类似工作项目中的config
- 在开发较大项目前,需要研究既有代码,确定实现新功能前是否要进行重构
- 开发过程中持续不断地重构