Pygame 外星人入侵 笔记(四)-- 游戏主要框架

一、本文简介

主要记录了使用pygame开发游戏的框架和关键步骤

二、游戏的主要框架

  1. 初始化:pygame.init()
  2. 设置屏幕大小:screen = pygame.display.set_mode((1200, 800))
  3. 设置标题:pygame.display.set_caption(“”)
  4. 游戏主循环:while True
    1. 监听键盘和鼠标事件:pygame.event.get(), 返回的是事件列表,需要for循环遍历
      1. 监听到退出事件,退出游戏:event.type = pygame.QUIT, sys.exit()
      2. 监听键盘事件:event.type = pygame.KEYDOWN, KEYUP
    2. 绘制屏幕:pygame.display.flip()
      1. 设置背景色(每一帧):screen.fill(bg_color)
    3. 绘制游戏对象:调用游戏对象的blit方法

三、游戏对象

  1. 加载图像
    1. 加载图像并获取外接矩形:self.image = pygame.image.load(“path”), self.rect = self.image.get_rect()
    2. 获取屏幕的外接矩形:self.screen_rect = self.screen.get_rect()
    3. 以屏幕为参照系,设置游戏对象外接矩形的位置:self.rect.centerx, self.rect.bottom, self.rect.top
      1. pygame中,原点位于屏幕左上角,向右为x正方向,向下为y正方向
    4. 绘制游戏对象:self.screen.blit(self.image, self.rect)
  2. 手动创建矩形
    1. 创建矩形:self.rect = pygame.Rect(0, 0, width, height)
    2. 调整矩形初始化的位置:self.rect.centerx
    3. 绘制矩形:pygame.draw.rect(screen, color, rect)
  3. 相同对象创建编组
    1. 创建编组:bullets = pygame.sprite.Group()
    2. 更新编组:bullets.update(), 对编组应用update时,编组自动对其中的每个精灵调用update
    3. 删除编组中某个精灵:遍历编组(bullets.copy(),for循环中,不应对编组中删除条目,所以必须遍历编组的副本),判断条件,删除精灵(bullets.remove(bullet))

四、游戏功能

  1. 连续移动:设置一个状态位,按下键盘和抬起键盘时变更状态,根据状态来响应键盘
  2. 限制游戏对象的范围:将游戏对象的rect与screen的rect做比较

五、编程思想

  1. 通过定义一个设置类,来统一管理配置,类似工作项目中的config
  2. 在开发较大项目前,需要研究既有代码,确定实现新功能前是否要进行重构
  3. 开发过程中持续不断地重构
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值