通过Python编写飞机大战游戏,面向对象设计思想,相对比较简单,你也可以大胆尝试吧!

Python游戏开发实战:从零构建“人狗大作战”游戏 面向对象编程(OOP)是Python等现代编程语言的核心范式,它通过封装、继承和多态等机制,将数据和操作组织成可复用的类与对象,从而提升代码的模块化和可维护性。其原理在于将现实世界中的实体抽象为软件对象,每个对象包含属性(状态)和方法(行为)。这种编程思想的技术价值在于能够有效管理复杂项目,促进团队协作,并构建可扩展的应用程序架构。在游戏开发、Web后端、GUI应用等场景中,OOP尤为关键。本文以“人狗大作战”游戏项目为例,结合Pygame库,实战演示如何运用OOP思想设计Player、Enemy、Bull 阅读详情

1、先看看游戏屏幕样式及工作原理

2、再看看动画工作原理

效果展示:

一、功能简介
游戏中我发飞机在下方,由玩家键盘控制左右移动和发射子弹。上方为敌方飞机,随机发射子弹和移动。暂时没有写飞机被击中的逻辑,这里只是为了课程总结,体验一下面向过程的编程方式。

分析,实现效果可分为一下几步操作

搭建界面、创建界面标题
添加背景音乐
玩家飞机的键盘控制检测
玩家飞机的显示、移动、发射子弹、子弹显示、子弹超出显示范围后删除
敌方飞机的显示、移动、发射子弹、子弹显示、子弹超出显示范围后删除
玩家子弹 和 敌方子弹的贴图、发射方式不同(玩家子弹由键盘控制发射、敌方子弹随机发射)
从上面的分析可看出,玩家 和 敌方的飞机和子弹都有共同之处,这些共同之处可有一个统一的基类实现,子类实现不同之处,子类继承父类。

二、代码

  import pygame    #导入第三方模块
  import random    #加载随机数
  import time      #加载时间函数
  pygame.init()    #初始化pygame ,否则会报错[pygame.error: video system not initialized]
  #抽象一个飞机的基类
  class BasePlan():
  def __init__(self, screen,ImageName,x,y):  # Screen是要显示在哪个窗口
    # 设置要显示内容的窗口
    self.screen = screen
    # 生成飞机图片
    self.image = pygame.image.load(ImageName)
    # 存放子弹的列表
    self.BulletList = []
    # 默认位置
    self.x = x
    self.y = y

    pass
def DisPlay(self):
    self.screen.blit(self.image, (self.x, self.y))  # 显示飞机主体
    #完善子弹的展示逻辑
    NeedDelTtemlist=[]                      #创建要删除的子弹列表
    for item in  self.BulletList:           #遍历子弹列表
        if item.Bullet_Judge():             #判断子弹是否要删除
            NeedDelTtemlist.append(item)    #要删除的子弹对象追加到要删除的列表中
            pass
        item.Bullet_Display()               #显示子弹位置
        item.Bullet_Move()                  #子弹移动
        pass
        for i in NeedDelTtemlist:               #遍历要删除的子弹列表
            self.BulletList.remove(i)           #删除子弹对象
            pass
        # for iB in self.BulletList:              #遍历子弹列表
        #     iB.Bullet_Display()                 #显示子弹位置
        #     iB.Bullet_Move()                    #子弹移动
        pass
    pass
pass
  class BaseBullet():
def __init__(self,screen,ImageName,x,y,who):
    self.x = x
    self.y = y
    self.screen = screen
    self.image = pygame.image.load(ImageName)
    self.BulletType=who     #是谁发射的子弹
    pass
def Bullet_Display(self):
    self.screen.blit(self.image, (self.x, self.y))  # 显示子弹
def Bullet_Move(self):
学习python的pygame模块尝试实现飞机大战游戏 摘要 通过描述游戏的系统结构、代码实现模仿飞机大战,学习使用、安装pygame,用pygame模块中的sprite模块等技术开发一个有数据实时记录、动画效果、碰撞检测、音乐音效播放、暂停功能的弹幕射击游戏。 1.引言 本论文旨在学习使用pygame模块进行游戏开发作为python课程的期末作业,记录学习过程。期望模仿飞机大战,做一个实现数据实时记录、动画效果、碰撞检测、音乐音效播放、暂停功能的弹幕射击游戏。 系统结构 本游戏项目设计为4个模块: game.py:游戏主模块,封装game类并负责启动游 阅读详情

相关推荐

从IDLE到VSCode:Python与Pygame开发环境高效配置指南

集成开发环境(IDE)是现代软件开发的核心工具,它通过代码补全、调试和项目管理等功能,将开发者从繁琐的底层操作中解放出来,专注于逻辑实现。其原理在于将编辑器、编译器、调试器等工具集成,提供统一的图形化界面和自动化工作流。在Python开发中,一个高效的IDE能显著提升生产力,尤其适用于游戏开发、Web应用等复杂场景。本文以Pygame游戏开发为例,深入讲解如何将开发环境从基础的IDLE迁移至功能强大的Visual Studio Code(VSCode),涵盖**环境搭建**、**核心插件配置**、**专属调

weixin_34318272的博客 498

python+pygame之飞机大战-第一版源代码分析

python学习心得-python+pygame之飞机大战-第一版源代码分析

俺是永不停歇的鱼的博客 4010

python飞机大战设计(论文+程序+源代码)

飞机大战1、设计概述2、需求分析2.1 系统总体分析2.2 游戏设置分析3、课题及任务功能描述3.1 课题研究背景3.2 功能描述4、总体设计4.1 系统总体设计4.2 详细设计4.2.1 背景设置4.2.2 界面设置4.2.3 玩家飞机设置4..2.4 敌机设置4.2.5 关卡设置4.2.6 奖励设置5、功能实现5.1 启动5.2 音效5.3 敌机被击中5.4 获取道具及升级5.5 分数记录6、总结注: 需要源码你懂得 1、设计概述 在社会经济发展迅速,人们的工作压力越来越来,长时间紧张繁忙的工作

itbestboy的博客 8149

Python 全栈工程师学习笔记 ——【飞机大战】游戏

设计说明: 完成敌机发射子弹功能(注意:子弹不是连发、移动速度不要太快) 实现敌机子弹和玩家飞机的碰撞检测实现敌机子弹和玩家飞机的碰撞检测 为消失的飞机添加爆炸效果为消失的飞机添加爆炸效果 【飞机大战】的代码存放在 https://gitee.com/luhuadong/Python_Learning/tree/master/2nd_week/homework/aircraft_war 项目特...

程序员「阿基米东」的编程之旅 1万+

导出库的版本_Windows下PaddleOCR在C++中的推理部署(CPU版本)CMake + VS2017

PaddleOCR是一个与OCR相关的开源项目,不仅支持超轻量级中文OCR预测模型,总模型仅8.6M(单模型支持中英文数字组合识别、竖排文本识别、长文本识别,其中检测模型DB(4.1M)+识别模型CRNN(4.5M)),而且提供多种文本检测训练算法(EAST、DB)和多种文本识别训练算法(Rosetta、CRNN、STAR-Net、RARE)。本文将教大家通过PaddleOCR(CPU版...

weixin_31304817的博客 1914

手把手教你排查libstdc++.so.6版本问题:从GLIBCXX缺失到完美解决

本文深入解析Linux系统中常见的GLIBCXX版本缺失问题,以`ImportError: /lib/x86_64-linux-gnu/libstdc++.so.6: version 'GLIBCXX_3.4.29' not found`为例,从动态链接原理入手,提供使用`strings`和`find`命令的诊断方法,并详细对比了四种解决方案的优缺点。文章重点推荐通过设置`LD_LIBRARY_PATH`或更新系统库的安全策略,并最终建议使用Docker容器化技术实现环境依赖的根治与统一管理。

j7k8l的博客 300

temu登录接口逆向分析(含Py纯算)

【代码】temu登录接口逆向分析(含Py纯算)

数据精灵喵 1946

VisionMaster 4.2.0安装

按照顺序安装。

XuXing_java的专栏 3790

MacBook 上 LaTeX 环境搭建:从 Mactex 到 Sublime Text 与 Skim 的保姆级配置流程

本文详细介绍了在MacBook上搭建LaTeX环境的完整流程,从Mactex安装到Sublime Text与Skim的配置优化。涵盖基础环境准备、编辑器设置、PDF预览同步等关键步骤,帮助用户快速建立高效的LaTeX工作流,特别适合学术写作和技术文档创作。

weixin_30824599的博客 681

2023 年全国网络安全行业职业技能大赛-电子数据取证分析师-决赛WP_2023网络安全行业赛取证

数据库取证工具里面可以恢复删除掉的数据带红叉的就说删除过的,game库下面announcement_detail表里面update_time字段使用sql语句时间戳最大为1513243355转换时间为2017-12-14 17:22:35。

2401_89791684的博客 2092

中兴U30air随身WiFi刷机全攻略:从ABD开启到系统调试(附工具包)

本文提供中兴U30air随身WiFi刷机全攻略,从ADB开启到系统调试的详细步骤,包括必备工具清单、ADB调试模式解锁、Bootloader解锁及自定义ROM刷入与调优。适合技术爱好者深度定制设备,提升网络性能和功能扩展。

weixin_29235923的博客 1949

【图像处理】德里奇( Deriche)边缘检测器

Deriche边缘检测,同canny算法齐名,因此,知道canny原理,也有必要知道德里奇的检测原理。本篇专门针对德里奇算法展开讨论。

gongdiwudu的专栏 8683

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

上一篇: Python接口测试快速实践,让你的编程更上一层楼!
下一篇: Python爬虫项目,非常适合想要入门的小白学习,简单实用,举一反三。
普通网友
博客等级 码龄2年 529粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值