用鼠标旋转图像

这里涉及的到图像旋转后,方向的计算。我也不是很明白。先记录下来再说。

#_*_coding:utf-8 _*_import pygame
from pygame.locals import *
from sys import exit
from gameobjects.vector2 import Vector2
from math import *background_image_filename='./images/sea.jpg'
sprite_image_filename='./images/fish.png'import pygame
from pygame.locals import *
from sys import exit
pygame.init()
# 让pygame完全控制鼠标
pygame.mouse.set_visible(False)
pygame.event.set_grab(True)screen=pygame.display.set_mode((640,480),0,32)
background=pygame.image.load(background_image_filename).convert()
sprite=pygame.image.load(sprite_image_filename)
clock=pygame.time.Clock()sprite_pos = Vector2(200, 150)   # 初始位置
sprite_speed = 300.     # 每秒前进的像素数(速度)
sprite_rotation = 0.      # 初始角度
sprite_rotation_speed = 360. # 每秒转动的角度数(转速)while True:for event in pygame.event.get():if event.type == QUIT:exit()pressed_keys = pygame.key.get_pressed()rotation_direction = 0.movement_direction = 0.# 通过移动偏移量计算转动rotation_direction = pygame.mouse.get_rel()[0]/5.0#更改角度if pressed_keys[K_LEFT]:rotation_direction+=1if pressed_keys[K_RIGHT]:rotation_direction-=1#前进 后退if pressed_keys[K_UP]:movement_direction+=1if pressed_keys[K_DOWN]:movement_direction-=1screen.blit(background,(0,0))#获得一条转向后的鱼rotated_sprite=pygame.transform.rotate(sprite,sprite_rotation)#获得转向后的矩形w,h=rotated_sprite.get_size()sprite_draw_pos=Vector2(sprite_pos.x-w/2,sprite_pos.y-h/2)screen.blit(rotated_sprite,sprite_draw_pos)time_passed = clock.tick()time_passed_seconds = time_passed / 1000.0# 图片的转向速度也需要和行进速度一样,通过时间来控制sprite_rotation += rotation_direction * sprite_rotation_speed * time_passed_seconds# 获得前进(x方向和y方向),这两个需要一点点三角的知识heading_x = sin(sprite_rotation * pi / 180.)heading_y = cos(sprite_rotation * pi / 180.)# 转换为单位速度向量heading = Vector2(heading_x, heading_y)# 转换为速度heading *= movement_directionsprite_pos += heading * sprite_speed * time_passed_secondspygame.display.update()

 

转载于:https://www.cnblogs.com/superxuezhazha/p/7450660.html

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

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

相关文章

trackingmore快递查询平台_国际快递物流信息追踪查询

以下是快递公司常用查询物流信息追踪平台1. 17TRACK查询网址:www.17track.net/zh-cn (强烈推荐,国际件都能查询)2. EMS查询网址:www.ems.com.cn 客服电话:11833. DHL网址查询:www.cn.dhl.com …

竞品分析该怎么做

竞品分析: 作用: 知己知彼,百战不殆。为自身产品设计提供功能、可用性、关键技术等方面的参考。提高自身产品的差异化程度。为新立项的产品、拍脑袋想出来的,降低风险。 如何选择竞品: 行业内领先的产品,通…

饿了么超时20分钟_饿了么回应“多等5分钟”,网友气炸了

广告记编辑整理(ID:adgroup)昨天一篇题为《外卖骑手,困在系统里》的文章刷屏文章指出外卖骑手是被平台系统算法与数据支配的“工具人”在系统的压迫下骑手们每天都在违反交规、与死神赛跑外卖员成了高危职业引发网友热议今天凌晨饿了么官方发布了一篇《你…

CCF历年试题总结

准备参加CCF考试,进行了一些试题的模拟,把做出的试题进行了一个汇总,持续更新中。 2017 201703-1 分蛋糕 转载于:https://www.cnblogs.com/shely-Wangfan/p/7452429.html

用户角色用户画像

用户角色: 用户角色 user personal,⽤户⻆⾊是⼀个集合体,不是指某个具体的⼈,是从用户群体中抽象出来的典型用户。 一般包含以下信息: 个人基本信息(性别、年龄、性格、学历、婚姻、爱好、职业&#xff09…

java获取本周的开始时间和结束时间_创业板注册制开始时间/股票开户流程结束后,怎么炒股?...

股户流程刚走完,先别急着炒股,多研究股市行情。首选开户选好券商,没选好后患无穷,券商建议是富途、老虎,这两家美股港股都可以入,各有优势,富途的港股股票期权值得关注,老虎证券目前…

MarkDown 中使用 LaTeX 数学式

 最近看了些机器学习的书籍, 想写点笔记记录下. 由于需要使用到很多的数学推导, 所以就看了下如何在 Markdown 中插入数学式,发现在 Markdown 中可以直接插入 LaTeX 数学式. 排版数学公式是 \(\TeX\) 系统设计的初衷, 在 \(\LaTeX\) 中占有特殊地位, 是…

信息架构、结构图、流程图

互联网信息架构: 信息架构的本质就是分类!按照一定的规则,对产品的功能和内容进行组织,在功能确定的情况下,合理地设置和摆放,建立尽可能短的使用路径。目的就是为了更高效的满足用户的使用需求。如不进行信…

api商品分享源码_谈谈微服务中的 API 网关(API Gateway)

在本篇文章中,我们就一起来探讨一下 API 网关在整个微服务分布式架构中的一个作用。# 背景我们知道在微服务架构风格中,一个大应用被拆分成为了多个小的服务系统提供出来,这些小的系统他们可以自成体系,也就是说这些小系统可以拥有…

Docker(4)-容器互联与端口映射

容器互联 默认情况下,容器都是各自独立运行,与世隔绝。 Docker提供了一个名为docker0的虚拟网桥,它会为每个相连的容器分配一个虚拟子网。但是尽管容器都连在同一个虚拟网桥上,如果没有额外的配置,它们还是不能够相互通…

设计规范-导航、弹窗、视图

常见导航样式: 根据产品的特性,导航可以混合使用,体现形式多样化。 不能为了追求多样化,滥用导航类型。 扁平式导航: 在一级页面提供导航栏,一般处于顶部/底部,适合频繁切换的模块&#xff0c…

f3arra1n3.4.1版本_GDB 10.1版本发布了

更多互联网新鲜资讯、工作奇淫技巧关注原创【飞鱼在浪屿】(日更新)GDB的10.1版,即GNU调试器,现已发布。GDB是Ada,C,C ,Fortran,Go,Rust等许多源代码级的调试器。GDB可以定位(调试正在运行的程序…

使用密钥登录CentOS系统(基于密钥的认证)

在Window客户端有多种软件可以登陆ssh,比如putty,xshelll,secureCRT,我就以xshell为例设置使用公钥和私钥验证登陆服务器。 使用Xshell密钥认证机制远程登录Linux 1、使用xshell生成公钥 Key Type 选择RSA (SSH1只支持…

原型的价值与注意事项

原型的价值: 对于产品经理来讲在工作中原型的价值主要体现以下三个部分: 在原型设计阶段花费的时间,可以避免额外的工作,节省总体时间、精力和成本。 原型是展示、讲述、体验之源,常用于做早期评审,以确保…

华为8545m5补全shell_华为hs8145v5 改华为界面和默认超密(一)

重点从电信界面改华为界面要点:修改配置文件必须要有 Root 权限,也就是要能登陆 Telnet 和补全 Shell 。开 Telnet 方法:1.需要有超密,登陆到电信管理页面,打开 Telnet 选项。在后台页面点击“安全”--->“ONT访问控…

08、单链表编程考点

单链表编程考点 1、将单链表的第一个结点放在单链表的最后一个结点的后面 /* 设h是无头结点的单链表,如果线性表h的长度不小于2,则将首元结点删除并插入到表尾 将单链表的第一个结点放在单链表的最后一个结点的后面 */ typedef struct node {elementype …

ios nstimer实现延时_iOS中定时器NSTimer的使用

1、初始化 (NSTimer *)timerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)yesOrNo; (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector us…

小程序产品的特点

认识小程序: 小程序:一种不需要下载安装,即可使用的应用。 小程序的特点: 开发成本低。 流畅的使用体验。 庞大的流量池可供使用。 用完即走,不占用手机内存,但是有使用记录供用户可方便的再次找回产品。…

数据库优化 - 多列索引经典题目

题目 假设某个表有一个联合索引(c1,c2,c3,c4)一下——只能使用该联合索引的c1,c2,c3部分 A where c1x and c2x and c4>x and c3x B where c1x and c2x and c4x order by c3 C where c1x and c4 x group by c3,c2 D where c1x and c5x order by c2,c3 …

nemesis什么车_狂野飙车9TrionNemesis介绍 S级车Trion复仇女神属性详解

狂野飙车9S级车Trion Nemesis介绍,狂野飙车9S级车Trion复仇女神属性详解,下面雨落就为大家带来狂野飙车9S级车Trion复仇女神的改装升级所需卡牌已经金币等攻略。【赛车属性】:S级车Trion Nemesis初始油量:4补充时间:15…