Pygame基础9-射击

简介

玩家用鼠标控制飞机(白色方块)移动,按下鼠标后,玩家所在位置出现子弹,子弹匀速向右飞行。
在这里插入图片描述

代码

没有什么新的东西,使用两个精灵类表示玩家和子弹。
有一个细节需要注意,当子弹飞出屏幕时,要将子弹清除(kill)。(否则虽然看不见子弹了,但是子弹还是(一直)存在,会占用内存。

import pygame
import sysclass Player(pygame.sprite.Sprite):def __init__(self):super().__init__()self.image = pygame.Surface((50, 50))self.image.fill((255, 255, 255))self.rect = self.image.get_rect(center = (screen_size[0]//2, screen_size[1]//2))def update(self):self.rect.center = pygame.mouse.get_pos()def shoot(self):return Bullet(self.rect.centerx, self.rect.centery)class Bullet(pygame.sprite.Sprite):def __init__(self,pos_x, pos_y):super().__init__()self.image = pygame.Surface((50, 10))self.image.fill((255, 0, 0))self.rect = self.image.get_rect(center = (pos_x, pos_y))self.speed = 5def update(self):self.rect.x += self.speed# 如果子弹超出屏幕,就删除。否则子弹会(在屏幕外)一直存在。if self.rect.right > screen_size[0] + 20:self.kill()# 初始化
pygame.init()
screen_size = (800, 600)
screen = pygame.display.set_mode(screen_size)
pygame.display.set_caption("Pygame Demo")
clock = pygame.time.Clock()pygame.mouse.set_visible(False)player = Player()
player_group = pygame.sprite.Group()
player_group.add(player)bullet_group = pygame.sprite.Group()while True:for event in pygame.event.get():if event.type == pygame.QUIT:pygame.quit()sys.exit()if event.type == pygame.MOUSEBUTTONDOWN:bullet = player.shoot()bullet_group.add(bullet)# update# drawscreen.fill((0, 0, 0))   # 先画子弹,再画玩家,否则玩家会被子弹挡住。bullet_group.update()bullet_group.draw(screen)player_group.update()player_group.draw(screen)pygame.display.flip()clock.tick(60)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RK3568 学习笔记 : 独立修改与编译 u-boot

前言 开发板:【正点原子】ATomPi-CA1 开发板,配置:RK3568,4GB DDRAM 64GB emmc 开发板资料给了 u-boot 与 Linux kernel 源码,尝试手动编译。 本篇记录 收到编译 RK3568 平台 u-boot 的方法 环境搭建 由于 RK 平台…

椋鸟数据结构笔记#5:树、二叉树基础

文章目录 树树的相关概念树的表示 二叉树基础二叉树分类满二叉树完全二叉树 二叉树的性质二叉树的存储结构顺序存储链式存储 萌新的学习笔记,写错了恳请斧正。 树 树是一种非线性的数据结构,它是由 n 个节点组成的一个具有层次关系的数据集合。其大概结…

新手学python还是c?

考虑到个人情况和职业规划是非常重要的。我这里有一套编程入门教程,不仅包含了详细的视频讲解,项目实战。如果你渴望学习编程,不妨点个关注,给个评论222,私信22,我在后台发给你。 Python作为初学者入门语言…

基于three-mesh-bvh实现第一人称及第三人称的漫游

基于three-mesh-bvh实现第一人称及第三人称的漫游 简介 这篇文章主要介绍在3d场景中实现第一人称与第三人称切换以及碰撞监测的漫游方案。 人称视角的场景漫游主要需要解决两个问题,人物在场景中的移动和碰撞检测。移动与碰撞功能是所有三维场景首先需要解决的基…

ObjectiveC-03-XCode的使用和基础数据类型

本节做为Objective-C的入门课程,笔者会从零基础开始介绍这种程序设计语言的各个方面。 术语 ObjeC:Objective-C的简称,因为完整的名称过长,后续会经缩写来代替;项目/工程:也称工程,指的是一个A…

【现代控制】倒立摆模型

基础公式 转动惯量: 欧拉拉格朗日等式 倒立摆模型建立 由拉格朗日等式推导出微分方程: 也就是 将zdot移到等式左边,化简得到 展开就是: 系统线性化 法一:雅可比矩阵 法二:小角度假设 化简最终得…

基于8086贪吃蛇游戏系统方恨设计

**单片机设计介绍,基于8086贪吃蛇游戏系统方恨设计 文章目录 一 概要二、功能设计三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于8086的贪吃蛇游戏系统设计是一个结合了微处理器控制、游戏逻辑以及图形显示技术的综合性项目。该系统旨在通过8086微处理器…

学习使用echats因xAxis值过多,可以滚动的柱状图解决方案

学习使用echats因xAxis值过多,可以滚动的柱状图解决方案 效果图柱状图代码关键代码 效果图 柱状图代码 function echarts() {// 基于准备好的dom,初始化echarts实例var myChart echarts.init(document.getElementById(echart4));let xaxisData [1, 2,…

篮球竞赛预约平台的设计与实现|Springboot+ Mysql+Java+ B/S结构(可运行源码+数据库+设计文档)

本项目包含可运行源码数据库LW,文末可获取本项目的所有资料。 推荐阅读300套最新项目持续更新中..... 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含ja…

LabelConvert: 目标检测和图像分割数据集格式转换工具

LabelConvert LabelConvert是一个目标检测和图像分割的数据集格式转换工具,支持labelme、labelImg与YOLO、VOC和COCO 数据集格式之间的相互转换。 支持的转换格式 安装 pip install label_convert具体使用方法 由于文章篇幅所限,请移步LabelConvert官…

idea 报错 Could not list the contents of folder “ftps

idea 报错 Could not list the contents of folder "ftps 解决方案 这里看到了网上的解决方案,顺便再记录一下。打开 【高级】菜单 - 取消勾选 被动模式。然后点击测试连接,显示连接成功! ftp中的主动模式和被动模式 主动模式&…

GS1-全球分类标准

GS1 GS1是一个中立的全球合作平台,汇集行业领袖、政府、监管机构、学术界和协会,共同开发基于标准的解决方案,以应对数据交换的挑战。我们的规模和影响力——遍布 116 个国家/地区的当地会员组织、超过 200 万家用户公司和每天 100 亿笔交易—…

Python中os.environ基本介绍及使用方法

文章目录 python中os.environos.environ简介os.environ进行环境变量的增删改查 python中os.environ的使用详解1. 简介2. key 字段详解2.1 常见 key 字段 3. os.environ.get() 用法4. 环境变量的增删改查和判断是否存在4.1 新增环境变量4.2 更新环境变量4.3 获取环境变量4.4 删除…

基于“遥感+”蓝碳储量估算、红树林信息提取实践技术应用与科研论文写作教程

原文链接:基于“遥感”蓝碳储量估算、红树林信息提取实践技术应用与科研论文写作教程https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247599633&idx5&sn1398cde523f9c5e036e4d478fc1d3388&chksmfa8207f6cdf58ee0a3a2bf652e7ac5cf65636b05f9e…

[技术笔记] Flash选型之基础知识芯片分类

1、按照接口分类 分为 Serial串口Flash 和 Parallel并口Flash; 市场大量使用Serial Flash;价格便宜;已满足系统对数据读写速度的要求; Serial Flash已经可以代表 NOR Flash; 小知识: 1)在…

fastapi学习记录

今天看了点fastap,简单记录下,fastapi是一个python下的后端框架。 参考学习网站菜鸟教程 安装 pip install fastapi pip install "uvicorn[standard]"安装好了以后就可以直接使用,最主要的使用方式就是写接口嘛,get&a…

【软考】-事务与封锁协议

1、事务的四个特性 (操作) 原子性:要么全做,要么全不做。 (数据)一致性:事务发生后数据是一致的,例如银行转账,不会存在 A 账户转出,但是 B 账户没收到的情况。 (执行)隔离性:任一事务的更新…

2024最新软件测试【测试理论+ Unittest 框架】面试题(内附答案)

一、测试理论 3.1 你们原来项目的测试流程是怎么样的? 我们的测试流程主要有三个阶段:需求了解分析、测试准备、测试执行。 1、需求了解分析阶段 我们的 SE 会把需求文档给我们自己先去了解一到两天这样,之后我们会有一个需求澄清会议, …

Halcon3D倾斜平面矫正至水平面

前言 在相当多的3d检测中,由于各种因素的干扰,我们所检测的平面通常并不是一个水平面,或者被检测的面不是水平面的情况。尤其是在倾斜面的缺陷检测和平面度检测中,使用被测面与拟合基准面进行计算很难做到准确的定位到缺陷的情况…

openinstall携手得到App,为终身学习者升级服务体验

近日,openinstall与知识付费领域头部品牌得到App达成合作。未来经过openinstall先进的渠道来源追踪技术加持,得到App在渠道推广、用户拉起、分享传播等活动中将获得高效的数据分析能力和用户体验优化,进一步构建数据驱动模式,同时…