飞机大战python代码

这篇具有很好参考价值的文章主要介绍了飞机大战python代码。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

下面附有源代码,一个简单运用python的应用。

图片可自己自由调配 部分模块需要去从python的软件包去下载,可以去从清华和北大还有阿里的云仓库中获取镜像链接,下载速度会快点。

源代码如下并有详细注释:文章来源地址https://www.toymoban.com/news/detail-773423.html

import pygame                       #导入pygame模块
from pygame.locals import *             #导入pygame.locals模块
import time                         #导入time模块


#子弹类
class Bullet(object):
    def __init__(self, screen_temp, x, y):  #构造方法 初始化子弹对象的属性
        self.x = x+40   #子弹起始X坐标
        self.y = y-20   #子弹起始Y坐标
        self.screen = screen_temp   #窗口
        self.image = pygame.image.load("./images/bullet.png")   #创建一个子弹图片

    def display(self):  #显示子弹图片的方法
        self.screen.blit(self.image, (self.x, self.y))  #将创建的子弹图片按设定的坐标贴到窗口中

    def move(self): #子弹移动方法
        self.y-=10  #子弹Y坐标自减10

    def judge(self):    #判断子弹是否越界的方法
        if self.y<0:    #如果子弹的Y坐标小于0
            return True #返回true正确
        else:
            return False #返回false错误

#飞机类
class Aircraft_obj(object):
    def __init__(self, screen_temp):    #构造方法 初始化飞机对象的属性
        self.x = 190    #飞起起始X坐标
        self.y = 708    #飞机起始Y坐标
        self.screen = screen_temp   #窗口
        self.image = pygame.image.load("./images/hero1.png")    #创建一个飞机图
        self.bullet_list = []#存储发射出去的子弹对象引用

    def display(self):  #显示飞机图片的方法(这里包括了显示子弹的图片)
        self.screen.blit(self.image, (self.x, self.y))  #将创建的飞机图片按设定的坐标贴到窗口中
        
        #显示飞机发射的所有子弹
        for bullet in self.bullet_list:
            bullet.display()    #显示子弹
            bullet.move()   #移动子弹
            if bullet.judge():#判断子弹是否越界
                self.bullet_list.remove(bullet) #将子弹从bullet_list中删除

    def move_left(self):    #飞机左移方法
        if self.x < 10:     #X坐标小于10(移动距离)
            pass            #不做任何事
        else:
            self.x -= 10    #X坐标自减少10

    def move_right(self):   #飞机右移方法
        if self.x > 480-100-10: #X坐标大于(窗口宽度-飞机宽度-移动距离)的值
            pass            #不做任何事
        else:               
            self.x += 10    #坐标自增加10
    #存储发射子弹的方法
    def fire(self): 
        self.bullet_list.append(Bullet(self.screen, self.x, self.y))    #将发射的子弹对象存储到bullet_list中


#敌机类
class EnemyPlane(object):
    def __init__(self, screen_temp):    #构造方法 初始化敌机对象的属性
        self.x = 0  #敌机的起始X坐标
        self.y = 0  #敌机的起始Y坐标
        self.screen = screen_temp   #窗口
        self.image = pygame.image.load("./images/enemy0.png")    #创建一个敌机图片
        self.direction = "right"    #用来存储飞机移动方向,默认向右移动

        #爆炸效果用的属性
        self.hit = False #表示是否要爆炸
        self.bomb_lists = [] #用来存储爆炸时需要的图片
        self.__crate_images() #调用这个方法向bomb_lists中添加图片
        self.image_num = 0#用来记录while循环的次数,当次数达到一定值时才显示一张爆炸的图,然后清空,当这个次数再次达到时,再显示下一个爆炸效果的图片
        self.image_index = 0#用来记录当前要显示的爆炸效果的图片的序号

    def __crate_images(self):   #将爆炸需要的图片添加到self.bomb_lists中
        self.bomb_lists.append(pygame.image.load("./images/enemy0_down1.png"))
        self.bomb_lists.append(pygame.image.load("./images/enemy0_down2.png"))
        self.bomb_lists.append(pygame.image.load("./images/enemy0_down3.png"))
        self.bomb_lists.append(pygame.image.load("./images/enemy0_down4.png"))

    #判断爆炸的方法,x1表示子弹最左侧的X坐标,x2表示子弹最右侧的X坐标,y表示子弹当前的Y坐标
    def  blast(self,x1,x2,y):   
    #判断子弹能命中敌机的三种情况,满足任意一种即可让敌机爆炸,51是敌机图片的宽度,39是敌机图片的高度
    #1.子弹横坐标在敌机横坐标的区域中,并且子弹Y坐标小于敌机图片的高度
    #2.子弹最右侧坐标等于敌机最左侧坐标,并且子弹Y坐标小于敌机图片的高度
    #3.子弹最左侧坐标等于敌机最右侧坐标,并且子弹Y坐标小于敌机图片的高度
        if ((x1>=self.x and x2<=self.x+51) or x2==self.x or x1==self.x+51) and y<39:
            self.hit = True

    def display(self):  #显示敌机的方法
         #如果被击中,就显示爆炸效果,否则显示普通的飞机效果
        if self.hit == True:    #如果满足爆炸条件,就显示爆炸的图片
            self.screen.blit(self.bomb_lists[self.image_index], (self.x, self.y))
            self.image_num+=1   #这是统计循环次数,为了使玩家看清爆炸效果
            if self.image_num == 7: #如果循环次数达到7次
                self.image_num=0    #将循环次数改为0次
                self.image_index+=1 #图片显示序号+1,换为另一张图
            if self.image_index>3:  #这里爆炸图片一共是四张,所以是图片序号大于三次
                time.sleep(1)       #暂停一秒
                exit()  #调用exit让游戏退出
        else:   #否则显示正常的敌机图片
            self.screen.blit(self.image,(self.x, self.y))

    def move(self): #敌机移动方法
        if self.hit == True: 
            pass
        else:
            if self.direction=="right":     #如果是向右移动
                self.x += 5     #X坐标自增加5
            elif self.direction=="left":    #如果是向左移动
                self.x -= 5     #X坐标自减少5

            if self.x>480-50:   #如果X坐标大于窗口减去敌机宽度的值
                self.direction = "left" #移动方向改为左
            elif self.x<0:      #如果X坐标小于0
                self.direction = "right"    #移动方向改为右

#处理鼠标和键盘事件的方法
def key_control(aircraft_temp):

    #获取当前等待处理的事件,使用for循环来遍历里面的事件
    for event in pygame.event.get():
        #判断是否点击了退出按钮
        if event.type == QUIT:
            print("exit")   #输出“exit”
            exit()  #退出窗口
        #判断是不是键盘按下事件
        elif event.type == KEYDOWN:
            #检测按键是不是a或者left
            if event.key == K_a or event.key == K_LEFT:
                print('left')   #输出“left”
                aircraft_temp.move_left()   #执行飞机左移方法
            #检测按键是不是d或者right
            elif event.key == K_d or event.key == K_RIGHT:
                print('right')  #输出“right”
                aircraft_temp.move_right()  #执行飞机右移方法
            #检测按键是不是空格键
            elif event.key == K_SPACE:
                print('space')  #输出“space”
                aircraft_temp.fire()    #执行飞机类中存储子弹的方法

def main():
    #1. 创建窗口
    pygame.init()
    screen = pygame.display.set_mode((480,852),0,32)

    #2. 创建一个背景图片
    background = pygame.image.load("./images/background.png")

    #3. 创建一个飞机对象
    aircraft = Aircraft_obj(screen)

     #4. 创建一个敌机对象
    enemy = EnemyPlane(screen)

    while True:
        screen.blit(background, (0,0))  #把背景复制到窗口的0,0处开始贴进去
        aircraft.display()  #执行飞机类中显示飞机的方法

        for bullet in aircraft.bullet_list: #循环飞机对象中存储的子弹信息
            x1 = bullet.x       #子弹当前X坐标
            x2 = bullet.x + 22  #子弹当前X坐标+子弹图片的宽
            y1 = bullet.y       #子弹当前Y坐标
            enemy.blast(x1,x2,y1)    #判断子弹的坐标区域有没有与敌机相交

        enemy.display()     #执行敌机类中显示敌机的方法
        enemy.move()        #调用敌机的移动方法
        pygame.display.update() #更新需要显示的内容到窗口
        key_control(aircraft)   #处理飞机对象的相关事件
        time.sleep(0.01)    #暂停0.01秒

main()

到了这里,关于飞机大战python代码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python版基于pygame的玛丽快跑小游戏源代码,玛丽冒险小游戏代码,支持双人模式

    基于pygame的玛丽快跑小游戏源代码,玛丽冒险小游戏代码,支持双人模式 按空格进入单人模式,按‘t’进入双人模式,双人模式下玛丽1采用空格键上跳,玛丽2采用方向上键上跳。 完整代码下载地址:Python版基于pygame的玛丽快跑小游戏源代码 完整代码下载地址:Python版基于

    2024年02月11日
    浏览(42)
  • Python利用pygame实现飞机大战游戏

    文章目录: 一:运行效果 1.演示 2.思路和功能 二:代码 文件架构 Demo 必备知识:python图形化编程pygame游戏模块 效果图 ◕‿◕✌✌✌ Python利用pygame实现飞机大战游戏运行演示 参考:【Python游戏】1小时开发飞机大战游戏-Pygame版本(1小时40分钟) 博主提取资源: 提取

    2024年04月09日
    浏览(65)
  • pygame飞机大战小游戏(python大作业)

      python大作业,在查看了老师给的链接发现教学视频不完整,所以借用了同学的《Python编程 从入门到实践》中的一个项目,学习模仿。 二、游戏具体介绍 这是一款由辉辉亲自打造的太空对战小游戏。 游戏背景:在广袤无垠的太空里有一群蓝精灵(不是)有一群邪恶的坏人,

    2024年02月11日
    浏览(49)
  • Python实验,用pygame做飞机大战游戏设计

    摘 要:根据课程要求,以及面向对象程序设计的编程思想,在Windows操作系统环境下,运用PyCharm编译程序,以Python语言为开发语言,最终实现飞机大战游戏相应的游戏操作功能。Python是一种跨平台的、开源的、免费的、解释型的高级编程语言。它具有丰富的、强大的库, 能够

    2024年02月07日
    浏览(35)
  • 【python】 pygame学习示例 --飞机大战小游戏制作

    python版本:3.8.5 所需模块:pygame random os pygame版本:20.1 开发环境:pycharm专业版 硬件环境:win11 8G内存以上 使用python的第三方库–pygame 制作飞机大战小游戏 小游戏的内容包括: 玩家player的移动 子弹的发射 陨石的随机掉落(包括旋转 大小 下落角度) 玩家 子弹 陨石的碰撞交互

    2024年02月04日
    浏览(44)
  • Python开发小游戏:写一个飞机大战只需要500行代码!

    ‘’’ :param background_image_path: 背景图片的路径地址 :param size: 游戏窗口的大小 :param title: 游戏窗口的标题 :param font_name: 指定字体 :param font_size: 指定字体大小 :param speed: 背景图滚动整个窗口一次所用时间,单位为ms ‘’’ self.size = size self.screen = pygame.display.set_mode(size) self.tit

    2024年04月11日
    浏览(40)
  • Python3+pygame实现有趣好玩的飞机大战游戏(附源码及素材)

    版权声明:原创不易,本文禁止抄袭、转载,侵权必究! 开发环境 :Windows10 Python3.6.4 第三方库 :Pygame1.9.6 IDE :PyCharm/Sublime Text 素材模块 游戏图片素材: BGM及音效素材: 字体素材: 源码模块 子弹模块 普通子弹部分源码: 超级子弹部分源码: 敌机子弹部分源码: 敌机模

    2024年02月11日
    浏览(54)
  • 【计算机视觉 | Kaggle】飞机凝结轨迹识别 Baseline 分享和解读(含源代码)

    比赛名称:Google Research - Identify Contrails to Reduce Global Warming 训练 ML 模型以识别卫星图像中的尾迹 比赛类型:计算机视觉、语义分割 Contrails 是“凝结轨迹”的缩写,是在飞机发动机排气中形成的线状冰晶云,由飞机飞过大气中的超潮湿区域时产生。持续的尾迹对全球变暖的贡

    2024年02月14日
    浏览(30)
  • Python游戏开发--外星人入侵(源代码)

    最近学习的python第一个项目实战,《外星人入侵》,成功实现所有功能,给大家提供源代码 环境安装:python 3.7+ pygame 安装 pygame 或者 先展示效果,消灭外星人,有三条命,按Q是退出全屏,空格键是子弹,按下play键开始游戏,击败外星人飞船会有积分加,三条命之后需要点击

    2024年02月06日
    浏览(40)
  • 飞机大战python代码

    下面附有源代码,一个简单运用python的应用。 图片可自己自由调配 部分模块需要去从python的软件包去下载,可以去从清华和北大还有阿里的云仓库中获取镜像链接,下载速度会快点。 源代码如下并有详细注释:

    2024年02月03日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包