当前位置: 首页 > news >正文

pygame发射子弹后绘制射线

在这里插入图片描述

import pygame
import sys
import mathpygame.init()screen = pygame.display.set_mode((800, 600))
pygame.display.set_caption("Rotate and Shoot Bullets")# 定义子弹类
class Bullet:def __init__(self, x, y, angle):self.x = xself.y = yself.angle = angleself.speed = 5def update(self):rad_angle = math.radians(self.angle)self.x =self.x+  math.cos(rad_angle)*5self.y = self.y-  math.sin(rad_angle)*5def draw(self):p=pygame.draw.rect(screen, (255, 0, 0), (int(self.x), int(self.y),6,6))if (p.collidelistall(qsz)):  # 碰撞检测xiansz.clear()  # 先清空数组,前面有初始化# self.endx, self.endy = self.x, self.yxiansz.append((self.x, self.y))  # 使用对象外的数组,要是对象自己的变量,在碰撞后会覆盖碰撞位置的x,yq = [[1, 1, 1, 1, 1, 1, 1, 1],[1, 0, 0, 0, 0, 0, 0, 1],[1, 0, 0, 0, 0, 0, 0, 1],[1, 0, 0, 0, 0, 0, 0, 1],[1, 0, 0, 0, 0, 0, 0, 1],[1, 0, 0, 0, 0, 0, 0, 1],[1, 0, 0, 0, 0, 0, 0, 1],[1, 1, 1, 1, 1, 1, 1, 1]]
qsz=[]
bullets = []  # 子弹列表
player_x, player_y = 400, 300  # 玩家位置初始值
player_angle = 0  # 玩家初始角度
c=pygame.time.Clock()
xiansz=[(0,0)]
while True:for event in pygame.event.get():if event.type == pygame.QUIT:pygame.quit()sys.exit()keys = pygame.key.get_pressed()if keys[pygame.K_LEFT]:player_angle += 1  # 左箭头键逆时针旋转elif keys[pygame.K_RIGHT]:player_angle -= 1  # 右箭头键顺时针旋转elif keys[pygame.K_SPACE]:bullets.append(Bullet(player_x, player_y, player_angle))  # 空格键发射子弹screen.fill((255, 255, 255))  # 清空屏幕c.tick(70)for h in range(len(q)):#画墙#print(q[h],"行",h)for g in range(len(q[h])):if q[h][g]==1:#print(q[h][g],"个",g,h)pz=pygame.draw.rect(screen, (140, 240, 40), (100+h*60, 100+g*60, 60, 60))qsz.append(pz)for bullet in bullets:bullet.update()bullet.draw()for i in (bullets):#画射线pygame.draw.line(screen, (40, 140, 40), (player_x, player_y), (xiansz[0]))p=pygame.math.Vector2(player_x,player_y)#角色位置p1=pygame.math.Vector2(xiansz[0])#碰撞点x,yjuli=p.distance_to(p1)#计算距离,其实有距离后不用再画射线,后面画墙,画射线是为了理解pygame.display.flip()

相关文章:

pygame发射子弹后绘制射线

import pygame import sys import mathpygame.init()screen pygame.display.set_mode((800, 600)) pygame.display.set_caption("Rotate and Shoot Bullets")# 定义子弹类 class Bullet:def __init__(self, x, y, angle):self.x xself.y yself.angle angleself.s…...

逻辑回归都有什么类型

逻辑回归是一种用于解决分类问题的统计学习方法,它基于概率理论,将输入特征与输出类别之间的关系建模为一个概率分布。逻辑回归模型可以用不同的方法来表示,其中包括: 1. **基本逻辑回归模型**:最简单的逻辑回归模型假…...

基于springboot+vue实现的高校宿舍管理系统(界面优美,十分推荐)

一、项目简介 本项目是一套基于springbootvue实现的高校宿舍管理系统设计与实现 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,eclipse或者idea 确保可以运行! 该系统功能完善、界面美观…...

C语言学习笔记day18

1. 指针基本概念 1.地址:用来区分内存中不同字节的编号 2.指针:地址就是指针,指针就是地址 3.指针变量:存储指针的变量,有时去掉变量,称为指针 2. 指针运算符 1.&: 1.获得一个变量在内存空间中的首地址 2.让表达式类型升级 2.*: 1.取…...

JSP内置对象session

1.session对象,为会话对象,封装当前用户会话中的有关信息。 网页数据传递是单向传递的,session能够将数据进行多个数据互相传递,使用的是同一个东西 实例1: 利用session对象String getId() 方法获取当前session对象…...

BM96 主持人调度(二)(贪心算法)

一开始写的时候忘了给start、end数组赋值了 import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** 计算成功举办活动需要多少名主持人* param n int整型 有n个活动* param start…...

【TB作品】MSP430单片机读取大气压强传感器BMP180

文章目录 实物main所有代码 实物 main #include <msp430.h> #include "stdio.h" #include "OLED.h"#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h>// P2.2 oled scl // P2.3 oled sda// p…...

Github第一Star数的国产免费开源防火墙--雷池社区版初步体验

前言 近期准备搭建一个博客网站&#xff0c;用来存储工作室同学们的学习笔记。服务器准备直接放在公网上&#xff0c;方便大家随时随地的上传和浏览&#xff0c;为了防止网站被人日穿成为肉鸡&#xff0c;一些防御措施还是要部署的。 首先明确自己的需求&#xff1a; 零成本…...

自动驾驶涉及相关的技术

自动驾驶涉及多种技术&#xff0c;包括传感器、数据处理、决策制定和执行控制等方面。以下是一些关键技术的详细说明&#xff1a; 传感器技术&#xff1a; 激光雷达&#xff08;LiDAR&#xff09;&#xff1a;激光雷达通过发射激光束并测量其反射时间来获取周围环境的高精度三维…...

简单高效的GO发票识别+发票查验接口

在这个瞬息万变的商业世界里&#xff0c;商业欺诈如影随形&#xff0c;虚假发票成为企业难以忽视的风险。而发票作为每笔交易的重要凭证&#xff0c;对其进行入账前的真伪查验显得尤为重要。但面对海量的发票查验与发票录入工作&#xff0c;人工手动查验的方式&#xff0c;速度…...

c++和python基本数据类型比较

以下是 C 和 Python 中一些基本数据类型的比较&#xff1a; 1. 整数类型&#xff1a; C&#xff1a; C 中的整数类型包括 int, short, long, long long 等&#xff0c;它们的大小和范围取决于编译器和操作系统。 Python&#xff1a; Python 中只有一个整数类型 int&#xff0…...

运维工具如此割裂,九招帮你统一纳管

背景 在运维工具这个江湖中&#xff0c;出现了众多独行侠客&#xff0c;各怀绝技&#xff0c;各自为战。这些开源监控软件如同武林中的各派门派&#xff1a;SkyWalking 以精湛的追踪功夫独步武林&#xff1b;Prometheus 以灵活的告警机制纵横江湖&#xff1b;ELK 则如同黯然销…...

基于springboot的大创管理系统源码数据库

基于springboot的大创管理系统源码数据库 摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了大创管理系统的开发全过程。通过分析大创管理系统管理的不足&#xff0c;创建了一个计算机管理大创管理系统的方案。…...

解密辛普森悖论:如何在数据分析中保持清醒头脑

解密辛普森悖论&#xff1a;如何在数据分析中保持清醒头脑 之前也参加fine Bi的 培训&#xff0c;学到了辛普森悖论&#xff0c;今天为大家介绍一下 文章目录 解密辛普森悖论&#xff1a;如何在数据分析中保持清醒头脑前言我们来举一个例子数据分析解释管理应用的启示 前言 什…...

Vue前端框架

1.vue基本使用1 1.vue环境搭建 一般创建vue项目是在cmd命令中用&#xff1a;vue ui 命令&#xff0c;采用ui图形界面的方式直观创建项目。 2.vue基本使用方式&#xff1a;vue组件 3.文本插值 4.属性绑定 5.事件绑定 6.双向绑定 7.条件渲染 2.vue基本使用2 1.axios 安装axios命令…...

【随笔】Git 基础篇 -- 远程仓库 git clone(二十五)

&#x1f48c; 所属专栏&#xff1a;【Git】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#x1f496; 欢迎大…...

在js中如果a的值是空是不是if(表达式的值是false)?

在JavaScript中&#xff0c;一个变量的“空”值可以有多种含义&#xff0c;具体取决于该变量的类型和内容。对于if语句中的条件表达式&#xff0c;其值会被隐式地转换为布尔值。以下是JavaScript中常见的“空”值以及它们在布尔上下文中的行为&#xff1a; null&#xff1a;在…...

数据生成 | Matlab实现基于K-means和SVM的GMM高斯混合分布的数据生成

数据生成 | Matlab实现基于K-means和SVM的GMM高斯混合分布的数据生成 目录 数据生成 | Matlab实现基于K-means和SVM的GMM高斯混合分布的数据生成生成效果基本描述模型描述程序设计参考资料 生成效果 基本描述 1.Matlab实现基于K-means和SVM的GMM高斯混合分布的数据生成&#xf…...

HarmonyOS开发:【NFC配置流程】

一、简介 碰一碰是HarmonyOS具备的多终端业务协同技术。其依托NFC短距通信协议&#xff0c;通过碰一碰的交互方式&#xff0c;将手机和全场景设备连接起来。然后通过手机端的原子化服务能力&#xff0c;快速完成配网、远程控制的能力&#xff0c;解决了应用与设备之间接续慢、…...

解决JQuery和其他库的冲突

文章目录 1.使用 noConflict() 方法&#xff1a;2.使用 IIFE&#xff08;立即调用函数表达式&#xff09;&#xff1a;3.加载顺序&#xff1a;4.使用命名空间&#xff1a;5.使用 jQuery Migrate 插件&#xff1a; 1.使用 noConflict() 方法&#xff1a; 这是最常见和简单的解决…...

告别天价桥接芯片!用高云GW5AT-LV15MG132 FPGA搞定MIPI C-PHY摄像头测试盒

国产FPGA革新摄像头测试方案&#xff1a;高云GW5AT-LV15MG132的MIPI C-PHY实战解析 在摄像头模组生产线上&#xff0c;测试环节的成本与效率直接关系到企业竞争力。传统测试方案依赖进口FPGA搭配昂贵桥接芯片&#xff0c;不仅物料清单&#xff08;BOM&#xff09;成本居高不下…...

如何通过InstantClick事件回调实现精准的性能监控:开发者必备指南

如何通过InstantClick事件回调实现精准的性能监控&#xff1a;开发者必备指南 【免费下载链接】instantclick InstantClick makes following links in your website instant. 项目地址: https://gitcode.com/gh_mirrors/in/instantclick InstantClick是一款能让网站链接…...

Cursor Pro功能解锁全攻略:从免费版到专业体验的完整指南

Cursor Pro功能解锁全攻略&#xff1a;从免费版到专业体验的完整指南 【免费下载链接】cursor-free-vip [Support 0.45]&#xff08;Multi Language 多语言&#xff09;自动注册 Cursor Ai &#xff0c;自动重置机器ID &#xff0c; 免费升级使用Pro 功能: Youve reached your …...

告别手动操作!Open-AutoGLM让iPhone听懂人话,自动执行指令

告别手动操作&#xff01;Open-AutoGLM让iPhone听懂人话&#xff0c;自动执行指令 1. 引言 你是否厌倦了每天重复点击手机屏幕的操作&#xff1f;是否希望手机能像真人助理一样理解你的需求并自动完成任务&#xff1f;今天我要介绍的Open-AutoGLM正是这样一个革命性的AI手机智…...

Kazumi:跨平台动漫资源整合解决方案,打造个性化追番体验

Kazumi&#xff1a;跨平台动漫资源整合解决方案&#xff0c;打造个性化追番体验 【免费下载链接】Kazumi 基于自定义规则的番剧采集APP&#xff0c;支持流媒体在线观看&#xff0c;支持弹幕。 项目地址: https://gitcode.com/gh_mirrors/ka/Kazumi 动漫爱好者常面临三大…...

S2-Pro自动化运维脚本生成:应对Linux服务器常见管理任务

S2-Pro自动化运维脚本生成&#xff1a;应对Linux服务器常见管理任务 1. 运维工程师的新助手 最近遇到个挺有意思的事。我们团队新来的运维小哥&#xff0c;处理服务器问题时总要先翻半天文档&#xff0c;再到处搜脚本模板。看着他手忙脚乱的样子&#xff0c;我突然想起自己刚…...

S2-Pro模型管理利器:Ollama国内镜像源加速下载与使用

S2-Pro模型管理利器&#xff1a;Ollama国内镜像源加速下载与使用 1. 为什么需要国内镜像源 如果你在国内使用Ollama管理S2-Pro等大模型&#xff0c;可能经常遇到下载速度慢、连接不稳定甚至完全无法拉取模型的问题。这是因为默认的模型仓库位于海外服务器&#xff0c;受网络环…...

Zend Framework错误处理与日志记录终极指南:10个构建稳定生产环境的技巧

Zend Framework错误处理与日志记录终极指南&#xff1a;10个构建稳定生产环境的技巧 【免费下载链接】zendframework Official Zend Framework repository 项目地址: https://gitcode.com/gh_mirrors/ze/zendframework Zend Framework作为一款成熟的PHP开发框架&#xf…...

【Python】利用Python实现微信公众号文章定时自动发布

1. 微信公众号自动发布的基础原理 很多人可能不知道&#xff0c;微信公众号其实提供了完整的开发者接口&#xff0c;允许我们通过代码来管理内容。这就像给你的公众号装了一个遥控器&#xff0c;不用每天手动登录后台点点戳戳。我最早发现这个功能时&#xff0c;简直像发现了新…...

从HTTP到字节流:ESP32与App Inventor通信协议的效率优化实践

1. 为什么需要优化ESP32与App Inventor的通信协议&#xff1f; 当你用ESP32和App Inventor做一个遥控小车时&#xff0c;最让人抓狂的就是按下按钮后小车要等半秒才有反应。这种延迟问题在HTTPJSON通信方案中非常典型。我去年做过一个智能家居控制系统&#xff0c;最初用的就是…...