Python工程师之Python编程:从入门到实践【3.9】

第 13 章 游戏外星人来了

        本章将在游戏《外星人入侵》中添加外星人。我们将首先在屏 幕上边缘附近添加一个外星人,再生成一群外星人。然后让这群外星人向两边 和下面移动,并删除被子弹击中的外星人。最后,显示玩家拥有的飞船数量, 并在玩家的飞船用完后结束游戏。 通过阅读本章,你将更深入地了解Pygame和大型项目管理,还将学习如何检测 游戏对象之间的碰撞,如子弹和外星人之间的碰撞。检测碰撞有助于定义游戏 元素之间的交互。例如,可以将角色限定在迷宫墙壁之内,或者在两个角色之 间传球。我们将不时查看游戏开发计划,确保编程工作不偏离轨道。 着手编写在屏幕上添加一群外星人的代码前,先来回顾一下这个项目,并更新 开发计划。

13.1 项目回顾

        开发大型项目时,要在进入每个开发阶段之前回顾一下开发计划,搞清楚接下来要 通过编写代码来完成哪些任务。本章涉及以下内容。 研究既有代码,确定实现新功能前是否要重构。 在屏幕左上角添加一个外星人,并指定合适的边距。 根据第一个外星人的边距和屏幕尺寸计算屏幕上可容纳多少个外星人。编写一 个循环来创建一系列外星人,使其填满屏幕的上半部分。 让外星人群向两边和下方移动,直到外星人被全部击落、有外星人撞到飞船或 有外星人抵达屏幕底端。如果整群外星人都被击落,将再创建一群外星人。如 果有外星人撞到了飞船或抵达屏幕底端,将销毁飞船并再创建一群外星人。 限制玩家可用的飞船数量。当配给的飞船用完之后,游戏将结束。 我们将在实现功能的同时完善这个计划,但就目前而言,该计划已足够详尽。 在项目中添加新功能前,还应审核既有代码。每进入一个新阶段,项目通常会更复 杂,因此最好对混乱或低效的代码进行清理。我们一直在不断重构,因此当前没有 需要重构的代码。

13.2 创建第一个外星人

        在屏幕上放置外星人与放置飞船类似。每个外星人的行为都由Alien 类控制,我们 将像创建Ship 类那样创建这个类。出于简化考虑,也将使用位图来表示外星人。 你可以自己寻找表示外星人的图像,也可以使用如图13-1所示的图像,它可在本书 配套资源(ituring.cn/book/2784)中找到。这幅图像的背景为灰色,与屏幕背景 色一致。请务必将选择的图像文件保存到文件夹images中。

下面来编写Alien 类并将其保存为文件alien.py:
alien.py
 

import pygame
from pygame.sprite import Sprite
class Alien(Sprite):
"""表示单个外星人的类。"""
def __init__(self, ai_game):
"""初始化外星人并设置其起始位置。"""
super().__init__()
self.screen = ai_game.screen
# 加载外星人图像并设置其rect属性
self.image = pygame.image.load('images/alien.bmp')
self.rect = self.image.get_rect()
# 每个外星人最初都在屏幕左上角附近。
❶ self.rect.x = self.rect.width
self.rect.y = self.rect.height
# 存储外星人的精确水平位置。
❷ self.x = float(self.rect.x)

        除位置不同外,这个类的大部分代码与Ship 类相似。每个外星人最初都位于屏幕 左上角附近。将每个外星人的左边距都设置为外星人的宽度,并将上边距设置为外 星人的高度(见❶)

  • 19
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BinaryStarXin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值