程序描述:来源于《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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)