鼠标移动方块的mask碰撞检测原理示例程序
"""鼠标移动方块的mask碰撞检测原理示例程序
"""
import pygame
from pygame.locals import * pygame.init()
screen = pygame.display.set_mode((480,360))
pygame.display.set_caption("鼠标移动方块的mask碰撞检测原理示例程序by 李兴球")# 静止不动的红色方块
width,height = 50,50
x1,y1 = 100,100
redsquare = pygame.Surface((width,height)).convert_alpha()
redsquare.fill((255,10,10,228)) # 最后的0代表完全透明
redsquare_rect = redsquare.get_rect(topleft=(x1,y1)) # 定位
redmask = pygame.mask.from_surface(redsquare) # 取掩膜# 用鼠标移动的蓝色方块
x2,y2 = pygame.mouse.get_pos()
bluesquare = pygame.Surface((width,height)).convert_alpha()
bluesquare.fill((10,10,255))
bluesquare_rect = bluesquare.get_rect(topleft=(x2,y2)) # 定位
bluemask = pygame.mask.from_surface(bluesquare) # 取掩膜running=True
while running:for event in pygame.event.get():if event.type == QUIT:running=Falsex2,y2 = pygame.mouse.get_pos()bluesquare_rect.topleft = (x2,y2 )offset = x1 -x2 , y1 - y2# 返回的p是相对于bluemask的偏移量p = bluemask.overlap(redmask,offset)if p:碰撞点 = bluesquare_rect.x + p[0],bluesquare_rect.y + p[1]info = "offset=" + str(offset) + ",p=" + str(p) + ",碰撞点坐标:" + str(碰撞点)pygame.display.set_caption(info)else:pygame.display.set_caption("无碰撞")screen.fill((0,0,0))screen.blit(redsquare,redsquare_rect)screen.blit(bluesquare,bluesquare_rect) # 贴到屏幕pygame.display.update()pygame.quit()# 提示:本博客几乎不更新,需要Python创意游戏动画代码请百度一下:李兴球
# 找到博客 lixingqiu.com
鼠标移动方块的mask碰撞检测原理示例程序相关推荐
- 53.垃圾回收算法的实现原理、启动Java垃圾回收、Java垃圾回收过程、垃圾回收中实例的终结、对象什么时候符合垃圾回收的条件、GC Scope 示例程序、GC OutOfMemoryError的示例
53.垃圾回收算法的实现原理 53.1.目录 53.2.启动Java垃圾回收 53.3.Java垃圾回收过程 53.4.垃圾回收中实例的终结 53.5.对象什么时候符合垃圾回收的条件? 53.5.1. ...
- 《Arduino开发实战指南:机器人卷》一3.6 编程原理与示例程序
本节书摘来华章计算机<Arduino开发实战指南:机器人卷>一书中的第3章 ,第3.6节,黄文恺 伍冯洁 陈 虹 编著更多章节内容可以访问云栖社区"华章计算机"公众号查 ...
- 示例程序:关于双目视觉,标定,立体匹配(视差算法),点云,双目三维重建的原理以及代码
Evision双目视觉 关于双目视觉的一些总结 说明 前言 相机模型 标定 视差算法:立体匹配 测量,三维重建 示例程序 参考文献 关于双目视觉的一些总结 说明 如果读者对于本文或者Evision程序 ...
- Cocos2d-x碰撞检测原理与英雄要打死怪物--之游戏开发《赵云要格斗》(7)
这里是Evankaka的博客,欢迎大家前面讨论与交流------ 转载请注明出处http://blog.csdn.net/evankaka/article/details/42689689 本文将详 ...
- 鼠标屏幕取词技术的原理和实现
鼠标屏幕取词技术的原理和实现 "鼠标屏幕取词"技术是在电子字典中得到广泛地应用的,如四通利方和金山词霸等软件,这个技术看似简单,其实在WINDOWS系统中实现却是非常复杂的,总的来 ...
- `Mask`工具使用示例
安装:核心工具 主要使用工具 mask 在 Mac 中的安装方式为 brew install mask 安装:实现默认任务效果所需工具 mask 0.9.0 不支持默认任务,所以暂时使用 Just . ...
- OPenGL模板缓冲区示例程序
模板测试是把像素存储在模板缓冲区的值与一个参考值进行比较.根据测试的结果,对模板缓冲区中得这个值进行相应的修改. Note:模板测试只有在存在模板缓冲区的情况下才会执行,如果不存在模板缓冲区,模板测试 ...
- VS2012下基于Glut OpenGL GL_STENCIL_TEST示例程序:
模板测试是把像素存储在模板缓冲区的值与一个参考值进行比较.根据测试的结果,对模板缓冲区中得这个值进行相应的修改. Note:模板测试只有在存在模板缓冲区的情况下才会执行,如果不存在模板缓冲区,模板测试 ...
- ASP.NET AJAX示例程序:实现IDragSource和IDropTarget接口将商品拖放至购物车中
本文来自<ASP.NET AJAX程序设计--第II卷:客户端Microsoft AJAX Library相关>第9章第3节. 9.3 示例程序:实现IDragSource和IDropTa ...
最新文章
- pandas将dataframe中的内容为列表(list)的数据列裂变、拆分为多个新的数据列实战:拆分为多个新的数据列(并指定新数据列的名称)、数据列中的列表(不等长)拆分为多个新的数据列产生NaN
- 如何安全实现“记住我”的功能
- 七 递归与二分法、匿名函数、内置函数
- 3万亿巨大市场,难怪马云、刘强东要抢着去养猪
- vue 添加子路由,并对路由重定向
- markdown的第一次使用
- 仿苹果涂鸦软件_ipad平板电脑有哪些绘画软件?
- apple 苹果官方的demo 下载地址
- DELPHI导出wps报错无效的类字符串
- 对面装修,办公室放置绿萝,袋装活性炭,空气净化器,有用吗?
- 富有创意的电子邮件签名设计(Email signature creative design template)
- 开源倾情奉献:基于.NET打造IP智能网络视频监控系统(一)开放源代码
- 为什么 A 能 ping 通 B,B 却不能 ping 通 A ?
- lib linux.so2 bad,linux – docker,openmpi和/ proc / mounts行的意外...
- windows下JDK的安装(一):安装路径的选择
- python写xml文件 数据量特别大_python处理xml大文件[xml.sax]
- AD20 PCB后期处理
- Fedora32 防火墙设置常用命令
- jdk11新特性——支持G1上的并行完全垃圾收集
- oracle ash 脚本 查询,[20210112]ashtop查询特定表的SQL语句.txt
热门文章
- Dynamics CRM项目实例之七:站点地图修改,联系人-订单-积分管理
- 【第04天】给定 n 个正整数,输出最大与最小的数
- 如何选择一款合适的机房监控软件?
- 计算机辅助设计师考试卷理论知识,《计算机辅助设计》考试试卷B(1)
- 艺术饭+!真.艺术饭计划少儿版 ArtFin谈另一种家族资产
- uno V3控制板cnc shield V3 2个8825驱动板套件做激光雕刻机
- 如何释放电脑默认被限制的20%网速
- 白鹭引擎用java_巧思见匠心 白鹭引擎5.0演绎业界首个双核H5引擎
- MySQL中国省份城市表
- android 悬浮窗的显示动画,android 悬浮窗特效