1、游戏窗口
经过安装Pygame,以及了解Pygame的核心功能之后,可以开始编写一个小的游戏案例了。下面将制作一个飞机大战游戏,游戏内容是敌对的两架飞机互相射击。
游戏开始前需要调用初始化函数,代码如下:
- pygame.init()
否则,在本案例中输出汉字时,会提示错误,字体没有初始化。
创建一个游戏窗口,加载背景,设置窗口标题和图标等,代码如下:
- # 创建一个游戏窗口
- surface = pygame.display.set_mode((480, 652))
- # 加载背景图片
- background = pygame.image.load('./img/background.png')
- # 调整连续按键事件生成时间
- pygame.key.set_repeat(50, 50)
- # 设置窗口标题
- pygame.display.set_caption('飞机大战')
- # 设置窗口图标
- pygame.display.set_icon(pygame.image.load('./img/icon72x72.png'))
2、游戏循环
飞机大战中设计了游戏循环,还设计了玩家飞机、敌机、玩家子弹和敌人子弹四个类,以及碰撞和控制两个功能函数。另外,还有游戏启动界面和结束界面等函数。
整个游戏的游戏循环如下:
①绘制背景图片。
②控制玩家飞机,主要响应玩家的操作。例如,玩家点击关闭按钮,则退出游戏;玩家按下左箭头键,则飞机向左移动;玩家按下右箭头键,则飞机向右移动;玩家按下空格键,则飞机发射子弹。
③绘制玩家飞机,包括正常状态和被击毁状态;绘制玩家飞机发射的子弹。
④绘制敌机,包括正常状态和被击毁状态;绘制敌机发射的子弹。
⑤控制敌机的移动。
⑥检测玩家飞机与敌机发射子弹的碰撞情况。
⑦检测敌机和玩家飞机发射子弹的碰撞情况。
⑧更新游戏窗口。
游戏循环的具体实现代码如下:
- while True:
- surface.blit(background, (0, 0)) # 绘制背景图片
- kongzhi(hero) # 控制玩家飞机
- hero.hero_display() # 绘制玩家飞机
- enemyplan.display() # 绘制敌机
- enemyplan.move() # 控制敌机的移动
- impact(hero, enemyplan.biu_list) # 检测玩家飞机与敌机发射子弹的碰撞情况
- impact(enemyplan, hero.biu_list) # 检测敌机和玩家飞机发射子弹的碰撞情况
- pygame.display.update() # 更新游戏窗口