火箭小猪大战BUG-4:创建一群BUG怪兽

效果图如下:

1.创建 bug_alien.py 

import pygame
from pygame.sprite import Sprite

class Bug_alien(Sprite):
    """表示单个外星人的类。"""
    def __init__(self, ai_game):
        """初始化外星人并设置其起始位置。"""
        super().__init__()
        self.screen = ai_game.screen

        # 加载外星人图像并设置其rect属性。
        self.image = pygame.image.load('images/bug_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)

2.修改 alien_invasion.py

1)增加 import语句

from bug_alien import Bug_alien

2)增加 __init__() 方法里的语句

self.bug_aliens = pygame.sprite.Group()
self._create_fleet()

3)编写新方法 _create_fleet()

	def _create_fleet(self):
		"""创建外星人群。"""
		# 创建一个外星人并计算一行可容纳多少个外星人。
		# 外星人的间距为外星人的宽度。
		bug_alien = Bug_alien(self)
		bug_alien_width, bug_alien_height = bug_alien.rect.size
		available_space_x = self.settings.screen_width - (2 * bug_alien_width)
		number_bug_aliens_x = available_space_x // (2 * bug_alien_width)

		# 计算屏幕可容纳多少行外星人。
		ship_height = self.ship.rect.height
		available_space_y = (self.settings.screen_height - (3 * bug_alien_height) - ship_height)
		number_rows = available_space_y // (2 * bug_alien_height)

		# 创建外星人群
		for row_number in range(number_rows):
			for bug_alien_number in range(number_bug_aliens_x):
				self._create_bug_alien(bug_alien_number, row_number)

4)修改方法 _update_screen() ,增加语句

self.bug_aliens.draw(self.screen)

5)编写新方法 _create_bug_alien()

	def _create_bug_alien(self, bug_alien_number, row_number):
		# 创建一个外星人并将其加入当前行。
		bug_alien = Bug_alien(self)
		bug_alien_width, bug_alien_height = bug_alien.rect.size
		bug_alien.x = bug_alien_width + 2 * bug_alien_width * bug_alien_number
		bug_alien.rect.x = bug_alien.x
		bug_alien.rect.y = bug_alien.rect.height + 2 * bug_alien.rect.height * row_number
		self.bug_aliens.add(bug_alien)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值