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 个节点组成的一个具有层次关系的数据集合。其大概结…

安卓手机APP开发的功能之一:通知概述

安卓手机APP开发的功能之一:通知概述 一个通知是一个消息,这是一个安卓显示在你的APP的界面的外面的消息. 以提醒的方式提供给用户的消息,是和其他人的通信,或者是来自于你的&#…

新手学python还是c?

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

【算法】链表翻转的两种写法

初始化 ListNode listNode5 new ListNode(5, null); ListNode listNode4 new ListNode(4, listNode5); ListNode listNode3 new ListNode(3, listNode4); ListNode listNode2 new ListNode(2, listNode3); ListNode listNode1 new ListNode(1, listNode2); doReverse(lis…

7-294 筛法求素数(埃式筛、欧拉筛)

素数是仅仅能被它本身和1整除的任何整数。筛法求素数是一种查找素数的方法。它的算法如下: 1、创建一个数组,并将所有元素初始化为1(真)。具有素数下标的数组元素将保持为1,而其它数组元素最终将被设置为0。 2、从数…

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

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

AI心理咨询

idea 真人介入时长,频率, 对受访者的体验变化曲线。 采集真人伴随AI咨询的数据, 研发代替真人插入AI咨询的AI 相关产品 标题AI心理咨询应用】继Woebot之后,国内诞生的“LLMCBT”应用:白小喵~ Woebot 标题AI 心理…

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

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

【现代控制】倒立摆模型

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

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

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

C语言中输入函数scanf与gets得区别

1. gets(接收字符串)会将终端接收的 \n 字符转换成 \0 2. gets可以接收 (空格)字符,但scanf不能接收空格字符 3. scanf中除了%c可以接收 (空格)和 \n 字符,其余均无法接收 和 \n 字符 4. 注意:gets不要和scanf混合使用&#xff0c…

学习使用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)在…