python入门

053_wz_hm_项目实战——飞机大战之敌机

2020-08-30  本文已影响0人  王泽0106

敌机出场

使用定时器添加敌机

  1. 游戏启动后,每隔一秒出现一架敌机
  2. 每架敌机向屏幕下方飞行,飞行速度各不相同
  3. 每架敌机出现的水平位置也不尽相同
  4. 当敌机从屏幕下方飞出,不会再飞回到屏幕中

定时器

pygame中可以使用pygame.time.set_timer()来添加定时器,所有定时器,就是每隔一段时间,去执行一些动作

set_timer(eventid, millisconds) -> None

定时器事件的监听:
通过pygame.event.get()可以获取当前时刻所有的事件列表,遍历列表并且判断event.type是否等于eventid,如果相等,表示定时器事件发生

定义并监听创建敌机的定时器事件

pygame的定时器使用套路非常固定:

  1. 定义定时器常量——eventid 定义定时器常量
  2. 初始化方法中,调用set_timer方法设置定时器事件 设置定时器事件
  3. 游戏循环中,监听定时器事件 监听定时器事件

设计Enemy类

Enemy类
初始化方法:

重写update()方法:判断是否飞出屏幕,如果是则从精灵组删除

敌机类的准备

Enemy类

创建敌机

  1. __create_sprites添加敌机精灵组,敌机是被定时创建的,因此在初始化方法中,不需要创建敌机 创建敌机精灵组
  2. __event_handler创建敌机,并且添加到精灵组 定时器事件触发添加敌机事件
  3. __update_sprites让敌机精灵组调用updatedraw方法 更新敌机 精灵与精灵组

随机敌机位置和速度

1. 导入模块
在导入模块时,建议按照以下顺序导入

1.官方标准模块导入
2.第三方模块导入
3.应用程序模块导入

plane_sprites.py中导入random模块
2. 随机位置

x与y
使用pygame.Rect提供的bottom属性,在指定敌机初始位置时会比较方便

注:bottom n. 底部
3. 代码实现

随机位置与速度

销毁移出屏幕的敌机

敌机移出屏幕后,如果没有撞到英雄,那么敌机的使命已经完结,需要从敌机精灵组中删除,否则会造成内存的浪费
1. 检测敌机被销毁
__del__内置方法会在对象被销毁前调用,在开发中,可以用于判断对象是否被销毁
2. 代码实现
判断敌机是否飞出屏幕,如果是调用kill()方法从所有组中删除

销毁超出屏幕的敌机 2020.8.30
上一篇 下一篇

猜你喜欢

热点阅读