[关闭]
@websec007 2020-06-16T14:14:23.000000Z 字数 1453 阅读 833

Alien Invasion - 12.8 发射子弹

2020.Python从入门到实践


12.8 发射子弹


1. 创建子弹类

2. 引入精灵编组

引入精灵模块为子弹的存放、子弹更新以及子弹的逐个绘制做准备。

3. 创建子弹实例,存入精灵编组

  1. new_bullet = Bullet()
  2. bullets.add(new_bullet)

4. 逐个更新精灵编组中每个子弹实例

  1. bullets.update()

5. 逐个绘制精灵编组中每个子弹实例

  1. for bullet in bullets.spriters():
  2. bullet.draw_bullet()

6. 删除已发射子弹,释放内存

  1. for bullet in bullets.copy():
  2. if bullet.top < 0
  3. bullets.remove(bullet)

7. 重构代码(game_functions)

+++++++++++++++++++fire_bullets(bullets)++++++++++++++++++++++

  1. def fire_bullet(bullets, game_settings, screen, ship):
  2. # 创建新的子弹,并加入编组(在设定的子弹限制范围数量内,);
  3. if len(bullets) < game_settings.bullets_allowed:
  4. # 创建新的子弹
  5. new_bullet = Bullet(screen, game_settings, ship)
  6. # 加入新编组中
  7. bullets.add(new_bullet)

++++++++++++++++++update_bullets(bullets)+++++++++++++++++++++

  1. def update_bullets(bullets):
  2. # 更新被已创建子弹位置,并删除已经消失的子弹
  3. # 更新编组中的每一个子弹
  4. bullets.update()
  5. # 删除已经消失的子弹
  6. for bullet in bullets.copy():
  7. if bullet.rect.bottom <= 0:
  8. bullets.remove(bullet)

+++++++++++++++++draw_bullets(bullets)+++++++++++++++++++++

  1. def draw_bullets(bullets):
  2. # 绘制编组中每一个子弹
  3. for bullet in bullets.sprites():
  4. bullet.draw_bullet()

子弹编组学习总结

通过代码重构的回顾,突然好像明白了整个子弹游戏内容的实现就3个核心方法1个子弹类

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注