Python3+pygame实现飞机大战游戏(免费完整项目) 您所在的位置:网站首页 飞机大战游戏界面 Python3+pygame实现飞机大战游戏(免费完整项目)

Python3+pygame实现飞机大战游戏(免费完整项目)

2023-06-08 18:09| 来源: 网络整理| 查看: 265

版权声明:原创不易,本文禁止抄袭、转载,侵权必究!

 

一、开发环境

开发环境 :Windows10    Python3.6.4

第三方库 :Pygame1.9.6

IDE       :PyCharm/Sublime Text

 

 

 二、功能模块

素材模块

游戏图片素材:

 

BGM及音效素材:

 

字体素材:

 

源码模块

子弹模块:

普通子弹部分源码:

def __init__(self, position): super().__init__() self.image = pygame.image.load("images/bullet1.png").convert_alpha() self.rect = self.image.get_rect() self.rect.left, self.rect.top = position self.speed = 12 self.active = False self.mask = pygame.mask.from_surface(self.image) def move(self): self.rect.top -= self.speed if self.rect.top < 0: self.active = False

 

超级子弹部分源码:

def __init__(self, position): super().__init__() self.image = pygame.image.load("images/bullet2.png").convert_alpha() self.rect = self.image.get_rect() self.rect.left, self.rect.top = position self.speed = 18 self.active = False self.mask = pygame.mask.from_surface(self.image) def move(self): self.rect.top -= self.speed if self.rect.top < 0: self.active = False

 

敌机子弹部分源码:

def __init__(self, speed, position): super().__init__() self.image = pygame.image.load("images/bullet1.png").convert_alpha() self.rect = self.image.get_rect() self.rect.left, self.rect.top = position self.speed = speed self.active = False self.mask = pygame.mask.from_surface(self.image)

 

敌机模块:

小型敌机部分源码:

class SmallEnemy(Enemy): def __init__(self, bg_size): super().__init__("images/enemy1.png", 2, bg_size) # 小型敌机毁灭图片切换 self.destroy_images = [] self.destroy_images.extend([pygame.image.load("images/enemy1_down1.png").convert_alpha(), pygame.image.load("images/enemy1_down2.png").convert_alpha(), pygame.image.load("images/enemy1_down3.png").convert_alpha(), pygame.image.load("images/enemy1_down4.png").convert_alpha()]) # 设置敌机原始位置 self.rect.left, self.rect.top = randint(0, self.width - self.rect.width), randint(-5 * self.height, 0) # 表明敌机目前的状态(为True表明敌机生存,反之为碰撞时毁灭,之后播放毁灭画面,重新调用reset方法,将敌机设置到初始位置) self.active = True # 返回英雄除了空白区域的部分 self.mask = pygame.mask.from_surface(self.image)

 

中型敌机部分源码:

class MidEnemy(Enemy): # 中型敌机打击次数 energy = 8 def __init__(self, bg_size): super().__init__("images/enemy2.png", 1, bg_size) # 中型敌机毁灭图片切换 self.destroy_images = [] self.destroy_images.extend([pygame.image.load("images/enemy2_down1.png").convert_alpha(), pygame.image.load("images/enemy2_down2.png").convert_alpha(), pygame.image.load("images/enemy2_down3.png").convert_alpha(), pygame.image.load("images/enemy2_down4.png").convert_alpha()]) # 子弹打击时效果图片 self.image_hit = pygame.image.load("images/enemy2_hit.png").convert_alpha() # 设置敌机原始位置 # self.width, self.height = bg_size[0], bg_size[1] self.rect.left, self.rect.top = randint(0, self.width - self.rect.width), randint(-10 * self.height, -self.height) self.active = True # 返回英雄除了空白区域的部分 self.mask = pygame.mask.from_surface(self.image) # 击打次数属性 self.energy = MidEnemy.energy # 是否击中属性 self.hit = False

 

 我方战机模块部分源码:

class MyPlane(pygame.sprite.Sprite): def __init__(self, bg_size): super().__init__() # 获取英雄图片(两幅图片实现动态效果) self.image1 = pygame.image.load("images/me1.png").convert_alpha() self.image2 = pygame.image.load("images/me2.png").convert_alpha() # 英雄毁灭图片切换 self.destroy_images = [] self.destroy_images.extend([pygame.image.load("images/me_destroy_1.png").convert_alpha(), pygame.image.load("images/me_destroy_2.png").convert_alpha(), pygame.image.load("images/me_destroy_3.png").convert_alpha(), pygame.image.load("images/me_destroy_4.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 = (self.width - self.rect.width) // 2, self.height - self.rect.height - 60 # 设置英雄速度 self.speed = 10 # 设置英雄生存状态 self.active = True # 设置飞机无敌 self.invincible = False # 返回英雄除了空白区域的部分 self.mask = pygame.mask.from_surface(self.image1)

 

技能模块部分源码:

class BulletSupply(pygame.sprite.Sprite): def __init__(self, bgsize): super().__init__() self.image = pygame.image.load("images/bullet_supply.png").convert_alpha() self.rect = self.image.get_rect() self.width, self.height = bgsize[0], bgsize[1] self.rect.left, self.rect.bottom = randint(0, self.width - self.rect.width), -100 self.speed = 5 self.active = False self.mask = pygame.mask.from_surface(self.image) def move(self): if self.rect.top


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有