python 使用pygame制作的打飞机小游戏

python基础使用pygame模块实现打飞机小游戏,有最高分记录,每次游戏的分数都会和最高分进行比较然后记录下来。
请添加图片描述
基础代码实现:

class Bullet:
    def __init__(self):
        # 初始化成员变量,x,y,image
        self.x = 0
        self.y = -1
        self.image = pygame.image.load("image/子弹.png").convert_alpha()
        self.active = False  # 根据active的状态处理子弹发射,默认不激活。

    def move(self):
        # 处理子弹的运动
        if self.active:
            self.y -= 1  # 激活状态下,子弹向上移动。

        if self.y < 0:
            self.active = False  # 当飞出屏幕,就设为不激活。

    def restart(self):
        # 重置子弹位置
        mouseX, mouseY = pygame.mouse.get_pos()
        self.x = mouseX - self.image.get_width() / 2
        self.y = mouseY - self.image.get_height() / 2
        self.active = True  # 激活子弹


class Enemy:
    def restart(self):
        # 重置敌机位置和速度
        self.x = random.randint(50, 400)
        self.y = random.randint(-200, -50)
        # self.speed = random.random() + 0.5
        self.speed = random.uniform(0.1, 0.4)

    def __init__(self):
        # 初始化
        self.restart()
        self.image = pygame.image.load("image/宿敌.png").convert_alpha()

    def move(self):
        if self.y < 800:
            # 向下移动
            self.y += self.speed
        else:
            # 重置
            self.restart()


class Plane:
    def restart(self):
        self.x = 200
        self.y = 600

    def __init__(self):
        self.restart()
        self.image = pygame.image.load("image/飞机.png").convert_alpha()

    def move(self):
        x, y = pygame.mouse.get_pos()
        x -= self.image.get_width() / 2
        y -= self.image.get_height() / 2
        self.x = x
        self.y = y


def checkHit(enemy, bullet):  # 如果子弹在敌机图片范围之内,则认为hit命中目标。
    if (bullet.x > enemy.x and bullet.x < enemy.x + enemy.image.get_width()) and (
            bullet.y > enemy.y and bullet.y < enemy.y + enemy.image.get_height()):
        enemy.restart()  # 重置敌机
        bullet.active = False
        return True
    return False

请添加图片描述
请添加图片描述
需要全部代码的可以私信

少年易老学难成,一寸光阴不可轻

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/140811.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

4.5 构建onnx结构模型-Reshape

前言 构建onnx方式通常有两种&#xff1a; 1、通过代码转换成onnx结构&#xff0c;比如pytorch —> onnx 2、通过onnx 自定义结点&#xff0c;图&#xff0c;生成onnx结构 本文主要是简单学习和使用两种不同onnx结构&#xff0c; 下面以pow 结点进行分析 方式 方法一&am…

【AI 编程助手】DevChat 指南:精准控制、简单扩展、多模型选择,助力开发者高效开发

文章目录 一、前言二、认识了解 DevChat2.1 什么是 DevChat2.2 DevChat 优势以及特点2.2.1 精准控制提示上下文2.1.2 简单的扩展机制2.1.3 多种大模型任选 三、构建安装 DevChat3.1 注册 DevChat3.2 DevChat 插件安装指南3.2.1 在 Windows 上安装git&#xff08;如已安装&#…

高效批量剪辑、处理和添加水印,用视频批量剪辑高手轻松搞定!

您是否曾经在处理大量视频时&#xff0c;因为剪辑、处理和添加水印等问题而感到烦恼&#xff1f;是否因为这些问题而大大降低了您的工作效率&#xff1f;现在&#xff0c;我们为您推荐一款全新的视频批量剪辑工具——视频批量剪辑高手&#xff0c;让您的工作效率瞬间翻倍&#…

msvcr110.dll文件丢失的解决方法

msvcr110.dll是一个动态链接库文件&#xff0c;属于Microsoft Visual C运行时库&#xff08;Runtime Library&#xff09;版本11.0。它包含了在Visual C程序中使用的函数和变量。当一个程序编译完成后&#xff0c;仍然需要一些运行时库来在操作系统上运行。这些库提供了程序所需…

联邦学习研究综述笔记

联邦学习 联邦学习的定义&#xff1a;联邦学习是一种分布式机器学习架构&#xff0c;包含多个客户端&#xff08;参与者&#xff09;和一个聚合服务器。客服端&#xff08;参与方&#xff09;&#xff1a;在本地使用自己的私有数据训练模型&#xff0c;训练完成之后将模型的参…

【机器学习】K近邻算法:原理、实例应用(红酒分类预测)

案例简介&#xff1a;有178个红酒样本&#xff0c;每一款红酒含有13项特征参数&#xff0c;如镁、脯氨酸含量&#xff0c;红酒根据这些特征参数被分成3类。要求是任意输入一组红酒的特征参数&#xff0c;模型需预测出该红酒属于哪一类。 1. K近邻算法介绍 1.1 算法原理 原理&a…

数据结构(超详细讲解!!)第二十三节 树型结构

1.定义 树型结构是一类重要的非线性数据结构&#xff0c;是以分支关系定义的层次结构。是一种一对多的逻辑关系。 树型结构是结点之间有分支&#xff0c;并且具有层次关系的结构&#xff0c;它非常类似于自然界中的树。树结构在客观世界中是大量存在的&#xff0c;例如家谱、…

【数据结构】树与二叉树(十四):二叉树的基础操作:查找给定结点的父亲(算法Father )

文章目录 5.2.1 二叉树二叉树性质引理5.1&#xff1a;二叉树中层数为i的结点至多有 2 i 2^i 2i个&#xff0c;其中 i ≥ 0 i \geq 0 i≥0。引理5.2&#xff1a;高度为k的二叉树中至多有 2 k 1 − 1 2^{k1}-1 2k1−1个结点&#xff0c;其中 k ≥ 0 k \geq 0 k≥0。引理5.3&…

基于头脑风暴算法优化概率神经网络PNN的分类预测 - 附代码

基于头脑风暴算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于头脑风暴算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于头脑风暴优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要&#xff1a;针对PNN神…

基于RK3399的室内健身魔镜方案

I 方案背景 一、健身魔镜的兴起 2020年疫情席卷全球&#xff0c;宅家是防疫的措施之一&#xff0c;因而宅家运动火爆&#xff0c;随之而来的宅家运动器材也风靡起来&#xff0c;其中包含既有颜值又具有多种功能的健身魔镜。 Ⅱ 方案介绍 一、健身魔镜的方案介绍 …

020线上线下融合商业模式 新零售系统定制开发

020线上线下融合商业模式将传统的线下实体店和线上电子商务相结合&#xff0c;通过双通道销售、互联网服务等方式&#xff0c;实现线上线下渠道的整合与协同发展。这种商业模式的核心在于通过整合线上线下资源&#xff0c;提供更优质的产品和服务&#xff0c;增强消费者体验和提…

查看包是由哪个依赖引入的

问题&#xff1a;在Maven项目中&#xff0c;如何查看某个包是由pom.xml文件的哪个依赖引入的&#xff1f; 示例&#xff1a; mvn dependency:tree -Dverbose -Dincludesjakarta.validation:jakarta.validation-api或者&#xff1a; mvn dependency:tree -Dincludesvelocity:…

微服务概览

单体架构 传统的软件应用为单体架构。尽管也是模块化逻辑&#xff0c;但是最终还是会打包并并部署为单体应用。最主要的原因是太复杂。并且应用扩展性低&#xff0c;可靠性也低。敏捷开发和部署变得无法完成。 治理办法&#xff1a;化繁为简&#xff0c;分而治之。 微服务起源…

基于回溯搜索算法优化概率神经网络PNN的分类预测 - 附代码

基于回溯搜索算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于回溯搜索算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于回溯搜索优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要&#xff1a;针对PNN神…

【Python小程序】浮点矩阵加减法

一、内容简介 本文使用Python编写程序&#xff0c;实现2个m * n矩阵的加、减法。具体过程如下&#xff1a; 给定两个m*n矩阵A和B&#xff0c;返回A与B的和或差。 二、求解方法 将两个矩阵对应位置上的元素相加。 三、Python代码 import numpy as np# 用户输入两个矩阵的维…

Spring Bean 生命周期的执行流程

&#xff08;mic老师面试文档摘录&#xff09; 普通人的回答&#xff1a; Spring Bean 的生命周期&#xff0c;可以分为单例、多实例。呃... 不对&#xff0c;这个是 Spring Bean 的作用域。 生命周期&#xff0c;我想想.... 我记得 Bean 的生命周期会有加载、实例化、销毁…

开源供应链管理系统 多供应商批发管理系统方案及源码输出

开发框架&#xff1a;PHPMySQL 后端框架&#xff1a;ThinkPHP 订货端&#xff1a;PC小程序 客户订货端&#xff1a;小程序 多仓库OR多供应商&#xff1a;多供应商 是否进销存&#xff1a;自带进销存 整个方案含B端订货PC、小程序端、C端小程序端下单&#xff0c;源码&…

UI和UX设计师实用高效的设计工具大全

真正专业和优秀的UX设计师不会介意使用哪个工具。因为&#xff0c;只要能力足够&#xff0c;即使条件不同&#xff0c;工具不同&#xff0c;也可以设计出让人眼前一亮的作品。也许&#xff0c;这种理解本身并没有什么大问题。然而&#xff0c;如今&#xff0c;设计师显然有如此…

刨根问底:Java中的“\p{P}”到底是什么意思

问题由来&#xff1a; 在代码中看到了Pattern.compile("\\p{P}")&#xff0c;用来识别符号&#xff0c;但是这个正则表达式却不匹配加号&#xff0c;所以\p{P}到底是什么意思呢 谷歌了一下&#xff0c;找到StackOverflow上有人问了一模一样的问题 可是这个问题被关…

ChatGLM3本地部署运行(入门体验级)

文章目录 前言零 硬件小白基知填坑eForce Game Ready驱动程序CUDA常用命令 环境准备NVIDIA驱动更新CUDA安装 部署补充内容体验 前言 学习自B站up主技术爬爬虾&#xff0c;感谢up主提供的整合包&#xff01; 零 硬件 6GB以上显存的NVIDIA显卡&#xff08;品质越高&#xff0c…
最新文章