Python-项目实战-《外形人入侵》Pygame小游戏-阶段二:外星人来了

Python-项目实战-《外形人入侵》Pygame小游戏-阶段二:外星人来了,第1张

来源于《Python编程从入门到实践》的13章外星人来了。

此为第一阶段:

Python-项目实战-《外星人入侵》Pygame小游戏-阶段一:武装飞船(含教程)_Kox233的博客-CSDN博客

程序描述:

此程序为《外星人入侵》开发的第二个阶段。

主要功能是生成一群外星人,这群外星人能够向两边和下面移动,玩家可以用子d攻击外星人。被击中的外星人将会被删除。

开发步骤: 1)创建第一个外星人

所需素材图片:

alien.bmp 

1.1)创建 Alien 类

 编写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)
1.2)创建 Alien 实例 

下面是 alien_invasion.py 中修改后的 import 语句:

alien_invasion.py

 下面是修改后的方法__init__():

alien_invasion.py

创建了一个用于存储外星人群的编组,还调用了接下来将编写的方法_create_fleet()。

下面是新编写的方法_create_fleet():

alien_invasion.py

要让外星人现身,需要在_update_screen()中对外星人编组调用方法draw():

 alien_invasion.py

现在屏幕上就能够显示一个外星人了。

2)创建一群外星人 

 要绘制一群外星人,需要确定一行能容纳多少个外星人以及要绘制多少行。我们将首先计算外星人的水平间距并创建一行外星人,在确定可用的垂直空间并创建整群外星人。

 2.1)创建一行外星人

重写_create_fleet()使其创建一行外星人:

alien_invasion.py

 如果现在运行游戏将会看到一行外星人

 2.2)重构_create_fleet()

 alien_invasion.py

2.3)添加行 

alien_invasion.py

现在运行将会看到一群外星人

3)让外星人群移动

接下来将让外星在屏幕上向右移动,撞到屏幕边缘后下移一定的量,再沿相反的方向移动。我们将不断移动所有外星人,直到外星人被全部消灭,或者有外星人撞上飞船或抵达屏幕底端。

3.1)向右移动外星人群

为移动外星人群,将使用 alien.py 中的方法 update()。首先,添加一共控制外星人速度的设置:

settings.py

 

 再使用这个设置来实现 update():

alien.py

调用更新每个外星人位置的办法:

 alien_invasion.py

新建一给名为_update_aliens()的方法,来管理外星人群的移动。放在方法_update_bullets()的后面。

 alien_invasion.py

 3.2)创建表示外星人移动方向的设置

实现外星人撞到右边缘后向下移动、再向左移动设置:

settings.py

3.3)检查外星人是否撞到了屏幕边缘 

编写一个方法来检查外星人是否撞到了屏幕边缘,还需修改 update()让每个外星人都沿正确的方向移动。这些代码位于 Alien 类中: 

alien.py

 3.4)向下移动外星人群并改变移动方向

有外星人到达屏幕边缘时,需要将整群外行星下移,并改变它们的方向。通过编写方法_check_fleet_edges()和_change_fleet_direction(),并且修改_update_aliens()。这些新方法将放在_create_alien()后面:

alien_invasion.py

修改_update_aliens():

alien_invasion.py

如果现在运行这个游戏,外星人群将在屏幕上来回移动,并在抵达屏幕边缘后向下移动。

4)射杀外星人

子d能够击中外星人 。

4.1)检测子d与外星人的碰撞

在方法_update_bullets()末尾,添加如下检查子d和外星人碰撞的代码:

alien_invasion.py

如果现在运行这个游戏,被击中的外星人将会消失。

4.2)生成新的外星人群

这个游戏的一个重要特点是,外星人无穷无尽:一群外星人被消灭后,又会出现另一群外星人。在_update_bullets()末尾执行这项任务:

alien_invasion.py

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/873603.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-13
下一篇 2022-05-13

发表评论

登录后才能评论

评论列表(0条)

保存