代码拉取完成,页面将自动刷新
import pygame
import random
'''
飞机大战敌机类
'''
# 小敌机类
class LittleEnemy(pygame.sprite.Sprite):
def __init__(self, bg_size):
pygame.sprite.Sprite.__init__(self)
# 加载敌机图片对象
self.image = pygame.image.load("images/enemy1.png").convert_alpha()
# 加载敌机爆炸图片对象
self.destroy_images = []
self.destroy_images.append(pygame.image.load("images/enemy1_down1.png").convert_alpha())
self.destroy_images.append(pygame.image.load("images/enemy1_down2.png").convert_alpha())
self.destroy_images.append(pygame.image.load("images/enemy1_down3.png").convert_alpha())
self.destroy_images.append(pygame.image.load("images/enemy1_down4.png").convert_alpha())
# 得到敌机位置矩形
self.rect = self.image.get_rect()
# 得到整个窗口的宽高
self.width, self.height = bg_size[0], bg_size[1]
# 设置敌机初始化位置
self.rect.left, self.rect.top = random.randint(0, self.width - self.rect.width), random.randint(-5 * self.height, 0)
# 设置敌机初始速度
self.speed = 2
# 定义敌机状态 True为正常,False为爆炸
self.active = True
# 定义敌机用于碰撞检测的范围(mask的from_surface方法返回Surface对象图片中非透明的部分)
self.mask = pygame.mask.from_surface(self.image)
# 敌机移动只会从上往下冲,所以只需要修改y坐标的值就可以,如果敌机从页面消失了就重新初始化敌机的位置
def move(self):
if self.rect.top < self.height:
self.rect.top += self.speed
else:
self.reset()
def reset(self):
self.active = True
# 设置敌机初始化位置
self.rect.left, self.rect.top = random.randint(0, self.width - self.rect.width), random.randint(-5 * self.height, 0)
# 中敌机类
class MiddleEnemy(pygame.sprite.Sprite):
energy = 8
def __init__(self, bg_size):
pygame.sprite.Sprite.__init__(self)
# 加载敌机图片对象
self.image = pygame.image.load("images/enemy2.png").convert_alpha()
# 加载敌机被打中的图片对象
self.image_hit = pygame.image.load("images/enemy2_hit.png").convert_alpha()
# 加载敌机爆炸图片对象
self.destroy_images = []
self.destroy_images.append(pygame.image.load("images/enemy2_down1.png").convert_alpha())
self.destroy_images.append(pygame.image.load("images/enemy2_down2.png").convert_alpha())
self.destroy_images.append(pygame.image.load("images/enemy2_down3.png").convert_alpha())
self.destroy_images.append(pygame.image.load("images/enemy2_down4.png").convert_alpha())
# 得到敌机位置矩形
self.rect = self.image.get_rect()
# 得到整个窗口的宽高
self.width, self.height = bg_size[0], bg_size[1]
# 设置敌机初始化位置
self.rect.left, self.rect.top = random.randint(0, self.width - self.rect.width), random.randint(-10 * self.height, -self.height)
# 设置敌机初始速度
self.speed = 1
# 定义敌机状态 True为正常,False为爆炸
self.active = True
# 定义敌机用于碰撞检测的范围(mask的from_surface方法返回Surface对象图片中非透明的部分)
self.mask = pygame.mask.from_surface(self.image)
# 定义中型飞机的血条
self.energy = MiddleEnemy.energy
# 定义属性,用于表示当前敌机是否被击中
self.hit = False
# 敌机移动只会从上往下冲,所以只需要修改y坐标的值就可以,如果敌机从页面消失了就重新初始化敌机的位置
def move(self):
if self.rect.top < self.height:
self.rect.top += self.speed
else:
self.reset()
def reset(self):
self.active = True
self.energy = MiddleEnemy.energy
# 设置敌机初始化位置
self.rect.left, self.rect.top = random.randint(0, self.width - self.rect.width), random.randint(-10 * self.height, -self.height)
# 大敌机类
class BigEnemy(pygame.sprite.Sprite):
energy = 20
def __init__(self, bg_size):
pygame.sprite.Sprite.__init__(self)
# 加载敌机图片对象
self.image1 = pygame.image.load("images/enemy3_n1.png").convert_alpha()
self.image2 = pygame.image.load("images/enemy3_n2.png").convert_alpha()
# 加载敌机被打中的图片对象
self.image_hit = pygame.image.load("images/enemy3_hit.png").convert_alpha()
# 加载敌机爆炸图片对象
self.destroy_images = []
self.destroy_images.append(pygame.image.load("images/enemy3_down1.png").convert_alpha())
self.destroy_images.append(pygame.image.load("images/enemy3_down2.png").convert_alpha())
self.destroy_images.append(pygame.image.load("images/enemy3_down3.png").convert_alpha())
self.destroy_images.append(pygame.image.load("images/enemy3_down4.png").convert_alpha())
self.destroy_images.append(pygame.image.load("images/enemy3_down5.png").convert_alpha())
self.destroy_images.append(pygame.image.load("images/enemy3_down6.png").convert_alpha())
# 得到敌机位置矩形
self.rect = self.image1.get_rect()
# 得到整个窗口的宽高
self.width, self.height = bg_size[0], bg_size[1]
# 设置敌机初始化位置
self.rect.left, self.rect.top = random.randint(0, self.width - self.rect.width), random.randint(-15 * self.height, -5 * self.height)
# 设置敌机初始速度
self.speed = 1
# 定义敌机状态 True为正常,False为爆炸
self.active = True
# 定义敌机用于碰撞检测的范围(mask的from_surface方法返回Surface对象图片中非透明的部分)
self.mask = pygame.mask.from_surface(self.image1)
# 定义大型飞机的血条
self.energy = BigEnemy.energy
# 定义属性,用于表示当前敌机是否被击中
self.hit = False
# 敌机移动只会从上往下冲,所以只需要修改y坐标的值就可以,如果敌机从页面消失了就重新初始化敌机的位置
def move(self):
if self.rect.top < self.height:
self.rect.top += self.speed
else:
self.reset()
def reset(self):
self.active = True
self.energy = BigEnemy.energy
# 设置敌机初始化位置
self.rect.left, self.rect.top = random.randint(0, self.width - self.rect.width), random.randint(-15 * self.height, -5 * self.height)
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。